Forum: PC-Programmierung dynamische Fremschlüsseln abfrage in eine Tabelle


von Aeron (Gast)


Lesenswert?

Hallo Zusammen,

Problembeschreibung:

Ich habe eine Tabelle, die mehr als 100 Spalte hat. Ich hole es mir die 
Tabelle dynamisch von der Datenbanken und bau es mir auch das GUI 
entsprechend dynamisch(ja nach dem was einen Datentyp die Spalten haben, 
Data Format,bit,varchar.... ).Das ganze Aufwand ist so gedacht damit der 
User auch Spalten in der Datenbank einlegen kann. Um diese Änderungen zu 
ermöglichen muss auch die Tabelle dynamisch abgefragt und entsprechend 
das GUI gebaut.

Problem ist: die Tabelle könnte mehrere Fremdschlüsseln haben, die ich 
auch dynamisch abfragen möchte (Wie?).

Die Fremdschlüsseln der Tabelle brauche ich um die Bezeichnungen von der 
Muttertabellen

Zb:Fremdschlüssel 1 refreziert auf die TabelleA,
Fremdschlüssel 2 refreziert auf die TabelleB .....

Ich möchte durch die Fremdschlüsseln der Bezeichungen von TabelleA, 
TabelleB,TabelleC......

Durch diese Fremdschlüsseln, hole ich mir die entsprechenden 
Bezeichungen und stecke ich die in JComboBox.

Ich benutze SQLServer für die Datenbanken


Für jeden Tipps bedanke ich mich herzlich.

von Peter II (Gast)


Lesenswert?

dann musst du die systemtabellen abfragen

select * from sys.foreign_keys
select * from sys.sysobjects

Das ganze darf aber nicht jeder user, damit hast du eventuell 
berechtigungsprobleme.

von Aeron (Gast)


Lesenswert?

Hallo und danke für die super schnelle Antwort.
Die befehle, die du mir gegeben hast betrifft die ganze DB.
Ich möchte aber diese Abfrage nach dem Fremdschlüssel spezifisch für 
eine Tabelle .


Danke in voraus

von Peter II (Gast)


Lesenswert?

Aeron schrieb:
> Hallo und danke für die super schnelle Antwort.
> Die befehle, die du mir gegeben hast betrifft die ganze DB.
> Ich möchte aber diese Abfrage nach dem Fremdschlüssel spezifisch für
> eine Tabelle .

dann muss du halt noch ein where hinschreiben. Aus der sysobjects 
bekommt du die ID der tabelle und dann kannst du in foreign_keys die 
keys auslesen. Die Betroffen spalten stehen noch in foreign_key_columns

von Aeron (Gast)


Lesenswert?

Vielen dank es hat super geklappt.
Noch eine Frage bitte.
Jetzt habe ich die Fremdschlüsseln der Tabelle.

Wie hole ich mir durch die Fremdschlüsseln der Bezeichnungen der 
Ursprüngliche Tabelle?



Danke in voraus

von Peter II (Gast)


Lesenswert?

Aeron schrieb:
> Wie hole ich mir durch die Fremdschlüsseln der Bezeichnungen der
> Ursprüngliche Tabelle?

über die referenced_object_id und dann wieder mit sysobjects

von Aeron (Gast)


Lesenswert?

Um die Fremdschlüsseln zu holen habe ich so gemacht :

select * from sys.foreign_keys where parent_object_id=(select id from 
sys.sysobjects where name='Rechnungen')

ich bekomme 20 Fremdschlüsseln.


und jetzt wollte ich durch die Fremdschlüsseln der Bezeichnungen der 
Ursprüngliche Tabelle holen.

In SQL bin noch einen Anfänger ...

Danke

von Peter II (Gast)


Lesenswert?

select
   c2.name as [Column],
   o2.name as RefTable,
   c2.name as RefColumn
from sys.sysobjects o
join sys.foreign_keys f
   on f.parent_object_id = o.id
join sys.sysobjects o2
   on o2.id = f.referenced_object_id
join sys.foreign_key_columns c
   on c.constraint_object_id = f.object_id
join sys.columns c2
   on c2.object_id = c.parent_object_id
   and c2.column_id = c.parent_column_id
join sys.columns c3
   on c3.object_id = c.referenced_object_id
   and c3.column_id = c.referenced_column_id
where
   o.name='Rechnungen'
   and o.type = 'U'

von Aeron (Gast)


Lesenswert?

Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.