Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Verknüpften wert anhand der ID ausgeben (https://www.delphipraxis.net/174178-verknuepften-wert-anhand-der-id-ausgeben.html)

Hausmarke 8. Apr 2013 14:01

Datenbank: Firebird • Version: 2.1 • Zugriff über: TIBDatabase

Verknüpften wert anhand der ID ausgeben
 
Hallo werte ForenUser,

ich habe hier bereits sehr oft antworten auf meine fragen gefunden. Bisher hatte ich jedoch das glück das die fragen die ich hatte, bereits im Forum gestellt worden waren.
Leider konnte ich zu meiner aktuellen fragen nichts finden, bzw. wird wohl meine fragestellung bzw. meine suchbegriffe die Ergebnisse nicht weit genug eingegrenzt haben.

Zum Sachverhalt:
ich greife via TIBDatabase auf eine Firebird Datenbank mit mehreren tabellen zu.
In einer der Tabellen sind die Werte der anderen Tabellen durch die ID hinterlegt und auch durch Keys verknüpft.
Nun möchte ich bei der Ausgabe meiner haupttabelle, nicht die ID ausgeben sondern die Werte auf welche die hinterlegten ID´s verweisen.

Der einzige weg der sich mir momentan erschließt, ist eine Abfrage einzubauen welche die ID ausließt, die andere Tabelle öffnet, und dann den Übergebenen Wert bei der Ausgabe (die ID) durch den eigentlichen Inhalt ersetzt.
Aber dies erscheint mir relativ umständlich, zudem gehe ich davon aus, das durch dieses vorgehen das Programm schwerfälliger wird.
Gibt es evtl. eine andere, schnellere Lösung?

besten dank im voraus

Uwe Raabe 8. Apr 2013 14:06

AW: Verknüpften wert anhand der ID ausgeben
 
Lookup-Felder

Hausmarke 8. Apr 2013 14:30

AW: Verknüpften wert anhand der ID ausgeben
 
Vielen Dank für die schnelle Antwort.

Ich werd mir das mal in der Hilfe anschauen.

wie ich es aktuell sehe, benötige ich dafür eine TTable komponente. Ich schätze das in dieser die Verknüpften Werte beider Tabellen hinterlegt werden.

p80286 8. Apr 2013 14:32

AW: Verknüpften wert anhand der ID ausgeben
 
Wenn ich Dich richtig verstanden habe, hast Du eine "Masterjointable" in der alle Beziehungen zwischen deinen Datentabellen enthalten sind.
Also ungefähr so:
MJT
ID
ID_Dat1
ID_Dat2
ID_Dat3
ID_Dat4
..

Dat1
ID_Dat1
Daten

Dat2
ID_Dat2
Daten

Dat3
ID_Dat3
Daten

....


Das wäre nicht unbedingt optimal, aber durchaus handhabbar

Code:
select Dat1.Daten,Dat2.Daten,Dat3.Daten
from MJT
    ,Dat1
    ,Dat2
    ,Dat3
where MJT.ID_Dat1=Dat1.ID_Dat1
  and MJT.ID_Dat2=Dat2.ID_Dat2
...
usw
Gruß K-H

Hausmarke 9. Apr 2013 13:00

AW: Verknüpften wert anhand der ID ausgeben
 
Danke für den Vorschlag.

Meine Tabelle sieht dabei etwas einfacher aus, als beispiel:

Tab_Haus:
  • ID
  • Ort
  • BauartID - FK auf Tab_Bauart(ID)

Tab_Bauart:
  • ID
  • Bauart

mein ziel ist es im ausgabeformular anstatt der ID die in Tab_Bauart hinterlegte Bauart auszugeben.

ich werde es aller voraussicht nicht über die LookUpComboBox umsetzen, sondern über ein separates Formular, wodurch der User unmittelbar neue "Baustile" aufnehmen kann.

p80286 9. Apr 2013 13:13

AW: Verknüpften wert anhand der ID ausgeben
 
Ich muß gestehen, daß ich nicht so recht verstehe worauf Du hinaus willst
a)Du verknüpfst Haus mit Bauart
Code:
select Haus.Ort,Bauart.Bauart
from Haus,Bauart
where Haus.ID_Bauart=Bauart.ID(+)
b) Du willst eine Liste aller vorhandenen Bauarten (ohne ID)
Code:
select Bauart from Bauart
Gruß
K-H

