24/07/2005
Uso della variabile @@Identity nei database di Access
Premessa:
L'uso della variabile @@Identity nei database di Access funziona solo con una
connessione ADO, l' istruzione *SELECT @@Identity* eseguita per mezzo di DAO
rende il valore 0.
L'esempio mostra come inserire nella Tab2 il valore del campo contatore appena
aggiunto alla tabella Tab1.
Struttura delle tabelle:
Tab1
----
Id Counter Primary Key,
Nome Text(50)
----
Tab2
----
Id Counter Primary Key,
IdTab1 long references Tab1(Id),
Nome Text(50)
----
Ho voluto introdurre tra l'inserimento della riga in Tab1 e l'inserimento in
Tab2 il richiamo di una sub gemella, questo per evidenziare che la variabile @@Identity
rende l'ultimo ID inserito nell'ambito della stessa connessione.
Esempio
----------------------------
'*****************************
' Sub Principale
'*****************************
Sub Insert1()
Dim Cn As ADODB.Connection
Dim strSql As
String
Set Cn = New
ADODB.Connection
Cn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Dati\Db1.Mdb"
'Apro la connessione al database di Access
Cn.Open
'Inserisco una riga nella Tab1
strSql = "INSERT INTO Tab1 (Nome) Values('Insert1')"
Cn.Execute strSql
'Richiamo la sub
gemella
Call Insert2
'Inserisco una riga nella Tab2
strSql = "INSERT INTO Tab2 (IdTab1,Nome) Values(@@Identity,'Insert1')"
Cn.Execute strSql
Cn.Close
Set Cn = Nothing
End Sub
'*****************************
' Sub gemella
'*****************************
Sub
Insert2()
Dim Cn As
ADODB.Connection
Dim strSql As String
Set Cn = New
ADODB.Connection
Cn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Dati\Db1.Mdb"
'Apro la connessione al database di Access
Cn.Open
'Inserisco una riga nella Tab1
strSql = "INSERT INTO Tab1 (Nome) Values('Insert2')"
Cn.Execute strSql
'Inserisco una riga nella Tab2
strSql = "INSERT INTO Tab2 (IdTab1,Nome) Values(@@Identity,'Insert2')"
Cn.Execute strSql
Cn.Close
Set Cn = Nothing
End Sub
----------------------------
Eseguendo la Insert1 si ottiene questo Risultato
Tab1
Id Nome
---- --------
1 Insert1
2 Insert2
Tab2
Id IdTab1 Nome
---- ------ --------
1 2 Insert2
2 1 Insert1
Come si puņ notare i dati inseriti nelle due tabelle sono coerenti.
Giorgio Rancati
Torna all'indice