Entwickler-Ecke
Datenbanken - Daten von 2 SQL-Tables in einer Form
hansa - So 06.10.02 11:33
Titel: Daten von 2 SQL-Tables in einer Form
Hallo,
schildere mal das Problem :
Ich habe hier eine Kunden- und eine Kundengruppentabelle. Jetzt will ich z.B. einen neuen Kunden anlegen und diesem eine gültige Kundengruppe zuordnen. Die Kundentable hat ein Feld IDKG, dem eine Gültige ID aus den Kundengruppen zugeordnet werden soll.
Ich bin soweit, daß ich in dem Feld KG eine gültige Nr. eingeben kann und auch die zugehörige Kundengruppe angezeigt wird, aber ich kriege die ID nicht dazu, an die kunden.IDKG weitergereicht zu werden. :shock: Muß ich das mit SET odetr womit machen ?
Gruß
Hansa
LCS - Mo 07.10.02 07:16
Hi
warum machst du das nicht mit einer DBLookupCombo? Dann hättest du das Problem nicht. Welche Komponenten hast du denn auf dem Formular?
Gruss Lothar
hansa - Mo 07.10.02 10:46
Hallo,
DBlookUpComboBox ? Tja, in diesem Fall vielleicht das beste, aber es geht mir nicht so um das Aussehen, sondern um die Daten. Ich brauche nicht nur Master -> Detail sondern Master->Detail->Subdetail->SubSubDetail. Wie tief das gehen kann weiß ich noch gar nicht, auf jeden Fall tiefer als normal. :oops:
im Datenmodul ist folgendes :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| TDataModul = class(TDataModule) Database: TpFIBDatabase; KGTransaction: TpFIBTransaction; KGsource: TDataSource; KUsource: TDataSource; KUdatensatz: TpFIBDataSet; KGdatensatz: TpFIBDataSet; private |
Auf der Form selber ist noch nicht soviel, ein paar DBedit-Felder, eine Listbox, ein DBtextfeld. 8) Aber das werden ca. 3-4 Bildschirmseiten voll.
Gruß
Hansa
LCS - Mo 07.10.02 11:02
Hi
| Zitat: |
Tja, in diesem Fall vielleicht das beste, aber es geht mir nicht so um das Aussehen, sondern um die Daten.
|
Eben deswegen. Lässt sich einfach leichter handhaben.
| Zitat: |
Ich brauche nicht nur Master -> Detail sondern Master->Detail->Subdetail->SubSubDetail.
|
Dann erst Recht. Die erste Lookup-Datenquelle liefert das Detail. Auf dieser Basis wird in der untegeordneten Lookup-Datenquelle das Subdetail angezeigt usw.
| Zitat: |
Wie tief das gehen kann weiß ich noch gar nicht, auf jeden Fall tiefer als normal
|
Was ist schon normal? :mrgreen: Aber wenn du noch nicht weisst wie weit das gehen kann, würde ich mir an deiner Stelle noch mal Gedanken über das Datenmodel machen. Eigentlich sollte das vor der Programmierung schon stehen und Gedanklich getestet sein :wink:
Gruss Lothar
hansa - Mo 07.10.02 11:22
Hi Lothar,
| Zitat: |
Die erste Lookup-Datenquelle liefert das Detail. Auf dieser Basis wird in der untegeordneten Lookup-Datenquelle das Subdetail angezeigt usw.
|
Wenn ich mir das mal überlege, das stimmt. Du meinst also, ich solle von der Lookupbox nur die Datenquellen verwenden ? Habe mich mit einer einfachen DBlookupbox schon verhackstückelt. :mrgreen: Vielleicht habe ich die deshalb unterbewußt nicht verwendet. Komme ich dann an die Subdetails dran mit :"SELECT FROM SELECT FROM SELECT" oder so ähnlich ? Und muß ich dann ein Detailfeld als Masterfield eines Subdetails verwenden. Ist bei mir im Moment ja eigentlich auch so realisiert. 8) Wo Du Recht hast, hast Du Recht. Muß mit den DBLookups wohl auch tiefer einsteigen.
| Zitat: |
Eigentlich sollte das vor der Programmierung schon stehen und Gedanklich getestet sein
|
Das ist es eigentlich schon. Habe ja ein Programm, das so funktioniert, nur nicht mit SQL. Außerdem wird das hier umfangreicher. Bei der Implementierung tu ich mich noch etwas schwer.
Gruß
Hansa
LCS - Mo 07.10.02 11:42
Hi
Nehmen wir mal als Beispiel an, du hast drei Tabellen Hauptgruppe, Gruppe, Untergruppe.
Hauptgruppe:
HG_ID, HB_BEZEICHNUNG
Gruppe:
GR_ID, GR_BEZEICHNUNG, HG_ID (die ID der zugehörenden Hauptgruppe)
Untergruppe:
UG_ID, UG_BEZEICHUNG, GR_ID (die ID der zugehörenden Gruppe)
Für jede dieser Tabellen hast du eine Query und eine Datasource. Für die Hauptgruppe sieht die Query (Query1/Source1) so aus:
Quelltext
1:
| SELECT * from HAUPTGRUPPE |
Wenn du das einer DBLookupCombo als Listsource zuordnest, bekommst du die Einträge der Hautpgruppe. KeyField ist die eindeutige ID der Hauptgruppe: HG_ID.
Die Query für die Tabelle Gruppe (Query2/Source2) sieht so aus:
Quelltext
1:
| Select * from GRUPPE where HG_ID = :HG_ID |
Es sollen also alle Gruppen der gewählten Hauptgruppe angezeigt werden. Der aktuelle Wert stammt aus dem gewählten Eintrag der LookupCombo. Und das geht ganz automatisch wenn du der Eigenschaft
DataSource von Query2 die Source1 zuordnest. Jedesmal wenn ein Eintrag aus der ersten Combo ausgewählt wird, wird der keyValue an die zweite Abfrage übergeben und entsprechend aktualisiert. Wenn du die zweite Abfrage ebenfalls in einer LookupCombo anzeigst, hast du das Dateil zum Master.
Analog dazu funktionert Query3/Source3
Quelltext
1:
| Select * from UNTERGRUPPE where GR_ID = :GR_ID |
Query3 bekommt in der Eigenschaft Datasource Source2. Das Feld GR_ID wird somit abhängig von dem ausgewählten Eintrag in Query2. Und so könnte man das weiter führen.
Ich hoffe mal, das war einigermassen verständlich erklärt, aber wenn man das mal durchschaut hat, ist das ganz Easy. :D
Gruss Lothar
hansa - Mo 07.10.02 11:56
Hallo Lothar,
Danke für die Hilfe, druck mir das mal aus und nehm es mit. Auf den ersten Blick kommt das mir SEHR bekannt vor. 8) Brauche nun zuerst einmal Testdaten, deshalb auch der andere Thread. Bei Testdaten sieht man offensichtliche Fehler nicht so schnell.
Gruß
Hansa
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!