Entwickler-Ecke
Datenbanken - Datensätze werden in der Datenbank nicht gespeichert !
Jagg - Mi 20.11.02 12:25
Titel: Datensätze werden in der Datenbank nicht gespeichert !
Hallo !
Ich habe DBGrid mit Query vebunden !
Wenn ich das Programm starte und einen neuen Datensatz eingebe,dann
wird der Datensatz nicht gespeichert,sondern fällt weg beim next ProgrammStart !
Walum ?
Jagg !
DataCool - Mi 20.11.02 12:30
Hast Du auch einen DBNavigator mit dem DataSource verbunden ?
Steht die Query vielleicht auf ReadOnly ?
Udontknow - Mi 20.11.02 12:56
Es geht noch einfacher. :wink:
Hast du vielleicht einfach den Aufruf von "Post" vergessen?
Cu, :)
Udontknow
DataCool - Mi 20.11.02 13:08
Darauf wollte ich hinaus, deshalb der DBNavigator :wink:
Jagg - Mi 20.11.02 13:30
Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Button3Click(Sender: TObject); begin Query1.Post; DBEdit1.SetFocus; end; |
Er sagt dann den Fehler :
Datenmenge weder im Editer noch im Einfügemodus !
Muss ich dann noch : "Query1.Edit" machen ?
Udontknow - Mi 20.11.02 13:41
Post funzt nur, wenn du vorher Edit oder Insert aufgerufen hast. Es macht aber keinen Sinn, deshalb dann Edit oder Insert aufzurufen.
Also: Grundsätzlich wird ein Datensatz in einem TDataset zuerst mit Insert oder Update für die Bearbeitung bereit gemacht, nach der Bearbeitung muss man dann Post ausführen.
In einem DBGrid wird automatisch Insert aufgerufen, wenn du in der letzten Zeile den Pfeil nach unten drückst, Update wird ausgeführt, wenn du in irgendeiner Zelle etwas veränderst. Ein DBGrid postet auch automatisch, wenn du diese Zeile verlässt und auf einen anderen Datensatz gehst.
Fügst du aber nur ein, verlässt aber nicht diese Zeile und beendest sofort das Programm, so wird kein Post ausgeführt, der Datensatz landet nicht in der Datenbank.
Hier, das solltest du in dein Onclose-Event packen:
Quelltext
1: 2:
| if (Query1.State=dsInsert) or (Query1.State=dsUpdate) then Query1.Post; |
Cu, :)
Udontknow
Jagg - Mi 20.11.02 13:58
dsUpdate kennt er aber nicht !
Muss ich eine Unit einfügen oder so ?
Jagg !
Udontknow - Mi 20.11.02 14:25
Ups, sorry, es muss dsEdit heissen. Deklaration befindet sich in der Unit DB.
Cu,
Udontknow
Jagg - Mi 20.11.02 14:47
hm...... geht irgendwie nicht !
JAgg !
Jagg - Mi 20.11.02 15:01
meno....warum schreibt er in die datenbank nichts rein ?
Udontknow - Mi 20.11.02 15:13
Schliesst du vor der Ausführung desoben gegebenen Code-Snippets die DB-Connection oder die Query?
Jagg - Mi 20.11.02 15:24
nein mach ich nicht !
liegt es daran ?
Jagg !
Udontknow - Mi 20.11.02 15:41
Es hätte daran gelegen, wenn du so verfahren hättest...
Jagg - Mi 20.11.02 15:47
ich habe nochmal nachgeschau...also,ich schliesse nichts,das ist alles noch geöffnet !
Jagg !
Udontknow - Mi 20.11.02 16:02
Wie ist denn der State der Query vor dem Snippet?
Jagg - Mi 20.11.02 16:13
Ich habe da keinen state !
muss da einer hin ?
oder muss da was im Objektinspektor gemacht werden ?
Jagg !
wwerner - Mi 20.11.02 16:20
Schließt du die DB bei Programmende? Das ist auch wichtig!
Jagg - Mi 20.11.02 16:50
ne ich schliesse es nicht !
warum sollte ich auch !
bei ttable schreibt er es sofort rein !
Jagg !
Udontknow - Mi 20.11.02 17:13
:?:
Wie, du hast keinen State? State ist eine Eigenschaft der Query, diese hat zu jeder Zeit einen Status! Also, Haltepunkt vor dem Codesnippet und dann per Strg+F7 Query1.State auswerten!
Cu,
Udontknow
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!