TDBF Master Detailbeziehungen?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

TDBF Master Detailbeziehungen?

Beitrag von fliegermichl »

Moin,

TDBF beinhaltet eine Property Mastersource sowie Masterfields. Aber irgendwie werden die nicht benutzt.
Ich habe eine Tabelle dokumente.dbf mit einer Personalnummer und eine personal.dbf mit den anderen Daten des Mitarbeiters.
Dann habe ich zwei dbgrid ins Formular gesetzt und eines mit der TDatasource dsdokumente und das andere mit dspersonal verbunden.

Es werden aber immer alle Personal Datensätze angezeigt.
Wie macht man das denn richtig?

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDBF Master Detailbeziehungen?

Beitrag von charlytango »

zu meinen Clipper-Zeiten hab ich mich auch nie auf irgendwelche Master-Detail Konstrukte verlassen und hab die Steuerung immer selber gemacht.

Auf Lazarus übertragen würde ich sagen (ohne es getestet zu haben) im TDbf des der Tabelle Personal ins Afterscroll eine Suche im TDbf der Tabelle Dokumente eine Suche machen (mit der Personal-ID) - index setzen/benutzen nicht vergessen.

oder meinst du etwas anderes ?

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: TDBF Master Detailbeziehungen?

Beitrag von wp_xyz »

fliegermichl hat geschrieben:
Mi 14. Apr 2021, 11:38
TDBF beinhaltet eine Property Mastersource sowie Masterfields. Aber irgendwie werden die nicht benutzt. [...] Wie macht man das denn richtig?
Du brauchst einen Index in der Master-Tabelle und in der Detail-Tabelle für das Feld, das die Master-Details-Verknüpfung vermitteln soll. Dieser Index muss in beiden Tabellen ausgewählt sein. Dann muss in der Detail-Tabelle als MasterSource die DataSource mit der Master-Tabelle eingetragen sein, sowie in der Eigenschaft MasterFields das in der Master-Tabelle verwendete Index-Feld.

Siehe beigefügte Beispiel:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  dbfMaster.FilePathFull := Application.Location + 'data';
  dbfMaster.TableName := 'master.dbf';
  dbfMaster.Open;
  dbfMaster.IndexFieldNames := 'SYMBOL';

  dbfDetail.FilePathFull := Application.Location + 'data';
  dbfDetail.TableName := 'holdings.dbf';
  dbfDetail.Open;
  dbfDetail.MasterSource := dsMaster;
  dbfDetail.MasterFields := 'SYMBOL';
  dbfDetail.IndexFieldNames := 'SYMBOL';
end;
Dateianhänge
dbf_master_detail.zip
(9.13 KiB) 81-mal heruntergeladen

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: TDBF Master Detailbeziehungen?

Beitrag von fliegermichl »

Danke für die Infos. Ich teste das dann gleich mal.

Antworten