AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank wird nicht aktualisiert
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank wird nicht aktualisiert

Ein Thema von Moony · begonnen am 16. Jun 2009 · letzter Beitrag vom 18. Jun 2009
Antwort Antwort
Seite 2 von 3     12 3      
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#11

Re: Datenbank wird nicht aktualisiert

  Alt 17. Jun 2009, 09:54
Der SQL Befehl ist ja noch vorhanden:

MyDataset.CommandText 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.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#12

Re: Datenbank wird nicht aktualisiert

  Alt 17. Jun 2009, 10:00
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#13

Re: Datenbank wird nicht aktualisiert

  Alt 17. Jun 2009, 10:22
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?
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#14

Re: Datenbank wird nicht aktualisiert

  Alt 17. Jun 2009, 10:26
Zitat von Moony:
wenn ich sage Close, dann CommitTrans und dann wieder Open.
Hast Du aber anders gelößt

Delphi-Quellcode:
MyDataset.Close;
MyDataset.Open;
MyConnection.CommitTrans;
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Datenbank wird nicht aktualisiert

  Alt 17. Jun 2009, 10:26
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:
with Query_DB do
begin
  SQL.Clear;
  SQL.Add('Update Table 1 ... ');
  ExecSQL;
end;

Query_Vis.Close;
MyConnection.CommitTrans;
Query_Vis.Open;
Ich persönlich habe aber nicht gern Transaktionen offen.
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
Heiko
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#16

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 07:40
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.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#17

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 07:48
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#18

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 08:07
Query.Open; darf man NUR bei einer SELECT-Anweisung anwenden

Query.ExecSQL; wendet man bei allen anderen SQL-Anwweisungen ausser SELECT an

Connection.CommitTrans; darf man nur nach einem
Query.ExecSQL; anwenden


Keine Ahnung, ob euch das bewusst ist, mir schien es ist euch nicht bewusst.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#19

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 08:21
Hallo,

Zitat:
Connection.CommitTrans darf man nur nach einem
Query.ExecSQL; machen
Unsinn, zumindestens bei der 2. Bemerkung ...

Delphi-Quellcode:
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;
Es kann aber wirklich sein, dass MySQL meckert,
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
Heiko
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#20

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 08:28
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.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz