معلومات إضافية: حدد Jet OLE DB الموفر الإصدار 4.0 يدعم @@Identity

ملخص

يدعم موفر Jet OLE DB الإصدار 4.0 @@Identity حدد الاستعلام الذي يسمح لك باسترداد قيمة الحقل الزيادة التلقائية التي تم إنشاؤها على الاتصال. لا تؤثر القيم زيادة تلقائية المستخدمة في الاتصالات الأخرى إلى قاعدة بيانات نتائج هذا الاستعلام المتخصصة. تعمل هذه الميزة مع قواعد بيانات Jet 4.0 ولكن ليس مع التنسيقات القديمة.

مزيد من المعلومات

التعليمة البرمجية التالية توضح استخدام @@Identity حدد لاسترداد قيمة حقل تزايد تلقائي مدرج حديثا. أجزاء التعليمات البرمجية المتكررة أيضا على التعليمات البرمجية لإنشاء جدول للاستعلام.

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

وبفضل هذه الوظيفة المضافة حديثا، ترى القيم المضافة حديثا زيادة تلقائية في مجموعات السجلات كائنات بيانات ActiveX "(ADO) العميل الخاصة بك في ADO 2.1 والإصدارات الأحدث. عند إرسال صف جديد لموفر Jet باستدعاء التحديث أو UpdateBatch (حسب اختيارك LockType)، بإنشاء مشغل المؤشر ADO استعلام INSERT INTO لإنشاء صف جديد في الجدول. إذا كانت مجموعة السجلات تحتوي على حقل تزايد تلقائي، ADO إلى إنشاء استعلام @@Identity حدد لاسترداد القيمة التي تم إنشاؤها لهذا الحقل تزايد تلقائي. التعليمة البرمجية التالية توضح هذه الميزة:

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

يمكنك إنشاء قاعدة بيانات Jet 4.0 جديدة باستخدام Microsoft Access 2000 أو استخدام مكتبة ADOX الذي تم تضمينه مع MDAC 2.1. لاستخدام هذه المكتبة في مشروع Visual Basic، إنشاء مرجع إلى Microsoft ADO ext. 2.1 ل DDL والأمان. ثم يمكنك استخدام التعليمات البرمجية كما يلي لإنشاء قاعدة بيانات Jet 4.0 جديدة:

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

لتحديد تنسيق قاعدة بيانات Microsoft Access، راجع الخاصية "نوع OLEDB:Engine Jet" الحيوية في مجموعة خصائص كائن الاتصال. الخاصية بإرجاع قيمة 5 لقاعدة بيانات Jet 4.x. يوضح التعليمات البرمجية المتكررة باستخدام الخاصية:

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

المراجع

Microsoft Data Access SDK؛ البحث في: "خصائص بروفيديرديفينيد"؛ الموضوع: "DBPROPSET_JETOLEDB_DBINIT"
خصائص

رقم الموضوع: 232144 - آخر مراجعة: 09‏/01‏/2017 - المراجعة: 1

تعليقات