Autor Beitrag
rob87
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Di 16.12.08 16:48 
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:
ausblenden 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???


Zuletzt bearbeitet von rob87 am Di 16.12.08 16:54, insgesamt 2-mal bearbeitet
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 16.12.08 16:48 
Zitat:
Ich vermute mal, dass irgendwo eine Transaktionsbestätigung fehlt

Ich auch *g*
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: 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". ??
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



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

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
ADOConnection1.BeginTrans;
//...
QryLoeschen.ExecSQL;
ADOConnection1.CommitTrans;


Aber der Fehler bleibt nach wie vor :(
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 16.12.08 17:11 
Hältst Du evtl. im Updatequery noch Daten bereit, die Du gerade gelöscht hast?
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Di 23.12.08 12:43 
schau mal nach Query.Refresh()

:-)Msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
rob87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: 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!