66 messaggi dal 29 aprile 2001
www.xepient.com
ciao Saluc,

ecco come ho risolto lo stesso problema (assumendo che stai usando access - se usi sqlServer e' piu' facile):

ho messo in una TRANSACTION le due cose: inserimento e selezione id creata. Questo ti risolve il problema delle famose concorrenze (o contemporaneita').

eccoti il codice:

crea una stringa SQL che contenga:

"BEGIN TRANSACTION~"
"INSERT....~"
"SELECT @@IDENTITY~"
"COMMIT TRANSACTION"

e passala alla funzione qui sotto.


Public Function runTransAccessReturnLong(ByVal strConnectionString As String, ByVal strSP As String, ByVal strDelimiter As String) As Long

On Error GoTo errorHandler

Dim strSPArray
Dim inx

Dim objConnection As New ADODB.Connection
Dim objRecordset As New ADODB.Recordset

objConnection.Open strConnectionString

strSPArray = Split(strSP, strDelimiter)

For inx = 0 To UBound(strSPArray)
If InStr(1, UCase(strSPArray(inx)), "SELECT") Then
Set objRecordset = objConnection.Execute(strSPArray(inx))
runTransAccessReturnLong = objRecordset(0)
Else
objConnection.Execute strSPArray(inx)
End If
Next


objConnection.Close
Set objConnection = Nothing
Set objRecordset = Nothing

CtxSetComplete
Exit Function
errorHandler:
Set objConnection = Nothing
Set objRecordset = Nothing

End Function



Ciao,
Andrea.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.