![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: FireDac
CallBack nach Query Refresh
Hallo Zusammen,
ich bin mir nicht sicher, ob das Thema hierhin oder in Programmieren allgemein gehört. Ich habe mehrere DataSets die ich mit Daten befülle. Das Abspeichern muss ich aber in einer bestimmten Reihenfolge tun, damit ich die automatischen ID's vorher noch in den nachfolgenden DataSets hinzufügen kann. Beispiel DataSet_Firma wird gespeichert und der neue Datensatz bekommt die ID 7 DataSet_Login soll eine Mail-Adresse, ein Passwort und die ID von Firma bekommen. Also speichere ich das DataSet_Firma, mache einen Refresh. Dann rufe ich die Procedure auf, die DataSet_LogIn speichert Setze im DataSet_LogIn die ID von Firma (7) Speichere das DataSet_LogIn Ich wollte es gerne mit einer CallBack machen (bin aber in dem Thema unerfahren).
Delphi-Quellcode:
Aber leider wird die CallBack sofort aufgerufen. Da die Datenbank nicht synchron ist, wird der Wert 0 statt dem Wert 7 angezeigt. Warte ich einen Moment und frage den Wert mit einem Button ab, bekomme ich die 7...
//Speicher-Procedure
procedure TForm_CompanyReg.Save_Company(AOnDataRecieved: TDataRecievedCallback); begin Try if DataModule_Client.DataSet_NewCompany.State<>dsBrowse then begin DataModule_Client.DataSet_NewCompany.FieldByName('land_id').AsInteger:=5; DataModule_Client.DataSet_NewCompany.FieldByName('sprache_id').AsInteger:=1; DataModule_Client.DataSet_NewCompany.Post; end; DataModule_Client.DataSet_NewCompany.ApplyUpdates; DataModule_Client.DataSet_NewCompany.Refresh; if Assigned(AOnDataRecieved) then begin AOnDataRecieved; end; Except ShowMessage('Es hat einen Fehler beim Speichern gegeben'); Exit; End; end; //CallBack als Test procedure TForm_CompanyReg.Save_CompEnvironment; begin ShowMessage('CallBack: '+IntToStr(DataModule_Client.DataSet_NewCompany.FieldByName('Company_id').AsInteger)); //Test-Zweck end; //Aufruf procedure TForm_CompanyReg.btn_forCompanyClick(Sender: TObject); begin Save_Company(@Save_CompEnvironment); end; Wie kann ich es erreichen, dass die CallBack erst aufgerufen wird, wenn der Refresh beendet ist? Ich würde es gerne mit einer CallBack machen. Vielen Dank Patrick |
AW: CallBack nach Query Refresh
Hallo,
warum holst du dir die neue ID nicht vorher (Generator, Sequence). |
AW: CallBack nach Query Refresh
Zitat:
LG aus dem hohen Norden, Edmund |
AW: CallBack nach Query Refresh
Ich fürchte, das geht mit MySQL nicht...
Was ist eigentlich der wirkliche Nutzen von CallBacks? Es macht meiner Meinung (und ich bin mir da nicht sicher!) nur Sinn, wenn aus etwas gewartet werden muss. Aber dann brauche ich einen Trigger, der feststellt, dass die "Wartezeit" vorbei ist. Aber ich will nicht so einen Schrott bauen, wie etwa eine while_Schleife , mit der ich eine gewisse Zeit lang prüfe, ob die Company_ID noch 0 ist (das ist nämlich der Ausgangswert) und erst weiterlaufe, wenn die Zeit um ist oder der Wert ungleich 0 ist. Da muss es doch etwas besseres geben... Viele Gruß aus Mitteldeutschland ;-) Patrick |
AW: CallBack nach Query Refresh
Wie ist TDataRecievedCallback deklariert?
|
AW: CallBack nach Query Refresh
Hallo,
![]() Interessant wird es ab dem Last_Insert_ID. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz