TDbf und Master/Detail mit mehr als einem Feld

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Christian
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:

TDbf und Master/Detail mit mehr als einem Feld

Beitrag von Christian »

Hat jemand ne idee wie das funktioniert ?
Ich kann ja bei dbf keine indizien mit mehr als einem Feld anlegen ...

ralli
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

Beitrag von ralli »

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

Christian
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:

Beitrag von Christian »

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 ...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Christian
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:

Beitrag von Christian »

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.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten