![]() |
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 |
AW: Verknüpften wert anhand der ID ausgeben
|
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. |
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:
Gruß K-H
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 |
AW: Verknüpften wert anhand der ID ausgeben
Danke für den Vorschlag.
Meine Tabelle sieht dabei etwas einfacher aus, als beispiel: Tab_Haus:
Tab_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. |
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:
b) Du willst eine Liste aller vorhandenen Bauarten (ohne ID)
select Haus.Ort,Bauart.Bauart
from Haus,Bauart where Haus.ID_Bauart=Bauart.ID(+)
Code:
Gruß
select Bauart from Bauart
K-H |
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 |
AW: Verknüpften wert anhand der ID ausgeben
Zitat:
|
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. |
AW: Verknüpften wert anhand der ID ausgeben
Zitat:
|
AW: Verknüpften wert anhand der ID ausgeben
oh, wer lesen kann ist klar im Vorteil.... :oops:
ich hatte beim lesen deiner 1. antwort "lookup-comboBox" assoziiert, womit ich eine ttable Komponente benötigt hätte, welche ich jedoch nicht nutzen möchte und deshalb nach einen anderen weg gesucht habe. Aber mit den LookUp-Feldern bekomm ich genau die Werte geliefert die ich wollte, danke :thumb: |
AW: Verknüpften wert anhand der ID ausgeben
Du kannst die Lookup-Combo auch mit jedem anderen DataSet verwenden. Die Beispiele verwenden halt oft noch die alten BDE-Komponenten.
|
AW: Verknüpften wert anhand der ID ausgeben
ich hatte für die LookUpComboBox ein separates Dataset erstellt, und wollte dieses in die LookUpCB einbinden, jedoch kommt immer die Fehlermeldung das eine TTable Komponente benötigt wird.
Wäre interessant zu wissen wie man dies umgehen kann bzw. was ich falsch gemacht habe. Momentan bin ich mit den LookUp-Feldern ganz zufrieden. Soweit funktioniert das nun auch mit meinen Ausgabedaten, allerdings suche ich jetzt nach der nächsten Lösung für folgendes Problem: Wenn ich in der Haupttabelle die ID des FK ändere, wird in der Bezugstabelle bei der vorab genutzten ID, der Wert der Neuen ID abgelegt. Dadurch habe ich dann 2 unterschiedliche IDs mit den gleichen Werten in meiner Bezugstabelle. Ich schätze es liegt daran wie ich den Wert übergebe. Nach der auswahl in der ComboBox übergebe ich diesen wie folgt:
Code:
selectedID := integer(DBComboBox.items.Objects[DBComboBox.ItemIndex]);
Form1.Dataset.fieldbyname('BezugsID').asInteger := selectedID; |
AW: Verknüpften wert anhand der ID ausgeben
Sorry, aber aus deinen Ausführungen werde ich nicht ganz schlau. Kannst du vielleicht ein kleines Projekt zusammenstellen, das das Problem zeigt?
|
AW: Verknüpften wert anhand der ID ausgeben
das problem stellt sich wie folgt dar:
die Tabellen Vorher Tab_Haus
Tab_Bauart
Die Tabellen danach nachdem ich für Tab_Haus.ID "2" die Tab_Haus.BauartID von "2" zu "1" geändert habe Tab_Haus
Tab_Bauart
Wie versucht zu erläutern, ändert es mir in der Tab_Bauart den wert der unter der letzten ID gespeichert ist. |
AW: Verknüpften wert anhand der ID ausgeben
ich konnte das Problem nun dadurch lösen, das ich bei im LookUp-Feld unter "ProviderFlags" den Wert für pfInUpdate auf false gesetzt habe.
Dadurch wird das Feld nicht mehr in die Update Anweisungen miteinbezogen, wodurch auch keine Änderungen an der Tab_Bauart vorgenommen werden. Danke für die Hilfestellungen :thumb: Ich werde Versuchen meine nächsten fragen treffender zu formulieren :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 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-2025 by Thomas Breitkreuz