![]() |
Master-Detail-Verknüpfung
Hallo,
ich Versuche eine Master-Detail-Verknüpfung hinzubekommen, habe aber so meine Verständnisprobleme. Dazu folgendes: 2 Tabellen: eine mit Kunden, die andere mit dessen Standorten. Eine 1 zu n Beziehung. Mein Anliegen ich möchte in einer DBLookupComboBox die Kunden stehen haben. Bei Auswahl eines Kunden dann dessen Standorte in einem DBGrid anzeigen lassen. Frage: lässt sich das mit Query Komponenten lösen? denn ich möchte nicht immer alle Inhalte verwenden. Und weiter: wie lässt sich ein Kunde und dessen Standorte beim OnShow-Event voreinstellen? Ich glaub ich habe eine Blockade!? Danke für einen Denkanstoß... Gruß, Barnti |
Re: Master-Detail-Verknüpfung
Hallo,
Nachtrag: Die Einstellungen sind bisher: QueryKunden: Database: Meine DB SQL: Select * from Kunden Query Standorte: Datenbank: Meine DB SQL: Select * from Standorte Das Grid ist über die Datasource mit der QueryStandorte verbunden Die DBLookUpComboBox über die DatasourceKunden mit der QueryKunden Noch gibt es aber keine Verbindung zwischen beiden Querys! Wo setze ich diese Eigenschaft? In der Datasource der einen Query? Please help Grüße, Barnti |
Re: Master-Detail-Verknüpfung
Hi,
du brauchst erstmal 2 Query 2 DataSource + die Restelemente für die Verbindung. 1. Query1_getKundenNamen: alle Kunden ermitteln die es gibt DS1_getKundenNamen: dazugehörige DS 2. DS1_getKundenNamen in DBLookUpComboBox als ListSource definieren 3. ListField bestimmen (das was in Combo angezeigt werden soll) 4. Query2_getStandorte: alle Standorte inkl. der NamenID (zu welchem Kunden der Standort gehört. 5. Ds_getStandorte (DataSource von Query2) als Datasource der DBComboBox definieren und Datafield auf die NamenID setzen 6. KeyField des DBCombo auf das Feld setzen das in Datafield angeben ist ich glaub so müsste es funktionieren. Probiers mal |
Re: Master-Detail-Verknüpfung
Liste der Anhänge anzeigen (Anzahl: 1)
Man nehme:
Table: Kunden Felder: IdKunden,Name Tabelle: Standorte Felder: IdStandorte,Ortsname Tabelle: KundenStandorte Felder: IdKunden,IdStandorte Dann Projekt i.A. öffnen und ein bisser auf die Propertys gucken. Der Geck ist, das die Query2 als DataSource die DataSource1 hat, welch an Query1 gebunden ist. immer, wenn sich nun in Query1 der Datensatzzeiger verändert (durch cklicken auf DbComboBox) wird der Query2 der Parameter IdKunden (erkennbar am Doppelpunkt im SQL-Text) übergeben und die Ergebnismenge der Query2 aktualisiert. hoffe, es hülft... |
Re: Master-Detail-Verknüpfung
Um deine letzte Frage zu beantworten:
die Verbindung wird über Keyfield=Datafield der DBLookUpComboBox hergestellt |
Re: Master-Detail-Verknüpfung
hi,
@ Generalissimo: Das kann nicht funktionieren, da Datasource eine Tabelle beschreibt... @ Leuselator: Das klingt doch schon sehr vielversprechend! Ich werde gleich mal basteln. Bedeutet das, ich muss eine DBComboBox nutzen nicht eine DBLookUp...? Danke erst mal, ich probier erst mal. Gruß, Barnti |
Re: Master-Detail-Verknüpfung
:?: :?: :?:
erläutere mir das mal bitte näher, was du damit meinst |
Re: Master-Detail-Verknüpfung
Liste der Anhänge anzeigen (Anzahl: 1)
DbLoockUp benutzt Du in folgender Situation: (Beispiel)
Tabelle1: Kunden Felder: IdKunden,Name,idKategorie Tabelle2: Kategorie Felder: idKategorie,Bezeichnung Inhalt Tabelle 1: 1,'Meier' ,1 2,'Schulze',2 3,'Müller' ,1 4,'Schmidt',3 Inhalt Tabellle 2: 1,'Toller Kunde' 2,'Ganz toller Kunde' 3,'Unglaublich supertoller Kunde' (nent man glaube ich Master-Detail-Verknüpfung) dann würdest Du eine TQuery mit anhängiger TDatasource auf Tabelle 1 setzen:
SQL-Code:
und ebenso eine TQuery mit angehangener TDataSource uf Tabelle 2:
select * from Kunden
SQL-Code:
auf deinem TForm platzierst Du nun DbEdits, die auf TDataSource1 gelinkt sind und eine DbLookUpComboBox, die auf DataSource1 gelinkt ist. Als DataField gibst Du dort idKategorie an, als ListSource die DataSource2, als KeyField das Feld IdKategorie und als ListField das Feld Bezeichnung - fertig
select * from Kategorie
|
Re: Master-Detail-Verknüpfung
Hallo nochmal,
ich habe jetzt mal die Einstellungen wie im Beispiel übernommen. Dazu folgendes: QueryKunde: Select * from Kunde QueryStandort: SELECT DISTINCT Standort.*, Kunde.* FROM Standort Standort, Kunde Kunde where Standort.Kunde_ID= :Kunde_ID Bei den Parametern der QueryStandort habe ich einen Parameter Kunde_ID angelegt. Jetzt erscheint beim Start immer die Fehlermeldung: QueryKunde: Field Kunde_ID not found Was kann ich tun (außer, dass ich mal ne Pause machen sollte)? Barnti |
Re: Master-Detail-Verknüpfung
genau wie Leuselator es erklärt hat meinte ich es auch
@barnti: schau mal nach ob der ":" wirklich davor ist |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 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 by Thomas Breitkreuz