Ciao a tutti
Espongo il problema...
All'interno di un loop su una tabella di db valorizzo una variabile (idUnivoco ), tramite una funzione, che cerca all'interno di una tabella di supporto con tutti i codici univoci, se esistono duplicati.... se non esistono aggiunge un record con codice i primi 20 caratteri dell'MD5 mentre se esiste aggiunge prima una "X" all'MD5 e richiama nuovamente la funzione checkDouble(param....).
Il problema nasce in questo secondo caso perche idUnivoco non viene valorizzato
Di seguito il codice

---START prima fase del loop su tabella globale

ID = TrimAll(rs("Cognome")) & TrimAll(rs("Nome")) & TrimAll(rs("Sesso")) & TrimAll(rs("Datadinascita"))
idUnivoco = checkDouble(rs("Cognome"), rs("Nome"), rs("Sesso"), rs("Datadinascita"), MD5(ID))

---END prima fase del loop su tabella globale

I primi 4 parametri sono dati anagrafici. l'ultimo è l'MD5 della variabile ID impostata la riga sopra che tra l'altro rimuove tutti gli spazi (TrimAll)

---START funzione checkDouble
Public Function checkDouble(Cognome, Nome, Sesso, DataDiNascita, StrMD5)
strSql_CD = "Select * From [Utenti_List] Where MD5_20 Like '" & Left(StrMD5, 20) & "'"
Set rs_CD = Server.CreateObject("ADODB.recordset")
rs_CD.Open strSql_CD, Conn, 1, 2
If rs_CD.EOF Then
' Qui non trova duplicati al Left(StrMD5, 20) quindi aggiunge record
rs_CD.AddNew
rs_CD("Cognome") = Cognome
rs_CD("Nome") = Nome
rs_CD("Sesso") = Sesso
rs_CD("Datadinascita") = DataDiNascita
rs_CD("MD5_20") = Left(StrMD5, 20)
rs_CD.Update
' Imposta idUnivoco = CStr(Left(StrMD5, 20))
checkDouble = CStr(Left(StrMD5, 20))

Else ' ho trovato una corrispondenza

If Cognome = rs_CD("Cognome") _
And Nome = rs_CD("Nome") _
And Sesso = rs_CD("Sesso") _
And DataDiNascita = rs_CD("Datadinascita") Then
' i caratteri degli altri campi del db sono uguali a
'quelli passati e quindi non scrivo un'altro record ma imposto idUnivoco
checkDouble = CStr(Left(StrMD5, 20))
Else ' E QUI SORGE LA ROGNA

'appena richiamo la funzione aggiungendo la x prima dell'MD5
'mi ritorna checkDouble ritorna nulla e quindi idUnivoco non è valorizzato
checkDouble Cognome, Nome, Sesso, DataDiNascita, "X" & StrMD5
End If
End If
rs_CD.Close
Set rs_CD = Nothing
End Function
---END funzione checkDouble

Spero di essermi fatto capire....


---END funzione checkDouble