Hat jemand ne idee wie das funktioniert ?
Ich kann ja bei dbf keine indizien mit mehr als einem Feld anlegen ...
TDbf und Master/Detail mit mehr als einem Feld
-
- Beiträge: 374
- Registriert: Mi 13. Sep 2006, 15:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Hagen a.T.W.
- Kontaktdaten:
Synchronisation erfolgt über gemeinsames indiziertes Feld
Du hast eine Datenbank Kunden mit einem Feld Kundennr. Das ist die Master db. Dann hast Du eine Datenbank Rechnungen in der es unter anderem auch ein Feld Kundennr geben muß. Das ist die Detail db. Es können nun alle Rechnungen für einen bestimmten Kunden angezeigt werden. Die Synchronisation bei der Navigation erfolgt über das Feld Kundennr, das indiziert sein muß. Im Lazarus Tutorial ist ein kleines Beispiel.
Ralli
Ralli
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Ich hab nicht gefragt was Master/Detail ist sondern wie man das mit TDbf mit mehr als einem Feld hinbekommt.
1. Problem man kann mit dbf keine indizien mit mehreren feldern anlegen wie z.b. bei Paradox möglich.
2. Problem Dbf1.MasterFields := 'KUNDENNUMMER;ADRESSNUMMER';
(wenn es denn feldbezeichner > 10 zeichen geben würde
) verursacht einen Fehler iregndwas in der richting Feld ; nicht gefunden ...
1. Problem man kann mit dbf keine indizien mit mehreren feldern anlegen wie z.b. bei Paradox möglich.
2. Problem Dbf1.MasterFields := 'KUNDENNUMMER;ADRESSNUMMER';
(wenn es denn feldbezeichner > 10 zeichen geben würde

W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
OK, hier ist die Lösung:
Adressen.AddIndex('ADRESSE','KUNDENUMMER+ADRESSNUMMER',[]);
Adressen.IndexName := 'ADRESSE';
Adressen.MasterSource := KundenDS;
Adressen.MasterFields := 'KUNDENNUMMER+ADRESSNUMMER';
Funktioniert leider reproduzierbar beim ersten mal nach erstellen der Tabelle nicht und bei bisher einer Tabelle gar nicht wenn ich es im Code mache. Pack ich bei der Tabelle wo das nicht funktioniert die Mastertabelle und diese auf ein extra Formular und stelle alles zur Designzeit ein funktionierts hinterher auch mit der Laufzeiteinstellung da muss sich also irgendwas in der Tabelle noch ändern. Naja ziemlich komische sache.
Adressen.AddIndex('ADRESSE','KUNDENUMMER+ADRESSNUMMER',[]);
Adressen.IndexName := 'ADRESSE';
Adressen.MasterSource := KundenDS;
Adressen.MasterFields := 'KUNDENNUMMER+ADRESSNUMMER';
Funktioniert leider reproduzierbar beim ersten mal nach erstellen der Tabelle nicht und bei bisher einer Tabelle gar nicht wenn ich es im Code mache. Pack ich bei der Tabelle wo das nicht funktioniert die Mastertabelle und diese auf ein extra Formular und stelle alles zur Designzeit ein funktionierts hinterher auch mit der Laufzeiteinstellung da muss sich also irgendwas in der Tabelle noch ändern. Naja ziemlich komische sache.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/