Autor Beitrag
Thorsten27
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 14.05.08 22:39 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: 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.

_________________
Gruß Aga
Thorsten27 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 297

WinXP, Win7
Delphi 2010 Professional
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: 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

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.