Sürüm 4.0 Jet OLE DB sağlayıcısı bağlantınızda oluşturulan otomatik artış alanın değerini almanıza olanak tanır, SELECT @@ kimlik sorgu destekler. Bu özel sorgu sonuçları, otomatik artış değeri veritabanınızda diğer bağlantılarda kullanılan etkilemez. Bu özellik, Jet 4.0 veritabanları ile ancak eski biçimleriyle çalışır.
Aşağıdaki kod <a0>Yeni eklenen bir otomatik artım</a0> alanının değerini almak için SELECT @@ kimliğini kullanarak gösterir. Kod parçacığını, kod, tablo sorgu oluşturmak için de içerir.
Dim cnDatabase As ADODB.Connection
Dim 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
Yeni eklenen bu işlevsellik sayesinde, ADO 2.1 ve daha sonra istemci tarafı ActiveX Data Objects (ADO) kayıt kümesi içinde yeni eklenen otomatik artış değerleri görebilirsiniz. Jet Sağlayıcısı için yeni bir satır güncelleştirme veya UpdateBatch (seçtiğiniz LockType bağlı) çağırarak gönderdiğinizde, ADO imleç altyapısı tabloda yeni bir satır oluşturmak için INSERT INTO sorgusu oluşturur. ADO, recordset için bir otomatik artım alan içeriyorsa, SELECT @@ kimlik sorguda, otomatik artış alanı için oluşturulan değerini almak için de oluşturur. Bu özellik aşağıdaki kod gösterir:
Dim cnDatabase As ADODB.Connection
Dim 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
, Microsoft Access 2000'i kullanarak veya MDAC 2.1 ile birlikte gelen ADOX kitaplık kullanarak yeni bir Jet 4.0 veritabanı oluşturabilirsiniz. Visual Basic projenizde bu Kitaplığı'nı kullanmak için
Microsoft ADO Ext. 2.1 ve güvenlik için bir başvuru oluşturun. Aşağıdaki gibi bir kod daha sonra yeni bir Jet 4.0 veritabanı oluşturmak için kullanabilirsiniz:
Dim strPathToMDB As String
Dim 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
Microsoft Access veritabanınızın biçimini belirlemek için <a0></a0>, Connection nesnesinin Properties derlemesinde dinamik "Jet OLEDB:Engine Type" özelliği denetleyin. Özelliğin Jet 4.x veritabanları için 5 değerini döndürecektir. Aşağıdaki kod parçacığını özelli?ini kullanarak gösterir:
Dim cnDatabase As ADODB.Connection
Dim 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
Microsoft Data Access SDK; arama: "Provider-Defined özellikleri"; Konu: "DBPROPSET_JETOLEDB_DBINIT"