Entwickler-Ecke

Datenbanken - Komponente, welche die Feldnamen einer Tabelle enthält


tortom1000 - Fr 23.01.09 19:50
Titel: Komponente, welche die Feldnamen einer Tabelle enthält
Hallo,
ich suche so etwas wie eine Combobox, welche die Feldnamen (nicht die Feldinhalte, sondern die Feld-Bezeichnung) einer Tabelle enthält.
Der Zweck ist die Auswahl eines Tabellenfeldes, welche man dann nach Suchbegriffen durchsuchen kann.
Hoffe, es ist verständlich genug...
Gruß
Tortom


MSCH - Sa 24.01.09 13:34

Das ist nicht soooo einfach. dazu musst du erstmal wissen, welche Datenbank du verwendest - je nach dem
kannst du das Repository abfragen.
z.b. in Oracle schaust du dir einfach mal die Tabellen an, die mit all_* anfangen.


SQL-Anweisung
1:
Select column_name from all_Tab_Columns where owner='ich' and Table_name='Tabelle' order by column_name.                    


das Ergebnis kippst du in die Combobox.

:-)Msch


dummzeuch - Sa 24.01.09 21:54
Titel: Re: Komponente, welche die Feldnamen einer Tabelle enthält
user profile icontortom1000 hat folgendes geschrieben Zum zitierten Posting springen:

ich suche so etwas wie eine Combobox, welche die Feldnamen (nicht die Feldinhalte, sondern die Feld-Bezeichnung) einer Tabelle enthält.


Die rxlib hatte eine solche Komponente und da sie in die JVCL aufgenommen wurde, sollte es sie dort auch geben. Ich habe allerdings keine Ahnung, wie sie hiess/heisst.

twm


espen - Mo 26.01.09 14:49

Hallo,

solltest Du via ADO auf die Datenbank zugreifen könnte Dir auch:


Delphi-Quelltext
1:
AdoConnection1.GetFieldNames('Tabellenname', aList)                    


helfen.

Gruss,
Espen


zuma - Mo 26.01.09 14:57

ein Query mit
'Select * from Tabelle where 1 = 0'
öffnet dir nen leeren Query, in dem die Struktur der Tabelle steckt.
ein

Delphi-Quelltext
1:
2:
3:
4:
for i := 0 to Query.Fieldcount-1 do
 showmessage(query.Fields[i].FieldName);
 // query.Fields[i].DataType für den Datentyp
 // query.Fields[i].Size für die Feldlänge (bei Strings)

zeigt dir alle namen der Felder.
So mach ichs zumindest in Interbase


Nersgatt - Mo 26.01.09 15:37

Bei den meisten Datenbanksystemen kann man das Dictonary per SQL abfragen. Daher sollest Du uns verraten, welche Datenbank zu vewendest.
Für Firebird kann man es z.B. so machen:

SQL-Anweisung
1:
select rdb$field_name from rdb$relation_fields where rdb$relation_name = :name order by rdb$field_position                    

Wobei der Parameter "name" mit dem Tabellennamen zu füllen ist.


tortom1000 - Fr 30.01.09 22:16

Hallo,
sorry, ich war ein paar Tage außer Haus, daher antworte ich erst jetzt.
Ich verwende Firebird.
Ich habe jetzt manuell eine "normale" Combobox mit den Werten einer SQL-Abfrage gefüllt.
War letztlich doch weniger Aufwand, als ich angenommen hatte.
Vielen Dank für eure Hilfe.
Tortom