Hallo.
Gibt es eine Möglichkeit den Feldtypen einer Tabellenspalte mittels
SQL auszulesen?
Mein Ansatz war nach einiger Suche:
Code:
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = test_db AND COLUMN_NAME = neue_spalte
Aber beim compilieren wird eine Fehlermeldung ausgegeben:
Code:
Exception-Klasse EDatabaseError mit Meldung 'Database file 'INFORMATION_SCHEMA' does not exist'.
Ändere ich das um in
Code:
SELECT DATA_TYPE FROM test_db WHERE COLUMN_NAME = neue_spalte
Gibt es eine andere Fehlermeldung:
Code:
Exception-Klasse EABSException mit Meldung 'Cannot find field DATA_TYPE - Native error: 10305'.
Gibt mir bitte jemand einen Tipp, wie ich als Anfänger in Sachen
SQL das bewerkstelligen kann?
Ich glaube die Lösung gefunden zu haben:
Code:
var
feldtyp : TFieldType;
feldtyp_string : String;
begin
Query.SQL.Text := 'SELECT * From ' + Table_Name + ' WHERE 1 = 0';
Query.Open;
feldtyp :=
Query.Fields[x].DataType;
feldtyp_string := _Query.Fields[x].ToString;
end;
Somit kann ich mit feldtyp oder feldtyp_string weiter arbeiten. x ist ein beliebiges Feld der Tabelle.
Es gibt ein neues Problem.
Die Abfrage führt bei einem ftAutoInc - Feld zu einer ftInteger Rückgabe.
Wie könnte man hier noch eine Unterscheidung der Felder herausfinden?