Entwickler-Ecke

Datenbanken - Fehler bei der Datenabfrage


rob87 - Di 16.12.08 16:48
Titel: Fehler bei der Datenabfrage
Ich will ein Delete-Query ausführen und anschließnd wieder in diese Tabelle Daten hineinschreiben.

Die Fehlermeldung die ich bekomme ist folgende: Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. EInige Werte wurden seit dem letzten Lesen ggf. geändert.

Ich vermute mal, dass irgendwo eine Transaktionsbestätigung fehlt:

Delphi-Quelltext
1:
2:
3:
4:
bspquery.sql.text = 'delete from tabelle 1 where wert5 = 'xyz'';
bspquery.execsql;

//und wenn ich nun anschließend einen edit machen will, meckert er??


diese sache macht er aber immer nur wenn ich die tabelle nach dem programmstart ein zweites oder drittes mal füllen will. Beim ersten Mal hat er kein Problem???


Delete - Di 16.12.08 16:48

Zitat:
Ich vermute mal, dass irgendwo eine Transaktionsbestätigung fehlt

Ich auch *g*


rob87 - Di 16.12.08 16:53

user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
Ich vermute mal, dass irgendwo eine Transaktionsbestätigung fehlt

Ich auch *g*


Nur hab ich des bei der ADOQuery-Komponente ned. Hab kein "Qry.Transaction.Commit" oder "Qry.CommitRetaining". ??


Delete - Di 16.12.08 16:57

Ich habe heute kein Delphi zur Verfügung, ADO ist auch nicht meine Welt, aber schau mal bei der ADOConnection nach, ich könnte mir denken, dass es da so etwas wie StartTransaction und Commit gibt.


rob87 - Di 16.12.08 17:06

user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe heute kein Delphi zur Verfügung, ADO ist auch nicht meine Welt, aber schau mal bei der ADOConnection nach, ich könnte mir denken, dass es da so etwas wie StartTransaction und Commit gibt.


Ich hatte nun folgendes:

Delphi-Quelltext
1:
2:
3:
4:
ADOConnection1.BeginTrans;
//...
QryLoeschen.ExecSQL;
ADOConnection1.CommitTrans;


Aber der Fehler bleibt nach wie vor :(


Delete - Di 16.12.08 17:11

Hältst Du evtl. im Updatequery noch Daten bereit, die Du gerade gelöscht hast?


rob87 - Di 16.12.08 17:33

user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Hältst Du evtl. im Updatequery noch Daten bereit, die Du gerade gelöscht hast?

Ach ich weiß bald gar ix mehr. Kann mich heut überhaupt nimma gscheid konzentrieren. Sorry..

Die Sache funktioniert so. Es gibt eine temporäre Tabelle. Diese wird zu Beginn teilweise gelöscht. Mit eben obigem Query. Beim Befüllen wird nun anhand gewisser Attribute geguckt, mach ich nen Insert oder nen Edit. Dann wird das ganze Gedönse wieder ausgelesen ;-)

Und bei dem Insert, bzw Edit hab ich halt nach jedem Datensatz ein Post; Aber auch kein Transaction.Commit... Ich kenn mich nimma aus. Ich geh jetzt dann heim... :lol:


rob87 - Di 23.12.08 11:00

user profile iconrob87 hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Hältst Du evtl. im Updatequery noch Daten bereit, die Du gerade gelöscht hast?

Ach ich weiß bald gar ix mehr. Kann mich heut überhaupt nimma gscheid konzentrieren. Sorry..

Die Sache funktioniert so. Es gibt eine temporäre Tabelle. Diese wird zu Beginn teilweise gelöscht. Mit eben obigem Query. Beim Befüllen wird nun anhand gewisser Attribute geguckt, mach ich nen Insert oder nen Edit. Dann wird das ganze Gedönse wieder ausgelesen ;-)

Und bei dem Insert, bzw Edit hab ich halt nach jedem Datensatz ein Post; Aber auch kein Transaction.Commit... Ich kenn mich nimma aus. Ich geh jetzt dann heim... :lol:


Ich hab nun einfach nach dem Delete die Tabelle kurz geschlossen und wieder aufgemacht. Nun gehts... Vermutlich waren die Daten noch irgendwo im Puffer, etc....


MSCH - Di 23.12.08 12:43

schau mal nach Query.Refresh()

:-)Msch


rob87 - Di 23.12.08 13:59

user profile iconMSCH hat folgendes geschrieben Zum zitierten Posting springen:
schau mal nach Query.Refresh()

:-)Msch


Hmmm.. Nun ja, ginge vermutlich auch. Aber des is die sicherste Variante. Und des bissal Performance, des dabei drauf geht is auch ned tragisch... Also dann frohe Weihnachten noch!