Editieren über ODBCDirekt (Access 97)

Veröffentlicht am 30.12.2003

Frage: 

Ich arbeite mit Access 97 und SQL-Server 6.5. Nun möchte ich über einen ODBCDirekt-Arbeitsbereich auf eine Server-Tabelle zugreifen. Der Zugriff funktioniert. Ich kann die Datensätze lesen, jedoch nicht mit Edit bearbeiten. Wie könnte der Verbindungsaufbau aussehen?

Antwort: 

Zuerst sollte ich vielleicht erwähnen, dass sich der große Vorteil an ODBCDirekt unter Access 97 nicht bemerkbar macht. ODBCDirekt ist vor allem sehr attraktiv, weil man die Jet-Engine gar nicht erst laden muss. Access 97 muss jedoch die Jet-Engine ohnehin laden, um die internen System-Tabellen zu verwalten. 

Um eine Datensatzgruppe mit ODBCDirekt zu bearbeiten, würde ich Ihnen „Batch-Updating“ empfehlen. Mit Batch-Updating wird eine Datensatzgruppe auf dem Client-PC lokal bearbeitet und anschließend an den Server zurückgeschickt. Wenn mehrere Clients dieselben Datensätze gleichzeitig aktualisieren (wollen), kann es zu Konflikten kommen. Diese müssen Ihre Prozeduren auch abfangen und lösen (über die BatchCollisions-Auflistung).

Um den Arbeitsbereich für Batch-Updating vorzubereiten, setzen Sie die DefaultCursorDriver-Eigenschaft auf dbUseClientBatchCursor. Wenn Sie das Recordset-Objekt erstellen, setzen Sie den LockEdits-Parameter der OpenRecordset-Methode auf dbOptimisticBatch. Die Datensatzgruppe muss natürlich auch editierbar sein (also kein Snapshot). 

Eine Verbindung für Batch-Updating könnte ungefähr so aussehen: 

Dim wrk As Workspace 
Dim strConnect As String 
Dim conTest As Connection 
Dim rstTestRecords As Recordset 
Set wrk = CreateWorkspace("TestWorkspace", "admin", _ 
"", dbUseODBC) 
wrk.DefaultCursorDriver = dbUseClientBatchCursor 
strConnect = _ 
"ODBC;DSN=TestDB;UID=sa;PWD=;DATABASE=TestDB" 
Set conTest = wrk.OpenConnection("", , , strConnect)

Set rstTestRecords = conTest.OpenRecordset _ 
("SELECT * FROM Kunden WHERE PLZ='40211';", _ 
dbOpenDynaset, 0, dbOptimisticBatch) 
Do While Not rstTestRecords.EOF 
    rstTestRecords.Edit rstTestRecords!LokalerOrt = -1 rstTestRecords.Update 
Loop 
rstTestRecords.MoveNext

Unsere Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

JETZT KONTAKTIEREN

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.

JETZT KONTAKTIEREN