Editieren über ODBCDirekt (Access 97)

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

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.

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.