Ich bräuchte mal eine kleine Hilfe. Habe leider die Lösung im Forum nicht gefunden, deshalb
hier die Frage.
Ich habe über ODBCDBE einen Zugriff auf eine lokale Access Datei (MdB).
Ich kann die Daten der Tabelle lesen, aber leider nichts schreiben.
Schreiben müsste doch über ODBC gehen. Ich will ja keine neue Datei oder Tabelle anlegen.
In der Tabelle ist ein Datensatz vorhanden, den möchte ich gerne überschreiben. Habe zwei
Varianten versucht aber nichts geht.
Bei den ODBC-Eigenschaften ist kein Hacken bei schreibgeschützt, somit müsste das auch gehen.
Anbei der Code.
Vielleicht sieht jemand eine Fehler
ACCESSTEST ist als ODBC Verbindung eingerichtet.
Bauunion.mdb heißt meine Access-Datei
access1 ist die Tabelle in der Access Datei. Über Access kann ich dort die Daten ändern.
Code: Alles auswählen
cOldDbe := DbeSetDefault("ODBCDBE") // odbc ist geladen und aktiv
cConnect := "DBE=ODBCDBE;DSN=" + "accesstest" + ";DBQ=" + "bauunion.mdb" // cDatabase
oSession := dacSession():new(cConnect)
IF !oSession:isConnected()
MsgBox( oSession:getLastMessage(), "Cannot connect to " + cConnect)
RETURN
else
// msgbox("connect")
ENDIF
cTable = "access1" // dies ist die Tabelle in meiner Datei Bauunion.mdb
USE (cTable) NEW ALIAS mytest
dbgotop() // hier komme ich hin uns sehe auch die Felder meiner Tabelle
do while !rlock()
enddo
// altd()
cLienr := mytest->dl_lienr // := "TEST" // ich kann das Feld gut lesen
mytest->dl_lienr := time() // Kann das Charakterfeld leider nicht überschreiben nur direkt über ACCESS
dbcommit()
dbunlock()
dbclosearea()
cSQL := "SELECT * FROM access1;" // habe es mal mit select versucht
use (cSQL) Alias MYADRESS VIA "ODBCDBE"
dbgotop()
do while !rlock()
enddo
altd() // auch hier sehe ich meine Tabelle
replace MYADRESS->dl_lienr with time() + "222" // kann auch hier leider das Feld dl_lienr nicht überschreiben Feld ist numerisch 10
dbcommit()
dbunlock()
dbclosearea()
oSession:disconnect()
DbeSetDefault( cOldDbe )
Hat jemand eine Idee.
Danke für die Hilfe
Bernd