Der Jet OLE DB 4.0 Provider unterstützt die SELECT @@ IDENTITY Abfrage, die Ihnen ermöglicht, den Wert des Feldes Auto-Inkrement auf Ihre Verbindung generiert abzurufen. Auf anderen Verbindungen zu Ihrer Datenbank verwendeten automatisch inkrementierte Werte wirken sich die Ergebnisse dieser speziellen Abfrage nicht. Dieses Feature funktioniert mit Jet 4.0-Datenbanken jedoch nicht mit älteren Formate.
Der folgende Code veranschaulicht, mit SELECT @@ IDENTITY den Wert des Felds neu eingefügten Auto-Inkrement abgerufen. Der Codeausschnitt enthält auch Code, um die Tabelle für die Abfrage zu erstellen.
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
Dank dieser hinzugefügten Funktionen zum können Sie die neu hinzugefügte automatisch inkrementierte Werte in die clientseitige (ActiveX Data Objects) Recordsets in ADO 2.1 und höher. Wenn Sie die neue Zeile der Jet-Provider senden, durch Aufrufen von Update oder UpdateBatch (je nach Auswahl des LockType), generiert das ADO-Cursor-Modul eine INSERT INTO-Abfrage um die neue Zeile in der Tabelle zu erstellen. Wenn das Recordset ein Auto-Inkrement-Feld enthält, Generieren ADO auch eine SELECT @@ IDENTITY-Abfrage zum Abrufen des Werts für das Auto-Inkrement-Feld generiert. Der folgende Code veranschaulicht dieses Feature:
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
können Sie eine neue Jet 4.0-Datenbank mithilfe von Microsoft Access 2000 oder mithilfe von ADOX-Bibliothek MDAC 2.1 enthaltene erstellen. Erstellen Sie diese in Ihrem Projekt Visual Basic Bibliothek verwenden möchten, einen Verweis auf
Microsoft ADO Ext. 2.1 for DDL and Security . Anschließend können Sie Code wie den folgenden Erstellen einer neuen Jet 4.0-Datenbank:
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
um das Format von Microsoft Access-Datenbank zu bestimmen, überprüfen Sie die dynamische "Jet OLEDB:Engine Type"-Eigenschaft in das Verbindungsobjekt Properties-Auflistung. Die Eigenschaft wird einen Wert von 5 für Jet 4.x-Datenbanken zurückgegeben. Im folgenden Codeausschnitt wird die Verwendung der Eigenschaft veranschaulicht:
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; Suche nach: "Provider-Defined Eigenschaften"; Thema: "DBPROPSET_JETOLEDB_DBINIT"
Artikel-ID: 232144 - Geändert am: Mittwoch, 3. Dezember 2003 - Version: 3.1
Die Informationen in diesem Artikel beziehen sich auf:
- Microsoft OLE DB Provider for Jet 4.0
- Microsoft Data Access Components 2.1 Service Pack 2
- Microsoft Data Access Components 2.5
- Microsoft Data Access Components 2.6
- Microsoft Data Access Components 2.7
- Microsoft ActiveX Data Objects 2.1 Service Pack 2
- Microsoft ActiveX Data Objects 2.5
- Microsoft ActiveX Data Objects 2.6
- Microsoft ActiveX Data Objects 2.7
- Microsoft Visual Basic 5.0 Professional Edition
- Microsoft Visual Basic 6.0 Professional Edition
- Microsoft Visual Basic 5.0 Enterprise Edition
- Microsoft Visual Basic Enterprise Edition for Windows 6.0
| kbmt kbdatabase kbinfo kbjet KB232144 KbMtde |
Maschinell übersetzter ArtikelWichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen:
232144
(http://support.microsoft.com/kb/232144/en-us/
)
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.