INFO: VYBERTE Jet OLE DB Provider verze 4.0 podporuje @@Identity

Souhrn

Zprostředkovatele Jet OLE DB verze 4.0 podporuje SELECT @@Identity dotaz, který umožňuje načíst hodnotu pole automatickým přírůstkem generovaný připojení. Automatický přírůstek hodnoty použité na jiné připojení k databázi nemají vliv na výsledky tohoto dotazu specializované. Tato funkce pracuje s databáze Jet 4.0, ale není s starší formáty.

Další informace

Následující kód ukazuje použití SELECT @@Identity k získání hodnoty pole nově vložených automatickým přírůstkem. Fragment kódu také obsahuje kód, který vytvoří tabulku pro dotaz.

Dim cnDatabase As ADODB.ConnectionDim rsNewAutoIncrement As ADODB.Recordset
Dim strConn As String
Dim strSQL As String
Dim strPathToMDB As String

strPathToMDB = "C:\NewJet4.MDB"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strPathToMDB & ";"
Set cnDatabase = New ADODB.Connection
cnDatabase.Open strConn

strSQL = "CREATE TABLE AutoIncrementTest " & _
"(ID int identity, Description varchar(40), " & _
"CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))"
cnDatabase.Execute strSQL, , adCmdText + adExecuteNoRecords

strSQL = "INSERT INTO AutoIncrementTest " & _
"(Description) VALUES ('AutoIncrement Test')"
cnDatabase.Execute strSQL, , adCmdText + adExecuteNoRecords

strSQL = "SELECT @@Identity"
Set rsNewAutoIncrement = New ADODB.Recordset
rsNewAutoIncrement.Open strSQL, cnDatabase, adOpenForwardOnly, _
adLockReadOnly, adCmdText
MsgBox "New Auto-increment value is: " & rsNewAutoIncrement(0).Value

rsNewAutoIncrement.Close
Set rsNewAutoIncrement = Nothing
strSQL = "DROP TABLE AutoIncrementTest"
cnDatabase.Execute strSQL, , adCmdText + adExecuteNoRecords
cnDatabase.Close
Set cnDatabase = Nothing

Díky této nově přidané funkce se zobrazí hodnoty nově přidané automatickým přírůstkem do vaší sady záznamů ActiveX Data Objects (ADO) klienta v objektech ADO 2.1 a vyššími. Když zadáte nový řádek zprostředkovatele Jet voláním Update nebo UpdateBatch (podle vašeho výběru LockType), stroj kurzor ADO generuje dotaz INSERT INTO vytvořit nový řádek v tabulce. Pokud sada záznamů obsahuje pole s automatickým přírůstkem, ADO také generovat @@Identity VÝBĚROVÝ dotaz k načtení hodnota generovaná pro dané pole s automatickým přírůstkem. Tuto funkci demonstruje následující kód:

Dim cnDatabase As ADODB.ConnectionDim rsNewAutoIncrement As ADODB.Recordset
Dim strConn As String
Dim strSQL As String
Dim strPathToMDB As String

strPathToMDB = "C:\NewJet4.MDB"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strPathToMDB & ";"
Set cnDatabase = New ADODB.Connection
cnDatabase.Open strConn

strSQL = "CREATE TABLE AutoIncrementTest " & _
"(ID int identity, Description varchar(40), " & _
"CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))"
cnDatabase.Execute strSQL, , adCmdText + adExecuteNoRecords

strSQL = "SELECT ID, Description FROM AutoIncrementTest"
Set rsNewAutoIncrement = New ADODB.Recordset
rsNewAutoIncrement.CursorLocation = adUseClient
rsNewAutoIncrement.Open strSQL, cnDatabase, adOpenStatic, _
adLockOptimistic, adCmdText
rsNewAutoIncrement.AddNew
rsNewAutoIncrement("Description").Value = "AutoIncrement Test"
rsNewAutoIncrement.Update
MsgBox "New Auto-increment value is: " & rsNewAutoIncrement(0).Value

rsNewAutoIncrement.Close
Set rsNewAutoIncrement = Nothing
strSQL = "DROP TABLE AutoIncrementTest"
cnDatabase.Execute strSQL, , adCmdText + adExecuteNoRecords
cnDatabase.Close
Set cnDatabase = Nothing

Můžete vytvořit nové databáze Jet 4.0 pomocí aplikace Microsoft Access 2000 nebo pomocí knihovny ADOX, která je součástí MDAC 2.1. Použití této knihovny v projektu jazyka Visual Basic, vytvořte odkaz na Microsoft ADO Ext. 2.1 DDL a zabezpečení. Vytvoření nové databáze Jet 4.0 můžete kód jako následující:

Dim strPathToMDB As StringDim catNewDatabase As ADOX.Catalog

strPathToMDB = "C:\NewJet4.MDB"
If Dir(strPathToMDB) <> "" Then
Kill strPathToMDB
End If
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strPathToMDB & ";"
Set catNewDatabase = New ADOX.Catalog
catNewDatabase.Create strConn
Set catNewDatabase = Nothing

K určení formátu databáze aplikace Microsoft Access, zkontrolujte dynamické vlastnosti "Jet OLEDB:Engine typu" v kolekci vlastnosti objektu připojení. Vlastnost vrátí hodnotu 5 pro databázový stroj Jet 4.x databází. Následující fragment kódu ukazuje použití vlastnosti:

Dim cnDatabase As ADODB.ConnectionDim strConn As String
Dim strPathToMDB As String

strPathToMDB = "C:\NewJet4.MDB"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strPathToMDB & ";"
Set cnDatabase = New ADODB.Connection
cnDatabase.Open strConn
If cnDatabase.Properties("Jet OLEDB:Engine Type").Value = 5 Then
MsgBox "Jet 4.0 database"
Else
MsgBox "Not a Jet 4.0 database"
End If
cnDatabase.Close
Set cnDatabase = Nothing

Odkazy

Microsoft Data Access SDK; hledání na: "Provider-Defined vlastnosti"; téma: "DBPROPSET_JETOLEDB_DBINIT"
Vlastnosti

ID článku: 232144 - Poslední kontrola: 10. 1. 2017 - Revize: 1

Váš názor