Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860

    problema di sintassi [pallone]

    salve ragazzi,

    sto andando un po' in palla con una procedura diu generazione che mi sta rimbambendo, qualcuno mi darebbe un'occhiata e mi direbbe che fare per renderla più performante e per trovare il bandolo della matassa del punto in cui mi sono impallato..?

    codice:
            'genero il codice segreto del cliente  
    		Valore1=0 
    		Valore2=0 
    		Valore3=0 
    		Valore4=0 
    		Valore5=0 
    		Valore6=0 
    		CodiceSegreto="" 
    
    		Randomize 
    		Valore1= int(9 * Rnd)
    		Valore2= int(9 * Rnd)
    		Valore3= int(9 * Rnd)
    		Valore4= int(9 * Rnd)
    		Valore5= int(9 * Rnd)
    		Valore6= int(9 * Rnd)
    		CodiceSegreto= "CL" & Valore1 & Valore2 & Valore3 & Valore4 & Valore5 & Valore6 
    
    
    		'verifico che il codice non sia già in uso da un altro cliente
    		set myConn1 = server.CreateObject("ADODB.Connection")
    		dim strConnDb1
    		strConnDb1 = ""
    		strConnDb1 = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mappath("/mdb-database/Clienti.mdb")
    		myConn1.Open(strConnDb1)
    		
    		mySqlSelect = "select Codice from SchedeClienti order by id"
    		set myRSComS = server.CreateObject("ADODB.Recordset")
    		myRSComS.Open mySqlSelect, myConn
    
      	    if not(myRSComS.EOF) and not(myRSComS.BOF) then	
    		  do while not(myRSComS.EOF)	
    			
                 If (myRSComS(Codice)="CodiceSegreto") Then
    			  
    			 else
    			 end if
    
    			myRSComS.MoveNext
    		  loop
    	    else
      	    end if
    
    		myRSComS.Close
    		set myRSComS=nothing	
    		myConn1.Close
    		set myConn1=nothing
    1) allora creo un codice a 8 cifre di cui le prime 2 sono CL e poi 6 numeri, ma per quanto penso che la mia soluzione per la creazione di questo codice potrebbe essere già attuabile in maniera più immediata suggerimenti al riguardo??

    2) controllo se i codici assegnati agli altri record non corrispondano a quello generato... ok apro il db seleziono il campo codice dal record e inizo a fare un controllo record via record ma..??

    E si.. ma se poi becco un codice che corrisponde?
    Ecco che qui la mia teoria inizia a franare perchè non so come diurgli di ricreare un nuovo codice e ripartire da 0 col controllo...

    qualche santo che mi dia una mano...



    Grazie
    Linux Inside

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    ragazzi forse ci siamo...

    codice:
            flag=1
    		do while not(flag=0)
    	    
    		Randomize 
    	    Valore1= int(9 * Rnd)
    	    Valore2= int(9 * Rnd)
    	    Valore3= int(9 * Rnd)
    	    Valore4= int(9 * Rnd)
    	    Valore5= int(9 * Rnd)
    	    Valore6= int(9 * Rnd)
    	    CodiceSegreto= "CL" & Valore1 & Valore2 & Valore3 & Valore4 & Valore5 & Valore6 
    
    		'verifico che il codice non sia già in uso da un altro cliente
    		set myConn1 = server.CreateObject("ADODB.Connection")
    		dim strConnDb1
    		strConnDb1 = ""
    		strConnDb1 = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mappath("/mdb-database/Clienti.mdb")
    		myConn1.Open(strConnDb1)
    		
    		mySqlSelect = "select Codice from SchedeClienti order by id"
    		set myRSComS = server.CreateObject("ADODB.Recordset")
    		myRSComS.Open mySqlSelect, myConn1
    
      	    if not(myRSComS.EOF) and not(myRSComS.BOF) then	
    		  do while not(myRSComS.EOF)	
    			
                 If (myRSComS(Codice)<>"CodiceSegreto") Then
    			  flag=0
    			 else
    			 end if
    
    			myRSComS.MoveNext
    		  loop
    	    else
      	    end if
    
    		myRSComS.Close
    		set myRSComS=nothing	
    		myConn1.Close
    		set myConn1=nothing
    
            loop
    mi dite se secondo voi può andare come logica..

    - allora io determino che il falg ha valore iniziale pari a 1 a questo punto fino a quando il flag è <> da 0 entro eseguo quello che segue quindi genero il codice apro il db e confornto il codice creato con quelli dei vari record.
    Fino a quando il codice sarà diverso da quelli nei vari record il flag verrà modificato col valore 0 altrimenti esce e rimane con valore 1.
    Una volta controllati tutti i record se il flag è rimasto a 1 dovrebbe ciclare e ripetere la procedura altrimenti dovrebbe uscirsene e proseguire nel codice...

    può essere?
    Linux Inside

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao ThePenguin,

    non serve scorrere tutti i record per vedere se c'è un codice uguale... lo puoi fare direttamente da sql
    anche il numero casuale usi tanto codice... si potrebbe ridurre così
    codice:
    	set myConn1 = server.CreateObject("ADODB.Connection")
    	strConnDb1 = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mappath("/mdb-database/Clienti.mdb")
    	myConn1.Open(strConnDb1)
    	bolUnico=false
    	Randomize()
    	do while not bolUnico
    		CodiceSegreto = "CL" & Right("000000" & (Int((999999) *  Rnd)),6)
    		mySqlSelect = "select Codice from SchedeClienti where Codice='" & CodiceSegreto & "'"
    		set myRSComS = server.CreateObject("ADODB.Recordset")
    		myRSComS.Open mySqlSelect, myConn1
    		bolUnico = myRSComS.EOF
    	loop

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    codice:
    	set myConn1 = server.CreateObject("ADODB.Connection")
    	strConnDb1 = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mappath("/mdb-database/Clienti.mdb")
    	myConn1.Open(strConnDb1)
    	bolUnico=false
    	Randomize()
    	do while not bolUnico
    		CodiceSegreto = "CL" & Right("000000" & (Int((999999) *  Rnd)),6)
    		mySqlSelect = "select Codice from SchedeClienti where Codice='" & CodiceSegreto & "'"
    		set myRSComS = server.CreateObject("ADODB.Recordset")
    		myRSComS.Open mySqlSelect, myConn1
    		bolUnico = myRSComS.EOF
    	loop
    è efettivamente una soluzione che non avevo mai visto... :master:
    come funziona?

    si apre il db ok crei il codice ma la select non mi torna...
    select codice da schedeclienti dove codice è = a codicesegreto e vabbè ma a parte che non dovrebbero essere uguali e se per disgrazia succedesse che lo sono... ??
    inoltre se la variabile bolUnico è di tipo booleano in false all'inzio come fa alla fine assumere un valore X di myRSComS.EOF

    ciao
    Linux Inside

  5. #5
    Domanda, ma il codice segreto per il cliente a cosa ti serve? E' una sorta di password legata al cliente?
    Se è così, dopo aver generato il codice casuale, anche se è già presente nel db, non lo sarà di sicuro attribuito a cliente in questione (in quanto il cliente è nuovo).
    Quindi nella query basta che verifichi la presenza del codice con il cliente (anche se è inutile, perchè il cliente è nuovo quindi non ancora presente).

    Ovviamente quanto sopra se alla seconda domanda la risposta è sì.

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da ThePenguin
    si apre il db ok crei il codice ma la select non mi torna...
    select codice da schedeclienti dove codice è = a codicesegreto e vabbè ma a parte che non dovrebbero essere uguali e se per disgrazia succedesse che lo sono... ??
    inoltre se la variabile bolUnico è di tipo booleano in false all'inzio come fa alla fine assumere un valore X di myRSComS.EOF

    ciao
    come scusa?
    cosa vuoi fare tu? Generare un "codicesegreto" che sia univoco all'interno del db?
    Allora generi un codice, verifichi se esiste nel db, se esiste ne generi un'altro, se non esiste lo inserirai nel db. Il bolUnico serve appunto per vedere se il codice c'è già nel db

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    Originariamente inviato da Dirk Pitt
    Domanda, ma il codice segreto per il cliente a cosa ti serve? E' una sorta di password legata al cliente?
    Se è così, dopo aver generato il codice casuale, anche se è già presente nel db, non lo sarà di sicuro attribuito a cliente in questione (in quanto il cliente è nuovo).
    Quindi nella query basta che verifichi la presenza del codice con il cliente (anche se è inutile, perchè il cliente è nuovo quindi non ancora presente).

    Ovviamente quanto sopra se alla seconda domanda la risposta è sì.
    certo che nel db non sarà ancora presente quel codice visto che ancore le info sul cliente non le ho registrate ma a me importa che quel codice non sia già in uso da altri clienti che invece sono già registrati nel db...

    ciao
    Linux Inside

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    Originariamente inviato da willybit
    come scusa?
    cosa vuoi fare tu? Generare un "codicesegreto" che sia univoco all'interno del db?
    Allora generi un codice, verifichi se esiste nel db, se esiste ne generi un'altro, se non esiste lo inserirai nel db. Il bolUnico serve appunto per vedere se il codice c'è già nel db
    ok ok ti credo...
    diciamo che avrpò modo di sperimentare questa soluzione quando potrò applicare questa procedura alla pagina.. sto attendendo che i ragazzi dello staff finiscano le loro parti... che pizza essere in stand by...

    ciao
    Linux Inside

  9. #9
    Originariamente inviato da ThePenguin
    certo che nel db non sarà ancora presente quel codice visto che ancore le info sul cliente non le ho registrate ma a me importa che quel codice non sia già in uso da altri clienti che invece sono già registrati nel db...

    ciao
    E se è lo stesso codice di un altro cliente? Quali problemi ti darebbe?

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    Originariamente inviato da Dirk Pitt
    E se è lo stesso codice di un altro cliente? Quali problemi ti darebbe?
    beh ogni cliente deve essere univoco ed indipendente e il codice segreto si è come una sorta di password quindi preferibilmente da andarsi a differenziare da utente ad utente..

    ciao
    Linux Inside

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.