Entwickler-Ecke
Datenbanken - ODBC Zugriff auf Access - Daten bleiben nicht in Datenbank
Thorsten27 - Mi 14.05.08 22:39
Titel: ODBC Zugriff auf Access - Daten bleiben nicht in Datenbank
Hallo,
ich greife mittels ODBC (Zeos) auf Access (Access 2000 mdb) Datenbanken zu. Ich kann problemlos Tabellen erzeugen und einrichten. Ich habe folgendes Problem: Sobald ich Daten in die diversen Tabellenfelder eingebe bleiben diese nur zur Laufzeit "aktiv". Sobald die Anwendung geschlossen wird oder ich die Datenbank mittels refresh update sind alle Einträge wieder verschwunden - werden also nicht dauerhaft gespeichert. Solange ich nicht refreshe kann ich die Einträge in der Datenbank sehen und zwischen den Feldern wandern.
Anmerkung: Ein Zugriff mittels ADO auf die Datenbank misslingt da ein Passwort verlangt wird obwohl ich sehr sicher bin dass die Access Datenbank kein Passwort eingestellt hat. Möglicherweise gibt es eine gleiche Ursache für diese Probleme.
Danke, Thorsten
Agawain - Mi 14.05.08 23:47
hi Thorsten,
und
:welcome:
tu Dir einen Gefallen und wechsel die Datenbank und die Zugriffstechnologie.
Das schon mal vorab.
Refresh ist nicht geeignet, normalerweise sollte refresh den aktuellen Datenbestand vom Server holen. Irritierenderweise tun das manche Komponenten nicht *grummel, sie tun genau das Gegenteil, sie speichern. (Zeos nie mit gearbeitet, kann ich in dem Fall nix zu sagen)
Vielleicht erwartest Du, dass Du mit refresh den Bestand in der DB akualisieren kannst, aber ausnahmsweise tut M$ mal das richtige.
Refresh hat jedenfalls keine Update-Funktion Client -> Server, sollte zumindest nicht so sein, sondern sollte den Datenbestand des Client aktualisieren, also Server -> Client.
Erschwerend kommt dazu, dass Du es nicht nur mit ODBC zu tun hast, da hängt noch die Jet-Engine dazwischen und die neigt zum cachen, weil Access eigentlich als Desktop-Datenbank ist.
Mal abgesehen von dem sowieso verkehrten refresh, könnt ich wetten, dass es mit Access 97 besser liefe.
Du mußt schon wesentlich mehr erzählen, damit man Dir evtl. helfen kann.
Das Caching-Problem mit Access hatten wir hier kürzlich im Zusammenhang mit der Verwendung mehrerer Connections, das ging gründlich schief.
Also welche Komponenten, arbeitest Du mit Queries?, wie sind die Connection-Einstellungen.
Sollen mehrere Clients zugreifen?
Einfach auch mal exemplarisch Quelltext hier rein für einen einfach speichernden Zugriff, der nicht funktioniert.
Thorsten27 - Do 15.05.08 07:27
Hallo Agawain,
dann erstmal zu Deiner Kritik *lach* Ich nehme sehr gerne (!) alternative Vorschläge für Datenbank und Zugriffe an. Vorneweg: Ich nutze als Datenbanken mySQL, Firebird und Oracle - ich brauche aber eine (zusätzliche) Alternative da einige Leute welche die Programme nutzen nicht die Möglichkeit haben auf einen DB Server zugreifen zu können, bzw sich keinen lokalen installieren möchten. Access über ODBC erschien mir sinnvoll da die Programme wahlweise umgestellt werden müssen und ich die Datenbankscripte hier kaum ändern muss. Als Nicht-Server DB-Alternative bleiben da (meines Wissens) nur noch Paradox, dbase etc. von denen ich aber nach Jahren weg wollte.
Zu Deiner Frage nach genaueren Informationen. Das Problem stellt sich im Prinzip "sofort" ein.
Stell Dir ein leeres Formular mit einer Tabelle (TDBGrid), einer TTable Komponente und einem Connector vor. (Keinen weiteren Queltext)
Mit dem "Refresh" hast Du mich falsch verstanden. Ich nutze das nicht um die Datenbank upzudaten, es sollte nur das Problem verdeutlichen. Ich starte dieses Miniprogramm und gebe nun in die Tabelle Datensätze und Felder ein. Das alles funktioniert. Sobald ich die Software aber beende sind die editierten Daten wieder verschwunden.
Die genauen Einstellungen des TConnectors habe ich im Moment nicht zur Hand, editiere ich nach.
Thorsten
SmileySN - Do 15.05.08 09:15
Ich arbeite viel mit ADO und Access und der Jet 4.0 Engine.
Wenn Du die Datensätze mit Query.post abspeicherst, dann bleiben sie auch in der Datenbank drin.
Das mit dem Passwort sollte man dabei mal näher betrachten, vieleicht hast Du in der Connection Komponente nur den Passwortdialog nicht abgeschaltet.
Zeig doch mal ein bisschen Qoellcode, wie Du die Datenbank öffnest und Daten wegschreibst, dann kann ich Dir weiterhelfen.
Klabautermann - Di 20.05.08 10:10
Hmm,
das hört sich für mich so an als würden die Zeos Leute sich transactions "nachbauen" und du hast nicht Commited. Ich habe mit denen auch noch nciht gearbeitet aber gibt es Eine Transaction Komponente? Oder etwas wie Mayconnection.Transaction.Commit oder so etwas?
Gruß
Klabautermann
ZeitGeist87 - Di 20.05.08 10:21
Hallo!
Ich hab mich in den letzten Tagen mit SQLite angefreundet.
In Verbindung mit den Zeos-Komponenten ist das wirklich total toll und einfach.
Keine Installation, kann einfach weggesichert werden und natürlich ists lokal ;-)
LG
Stefan
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!