Hausmarke 10. Apr 2013 06:34

AW: Verknüpften wert anhand der ID ausgeben
 
im grunde löst die SQL abfrage das problem.

Ich hatte gehofft es gibt eine möglichkeit die Daten in Ihrer abhängigkeit im dataset zu belassen.


besten dank für die Hilfe

mkinzler 10. Apr 2013 06:54

AW: Verknüpften wert anhand der ID ausgeben
 
Zitat:

Zitat von Hausmarke (Beitrag 1210926)
im grunde löst die SQL abfrage das problem.

Ich hatte gehofft es gibt eine möglichkeit die Daten in Ihrer abhängigkeit im dataset zu belassen.


besten dank für die Hilfe

Ich versteh nur Bahnhof

Hausmarke 10. Apr 2013 07:17

AW: Verknüpften wert anhand der ID ausgeben
 
bitte entschuldigt wenn ich mich etwas umständlich ausdrücke.
ich bin gerade dabei mir das alles wieder anzueignen, und es ist dann doch lange her, einiges neu und ich verwende evtl. nicht die korrekten begriffe.

im Grunde habe ich eine DB die über eine IBDatabase -> Datasource -> Dataset eingebunden ist.
Nun konnte ich bei meinem simplen Programm zur Adressverwaltung, ein DBgrid und ein paar DBEdits äußerst simple ansprechen und manipulieren, ohne das Daten aus Ihrer Abhängigkeit zueinander gerissen wurden.
Der nächste schritt ist die DB weiter auszuarbeiten und mit Keys zu versehen.

Ich hatte gehofft das ich über Komponenten die beiden Datasets, einmal die Daten die ausgegeben werden inkl. der ID die auf eine andere Tabelle verweist, und die dazu passenden daten der anderen Tabelle, verknüpfen kann.
Sodass beide datasets in Verbindung stehen, und sich das DBEdit o.ä., den passenden Datensatz zur ID selbst holt.

ich hoffe mein anliegen ist nun besser nachvollziehbar.

im prinzip ist es mit einer SQL abfrage auch schnell gelöst. aber da man ja gerade am anfang der lernphase bei weitem keinen überblick über die komponenten und deren möglichkeiten hat, dachte ich, ich frag mal.

Uwe Raabe 10. Apr 2013 08:36

AW: Verknüpften wert anhand der ID ausgeben
 
Zitat:

Zitat von Hausmarke (Beitrag 1210938)
Ich hatte gehofft das ich über Komponenten die beiden Datasets, einmal die Daten die ausgegeben werden inkl. der ID die auf eine andere Tabelle verweist, und die dazu passenden daten der anderen Tabelle, verknüpfen kann.
Sodass beide datasets in Verbindung stehen, und sich das DBEdit o.ä., den passenden Datensatz zur ID selbst holt.

Eigentlich wiederhole ich mich nur ungern, aber Lookup-Felder sind offenbar genau das, was du suchst. Dazu musst du erst alle benötigten Datasets auf dem Form oder Datenmodul platzieren (z.B. Tab_Haus und Tab_Bauart) und in deinem Haupt-Dataset (Tab_Haus) alle Felder statisch anlegen (Doppel-Click auf das Tab_Haus und dann Strg-F). Dann fügst du ein neues Feld hinzu (Strg-N) und wählst bei Feldtyp "Nachschlagen" aus. Schlüsselfeld wäre z.B. BauartID, Datenmenge Tab_Bauart, Schlüssel wäre dann ID und Ergebnisfeld Bauart.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz