AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fremdschlüssel-Attribute darstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Fremdschlüssel-Attribute darstellen

Ein Thema von barnti · begonnen am 21. Jan 2004 · letzter Beitrag vom 28. Jan 2004
 
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Fremdschlüssel-Attribute darstellen

  Alt 28. Jan 2004, 10:32
Zitat:
Du fragst doch die Felder der Tabelle ab mit

Source:
select * from TabelleA

oder mit
Source:
select Feld1, Feld2, Kunden_Id, FeldXyz from TabelleA

oder etwa nicht?

dann kannst du doch auch gleich abfragen

Source:
select A.Feld1, A.Feld2, A.Kunden_ID, B.Name, B.Nachname
from TabelleA A
inner join Kundentabelle B ON (A.Kunden_ID=B.ID)


Etwas anderes ist das mit dem LokupFeld,
Man kann auch der Query dynamisch zur Laufzeit alle Felder hinzufügen lassen (ist dann als ob man sie im Feld-Editor hinzugefügt hätte) und dann ein solches Lookup-Feld hinzufügen.
Das ist aber etwas Arbeit.

Am einfachsten ist es doch, die Felder aus den entsprechenden Tabellen gleich mit abzufragen (wie oben).
Grüß Dich jlanger!

Ja das klingt zwar nett, aber: Ich möchte meine DB-Oberfläche möglichst dynamisch erzeugen. Soll Heißen beim Start der Anwendung wird für jede Tabelle eine Query erzeugt. Je nach Inhalt der Tabelle soll auch das zugehörige SQL-Statement generiert werden. Z.B.:

Tabelle Kunde->
Select * from Kunde So weit so gut. Damit habe ich dann eine Abrage, die mir alle Felder der Tabelle liefert. Das Dumme ist, das ich für die Darstellung meiner Tabellen jeweils ein DBGrid verwende. Wenn ich nun die Tabellen-Daten darstelle, bekomme ich auch nur die Felder die vorhanden sind.

Du hast Recht: ich könnte das Statement mit einem Join versehen, so dass ich die Daten in meinem Dataset habe. Das ist bei einer dynamischen Erzeugung allerdings nicht so ohne weiteres möglich, denn dafür brauche ich ja die Fremdschlüssel jeder Tabelle, und die zu referenzierenden Werte aus der Detail-Tabelle.

Du hast auch Recht: die dynamische Erzeugung der Lookupfelder ist aufwendig.

Meine bisherige theoretische Lösung sieht wie folgt aus:

Ich benenne in der DB alle Fremdschlüssel nach dem Prinzip: 'Tabellenname'+'_'+'Anzeigename'

Beispiel:

Tabelle Kunde:

Kunde_ID
Kundenname

Tabelle Bestellung

Bestellung_ID
ProduktName
Kunde_ID

=> in der Tabelle "Bestellung" existiert ein Fremschlüssel diesen nenne ich dann: "Kunde_Kundenname".

Wenn ich jetzt im Programm meine Query erzeuge, frage ich mit "Show keys from 'DB-Name'+'.'+'Tabellenname'" die Schlüsselfelder ab. Als Namen bekomme ich dann für die Tabelle "Bestellung": 'Kunde_Kundenname'. Dieses Ergebnis der Abfrage muss ich dann noch trennen in 'TabellenName' und 'FeldName'. Damit habe ich das Lookup.

Mein SQL-Statement ergänzt sich dann:

SQL-Code:
select Bestellung.*,Kunde.KundenName
from Bestellung, Kunde
Alles klar?
Ich sehe keine einfachere Möglichkeit. Vielleicht hast Du ja noch eine Idee!?

Ich freu mich auf Deine Antwort,

Gruß, Barnti

P.S.: Ich habe die Nachricht auch noch einmal zum aktuellen thread gepostet
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 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