ZeosDB Master-Detail TZQuery in Lazarus 4.6 schlägt fehl
- Maddias
- Lazarusforum e. V.
- Beiträge: 60
- Registriert: Mo 29. Apr 2019, 09:28
- OS, Lazarus, FPC: Windows 11 & Linux, Lazarus 4.6, FPC 3.2.2
- Wohnort: Randwick, NSW, Australien
- Kontaktdaten:
ZeosDB Master-Detail TZQuery in Lazarus 4.6 schlägt fehl
Hallo zusammen!
Ich habe eine ältere Anwendung, die eine Master-Detail-Beziehung über eine TZQuery und die Eigenschaften MasterSource/MasterFields nutzt. In Lazarus 3.9 funktionierte das einwandfrei. Nach einem Clean-up und Build ... in Lazarus 4.6 (64 Bit) wird das Detail-Dataset jedoch nicht mehr angepasst, wenn ich mich im Master-DataSet weiterbewege . Das ZeosDB-Paket hat die Version 8.0.0.0.
Hat jemand dieses Problem schon einmal gehabt?
Salut,
Mathias
Ich habe eine ältere Anwendung, die eine Master-Detail-Beziehung über eine TZQuery und die Eigenschaften MasterSource/MasterFields nutzt. In Lazarus 3.9 funktionierte das einwandfrei. Nach einem Clean-up und Build ... in Lazarus 4.6 (64 Bit) wird das Detail-Dataset jedoch nicht mehr angepasst, wenn ich mich im Master-DataSet weiterbewege . Das ZeosDB-Paket hat die Version 8.0.0.0.
Hat jemand dieses Problem schon einmal gehabt?
Salut,
Mathias
- Zvoni
- Beiträge: 622
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: ZeosDB Master-Detail TZQuery in Lazarus 4.6 schlägt fehl
Wie sieht dein Setup aus?
So?
So?
Code: Alles auswählen
var Master,Detail:TzQuery ds_Master:TDatasource;
Begin
// Create
Master:=TzQuery.Create(application);
Detail:=TzQuery.Create(application);
ds_Master:=TDatasource.Create(application);
Master.connection:=Zconnection1;
detail.connection:=Zconnection1;
ds_Master.dataset:=Master;
// Master Table
Master.sql.text:='select * from master_table';
Master.OPen;
// Detail Table
detail.LinkedFields := '<master_table_ID>'; // Fieldname from detail table
detail.MasterFields := '<ID>'; // Fieldname from master table
detail.MasterSource := ds_Master;
detail.sql.text:='select * from detail_table';
detail.open;
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
- Maddias
- Lazarusforum e. V.
- Beiträge: 60
- Registriert: Mo 29. Apr 2019, 09:28
- OS, Lazarus, FPC: Windows 11 & Linux, Lazarus 4.6, FPC 3.2.2
- Wohnort: Randwick, NSW, Australien
- Kontaktdaten:
Re: ZeosDB Master-Detail TZQuery in Lazarus 4.6 schlägt fehl
Hallo Zvoni,
recht herzlichen Dank für Deine Reaktion.
Im Anhang findest Du ein Beispiel Projekt, welches ich für das Team bei ZeosDB erstellt habe. Ohne den Code im Event Handler TfrmMain.qryDepartmentAfterScroll funktioniert das Aktualisieren des Detail-DataSets nicht.
Salut,
Mathias
recht herzlichen Dank für Deine Reaktion.
Im Anhang findest Du ein Beispiel Projekt, welches ich für das Team bei ZeosDB erstellt habe. Ohne den Code im Event Handler TfrmMain.qryDepartmentAfterScroll funktioniert das Aktualisieren des Detail-DataSets nicht.
Salut,
Mathias
- Dateianhänge
-
MasterDetailZeosDB.zip- (3.91 KiB) 22-mal heruntergeladen
- Zvoni
- Beiträge: 622
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: ZeosDB Master-Detail TZQuery in Lazarus 4.6 schlägt fehl
Müsste für dich dann ungefähr so aussehen
Ungetestet (Hab kein Zeos)
Und dein Fremdschlüssel "Dept_No" ist wirklich ein String?
Ich habs jetzt mal als Integer interpretiert
Ungetestet (Hab kein Zeos)
Code: Alles auswählen
var
qryDepartment,qryEmployee:TzQuery;
ds_qryDepartment:TDatasource;
Begin
// Create
qryDepartment:=TzQuery.Create(); //Wird vom Formular übernommen
qryEmployee:=TzQuery.Create(); //Wird vom Formular übernommen
qryDepartment.connection:=conFirebird; //Wahrscheinlich im OI verbunden
qryEmployee.connection:=conFirebird; //Wahrscheinlich im OI verbunden
ds_qryDepartment:=TDatasource.Create();
// qryDepartment Table
qryDepartment.sql.text:='select * from qryDepartment_table';
qryDepartment.Open;
// qryEmployee Table
qryEmployee.LinkedFields := 'Dept_No'; // Foreign Key Fieldname from qryEmployee table
qryEmployee.MasterFields := 'ID'; // Primary Key Fieldname from qryDepartment table
qryEmployee.MasterSource := ds_qryDepartment;
qryEmployee.sql.text:='select * from qryEmployee_table';
qryEmployee.open;Ich habs jetzt mal als Integer interpretiert
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
- Maddias
- Lazarusforum e. V.
- Beiträge: 60
- Registriert: Mo 29. Apr 2019, 09:28
- OS, Lazarus, FPC: Windows 11 & Linux, Lazarus 4.6, FPC 3.2.2
- Wohnort: Randwick, NSW, Australien
- Kontaktdaten:
Re: ZeosDB Master-Detail TZQuery in Lazarus 4.6 schlägt fehl
Danke, Zvoni!
Zvoni schrieb:
Ich fürchte es handelt sich um ein X.0.0.0 Versionsproblem von ZeosDB. Ich warte im Moment auf eine Antwort des Entwicklers von ZeosDB. Sollte sich da eine Lösung ergeben, dann werde ich selbstverständlich hier berichten.
Salut,
Mathias
Zvoni schrieb:
Ja, in der Beispieldatenbank von Firebird ist der Primärschlüssel der Tabelle Department die Dept_No als Char(3) Spalte. Insofern ist LinkedFields & MasterFields identisch.Und dein Fremdschlüssel "Dept_No" ist wirklich ein String?
Ich fürchte es handelt sich um ein X.0.0.0 Versionsproblem von ZeosDB. Ich warte im Moment auf eine Antwort des Entwicklers von ZeosDB. Sollte sich da eine Lösung ergeben, dann werde ich selbstverständlich hier berichten.
Salut,
Mathias
- lcb-User
- Beiträge: 70
- Registriert: Di 15. Jul 2014, 13:18
- OS, Lazarus, FPC: Linux Mint 22.3 Cinnamon Lazarus 4.6 (rev lazarus_4_6) FPC 3.2.2 x86_64-linux-gt
- CPU-Target: 64Bit(win32Bit)
- Wohnort: München
- Kontaktdaten:
Re: ZeosDB Master-Detail TZQuery in Lazarus 4.6 schlägt fehl
Hallo 
Kann es sein dass bei
das
raus muss, weil die Komponente selbst für die Zuordnung sorgt?
nach dem ich noch die
LinkedFields auf DEPT_NO getellt habe
gabs zwar noch eine Fehlermeldung aber es ging dann.
Kann es sein dass bei
Code: Alles auswählen
'Select Emp_No, First_Name, Last_Name, Dept_No'
'From Employee'
'Where Dept_No = :Dept_No'
'Order By First_Name, Last_Name'Code: Alles auswählen
'Where Dept_No = :Dept_No'nach dem ich noch die
LinkedFields auf DEPT_NO getellt habe
gabs zwar noch eine Fehlermeldung aber es ging dann.
Sonnige Grüße
Bibsi
Traue keiner Statistik die du nicht selbst gefälscht hast (Sir Winston Churchill 1874 - 1965)
Linux Mint 22.3 - Cinnamon 64-bit, Kernel 6.8.0-106-generic
Lazarus 4.6 (rev lazarus_4_6) FPC 3.2.2 x86_64-linux-gtk2
Bibsi
Traue keiner Statistik die du nicht selbst gefälscht hast (Sir Winston Churchill 1874 - 1965)
Linux Mint 22.3 - Cinnamon 64-bit, Kernel 6.8.0-106-generic
Lazarus 4.6 (rev lazarus_4_6) FPC 3.2.2 x86_64-linux-gtk2
- Zvoni
- Beiträge: 622
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: ZeosDB Master-Detail TZQuery in Lazarus 4.6 schlägt fehl
Ist auch meine Vermutunglcb-User hat geschrieben: Di 31. Mär 2026, 10:35 Hallo
Kann es sein dass beidasCode: Alles auswählen
'Select Emp_No, First_Name, Last_Name, Dept_No' 'From Employee' 'Where Dept_No = :Dept_No' 'Order By First_Name, Last_Name'raus muss, weil die Komponente selbst für die Zuordnung sorgt?Code: Alles auswählen
'Where Dept_No = :Dept_No'
nach dem ich noch die
LinkedFields auf DEPT_NO getellt habe
gabs zwar noch eine Fehlermeldung aber es ging dann.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.