![]() |
Re: Datenbank wird nicht aktualisiert
Der SQL Befehl ist ja noch vorhanden:
Delphi-Quellcode:
Mit Open und Close aktualisiere ich lediglich das Query. Ich könnte auch Requery aufrufen, das macht nichts anderes als Close und dann Open aufzurufen. Wenn das CommitTrans lediglich nur de Transaktion abschließt, muss ich doch das Query schließen, Öffnen und anschließend die Transaktion abschließen mit CommitTrans. Aber genau das bringt mir die besagte Fehlermeldung.
MyDataset.CommandText
|
Re: Datenbank wird nicht aktualisiert
Weiß nicht genau,
aber ich meine, du musst die Query schließen, die Transaktion abschließen und anschließend die oder eine andere Query wieder öffnen, um die Daten wieder einzusehen. Wenn du mit der selben Query, Daten speichern und öffen willst, musst Du den SQL Befehl ja immer wieder anpassen. Das habe ich immer falsch gemacht, und somit Problem bei Abfragen etc. gehabt. Ich benutze mittlerweile für jede Art eine eigen Query, und somit meine ich zu wissen, Erst Query schließen, Transaktion abschließen, und anschließend die Query zum Anzeigen der Daten öffnen. Also ich meine das wäre so. Wenn nicht, lasse ich mich auch gerne belehren. Gruß Jens |
Re: Datenbank wird nicht aktualisiert
Aber das mache ich doch wenn ich sage Close, dann CommitTrans und dann wieder Open. Aber wenn ich das CommitTrans aufrufe gibts die Fehlermeldung, dass keine Transaktion aktiv ist.
Ich weiß nicht ob das vielleicht am Query liegt, ich aber ein TADODataSet verwende. Leider kann ich das nicht in ein Query umändern, wenn das der Fall ist, da die Anwendung viel zu komplex bereits aufgebaut ist. Gibts denn vielleicht eine alternative dazu? |
Re: Datenbank wird nicht aktualisiert
Zitat:
Delphi-Quellcode:
MyDataset.Close;
MyDataset.Open; MyConnection.CommitTrans; |
Re: Datenbank wird nicht aktualisiert
Hallo,
ich würde hier auch 2 Queries benutzen. Query_Vis ========= Anzeige-Query Nur Open/Close Query_DB ======== DB-Code Ein Update läuft dann so ab. Transaction läuft noch ... (MyConnection.StartTrans)
Delphi-Quellcode:
Ich persönlich habe aber nicht gern Transaktionen offen.
with Query_DB do
begin SQL.Clear; SQL.Add('Update Table 1 ... '); ExecSQL; end; Query_Vis.Close; MyConnection.CommitTrans; Query_Vis.Open; Deshalb benutze ich kein DBGrid, somit muss die Query_Vis auch nicht ständig offen sein. Ich lade meistens alles in ein normales TStringGrid MyConnection.StartTrans; Query_Vis.Open; use. MyConnection.CommitTrans; Damit ist die Transaktion nicht offen und muss vor dem Update (Query_DB) geöffnet werden. Heiko |
Re: Datenbank wird nicht aktualisiert
Mein Problem ist, dass ich das Programm und vor allem die Struktur und den Aufbau wie auf die Datenbank zugegriffen wird nicht umschrieben kann. Es ist zu komplex und würde viel zu viel Aufwand bedeuten. Deshalb benötige ich eine andere Lösung.
|
Re: Datenbank wird nicht aktualisiert
Wo liegt den dan genau dein Problem,
Ich weiß nicht so recht, was Du für eine andere Lösung brauchst. Der Vergang muss eigendlich so funktionieren. Was heißt komplex? Warum, soll das so nicht funktionieren. Gruß Jens |
Re: Datenbank wird nicht aktualisiert
Delphi-Quellcode:
darf man NUR bei einer SELECT-Anweisung anwenden
Query.Open;
Delphi-Quellcode:
wendet man bei allen anderen SQL-Anwweisungen ausser SELECT an
Query.ExecSQL;
Delphi-Quellcode:
darf man nur nach einem
Connection.CommitTrans;
Delphi-Quellcode:
anwenden
Query.ExecSQL;
Keine Ahnung, ob euch das bewusst ist, mir schien es ist euch nicht bewusst. |
Re: Datenbank wird nicht aktualisiert
Hallo,
Zitat:
Delphi-Quellcode:
Es kann aber wirklich sein, dass MySQL meckert,
XXX.BeginTransaction;
try with Query do begin '' select Open; try while not EOF do begin Next; end; finally Close; end; end; finally XXX.EndTransaction end; wenn eine Transaktion bei geöffneter Query commited wird. So etwas komt bei mir nicht vor (try finally) An den Thread-Ersteller: Du musst prüfen, ob eine Query noch offen ist. Mein Link weiter vorn betraf auch DBX. Wenn der DBX-Treiber "Mist baut", kannst du nur zu einem anderen Treiber wechseln. Aber meistens sitzt das Problem vor dem Rechner ;) Heiko |
Re: Datenbank wird nicht aktualisiert
Ich kann meine vorhandene Struktur des Programms und den Zugriff auf die Datenbank nicht ändern. Irgendwann aktualisiere ich die Datenbank, sprich ich rufe entweder ein MyDataset.Requery() oder MyDataset.Close & .Open auf. An dieser Stelle wird innerhalb meines Prozesses nicht die aktualisierte Datenmenge abgerufen, sondern mit meinen jetzigen Werten aus dem Grid überschrieben. Das ist mein Problem.
Mit dem CommitTrans habe ich probiert, aber da gibts Fehlermeldungen. Ich kann aber auch keine Transaktion beginnen ohne die DB wahrscheinlich vorher zu schließen. Auf jeden Fall gibts Fehlermeldungen wenn ich die Transaktionen versuche durchzuführen. @Tyreal: Ich befürchte, dass hier das zusätzliche Problem liegt. Ich besitze kein Query sondern ein Dataset. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz