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 3 von 3     123   
Tyrael Y.

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

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 09:46
Zitat von hoika:

Zitat:
Connection.CommitTrans darf man nur nach einem
Query.ExecSQL; machen
Unsinn, zumindestens bei der 2. Bemerkung ...
Und was willst du in der Datenbank aktualisieren mit einem SELECT?
SELECT macht in zusammen mit CommitTrans keinen Sinn.



Zitat von Moony:
@Tyreal: Ich befürchte, dass hier das zusätzliche Problem liegt. Ich besitze kein Query sondern ein Dataset.
Wenn ich mich nicht irre gibt es bei Dataset paar Methoden, die
auch SELECT, INSERT usw. behandeln

ich glaube
Open()
Edit()
Insert()
Append()

musst mal gucken, ob es alle waren und wann welcher benutzt werden soll.
Levent Yildirim
  Mit Zitat antworten Zitat
Moony

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

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 09:56
Ich will die aktuelle Datenmenge aus der Datenbank in mein Dataset holen. Wenn nämlich in der zwischenzeit von Außen jemand Änderungen in der Datenbank gemacht hat, will ich die aktuellen Daten bekommen. Das passiert aber nicht wenn ich eine Aktualisierung auf meine Datenmenge durchführe. Mit Append, Edit, etc. beginne ich selbst Änderungen an der Datenbank, in diesem Fall will ich das aber nicht. Lediglich die aktuellen Daten aus der Datenbank in mein Dataset laden und per DBGrid anzeigen.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
hoika

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

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 10:39
Hallo,

Tyreal
Zitat:
Und was willst du in der Datenbank aktualisieren mit einem SELECT?
SELECT macht in zusammen mit CommitTrans keinen Sinn.
Doch, macht es, wenn z.B. mehrere Selects ausgeführt werden.
Jede Aktion läuft ja in einer Transaktion, ob man es will oder nicht
(egal ob select/insert/update).
Ja nach benutztem DB-Framework gibt es noch automatische Transaktionen.
Um zu verhindern, dass pro Select eine Transaktion gestartet wird,
schreibt man das StartTransaction selber.

Firebird ist ein schönes Bsp.
Benutze ich autocommit (Bde,FIBPlus, Zeos ?),
werden ein Haufen Transaktionen erzeugt,
auch wenn ich nur Selects mache, das Programm wird langsamer.


Zum Thread-Ersteller:
Der MySQL-Engine-Typ fehlt noch.


Zitat:
Wenn nämlich in der zwischenzeit von Außen jemand Änderungen in der Datenbank gemacht hat
Wer macht denn die Änderungen, dein eigenes Programm (auf einem anderen Recher?).

Zu der Fehlermeldung gibt es per Google doch eindeutige Aussagen.
Dein Programm erzeugt DB-Anweisungen, die nicht mit MySQL kompatibel sind.
Du musst erst mal rausbekommen, welche Query das direkt ist,
z.B. indem du mal alle Schreibzugriffe rasukommentierst
und dann schrittweise wieder reinnimmst.

Zitat:
"Ich kann das Programm nicht ändern"
Dann kannst du MySQL als DB nicht verwenden ...

Zum Engine-Typ:
Ist das InnoDB, werden Transaktionen unterstützt.
Um Änderungen zu sehen, die ein anderes Programm (oder dein eigenes mit anderer Connection)
gemacht hat, musst du mit Transaktionen arbeiten.


Heiko
Heiko
  Mit Zitat antworten Zitat
Moony

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

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 11:05
1. Ich verwende keine MySQL Datenbank sondern eine Filemaker Datenbank, die über die ODBC Schnittstelle angebunden wird.
2. Während mit der Datenbank in meiner Applikation gearbeitet wird, kann es sein dass von übergeordneter Stelle aus Flags in der Datenbank gesetzt werden, so dass ein Benutzer gewisse Datensätze nicht angezeigt bekommt.

Bsp.: Der Benutzer bekommt in der Maske nur Datensätze angezeigt, die er drucken darf (PrintFlag in der DB). Wenn jetzt der Admin währenddessen entscheidet, dass ein Datensatz doch nicht gedruckt werden darf, dann wird das PrintFlag weggesetzt. Somit gibt es eine Änderung an der Datenbank von aussen. Und genau diese Änderung will ich durch die Aktualisierung meiner Datenmenge aufrufen. Was normalerweise lediglich durch ein Requery getan sein sollte, ist aber hier nicht der fall. Warum auch immer.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
hoika

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

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 11:11
Hallo,

kein mysql, dann war das der andere Thread ...

Nun, warum der Code so gemacht werden soll, hättest du ja mal früher sagen können

Zitat:
Zur Info noch, ich habe das mit einer Access Datenbank probiert und dort werden die Werte richtig aus der Datenbank geholt.
Genau der gleiche Code ?, oder doch noch was "rumgebastelt" ...

Warum dann die Sache mit dem break (1. Post)
Du hast doch da schon das Admin-Tool, also benutze das direkt zum Setzen.

Hast du in deinem Programm überhauopt schon mal Tranktionen benutzt ?
Teste doch mal mit 2 laufenden Instanzen deines Programmes,
ob Prog1 die Änderungen von Prog 2 sieht (bei offen halten).


Heiko
Heiko
  Mit Zitat antworten Zitat
Moony

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

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 11:20
Genau der gleiche Codeschnipsel funktioniert bei einer Access und bei der Filemaker nicht. D.h. die geänderte Datenmenge wir bei Access richtig in mein Grid geladen und bei Filemaker nicht.

Welches Admin Tool? ich habe keins. Ich besitze nur meine Applikation und muss zwischenzeitig bei gewissen Aktionen des Benutzers die Datenmenge aktualisieren, was ich mit dem Requery druchführe.

Zitat:
Hast du in deinem Programm überhauopt schon mal Tranktionen benutzt ?
Nein, mit Transaktionen habe ich noch nie gearbeitet, war bis jetzt auch nicht notwendig.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
hoika

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

Re: Datenbank wird nicht aktualisiert

  Alt 18. Jun 2009, 11:30
Hallo,

Zitat:
Wenn jetzt der Admin währenddessen entscheidet, dass ein Datensatz doch nicht gedruckt werden darf, dann wird das PrintFlag weggesetzt.
Also ist dein Programm gleichzeitig das Admin-Tool.

Zu Access/FileMaker.
Es wird wohl so sein, dass Access die Transaktionen anders verwendet wir FileMaker.
Jede Aktion unter Access wird sofort in die DB geschrieben,
wenn man keine Transaktionen benutzt (AutoCommit).

Starte doch mal dein Programm 2mal,
gehe in ein Form, wo Daten geändert werden können,
Prog1 ändert, Prog2 ist offen und schaut danach nach,
ob die Änderungen wirklich drinsind.
Sind sie es nicht, beende Prog2, wieder starten, schauen.

Sind sie immer noch nicht drin, Prog1 und Prog2 schliessen,
Prog2 aufmachen, nachschauen.
Wenn sie jetzt drinstehen, startet Ado beim Filemaker zu Beginn
des Programms eine Transaktion und commited die entweder erst beim Programmende
oder nach einem bestimmten Timeout.


Dann musst du dich wohl oder übel mal mit
Transaktionen / Isolation Levels beschäftigen.

Eine Notlösung wäre, als Isolation Level read uncommited zu benutzen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 13:06 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