Scritto da Giorgio Rancati
|
Domenica 24 Luglio 2005 00:00 |
Premessa:
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.
|