Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feldtypen in Firebird DB ermitteln (https://www.delphipraxis.net/106063-feldtypen-firebird-db-ermitteln.html)

Artur 4. Jan 2008 15:44

Datenbank: Firebird • Version: 2.0 • Zugriff über: lokal / Netzwerk

Feldtypen in Firebird DB ermitteln
 
Guten Abend,

ich hoffe, Ihr seid alle gut "rübergekommen" :-D

Zu meinem Problemchen:
Ich kämpfe damit, die Feldtypen in einer Firebird Datenbank über meine Programmlogik zu erkennen.
Meine verwendete Programmbibliothek ist FIBplus.

Über pFIBQuery.FieldByName('TEST').IsNummeric(pFIBQuery .FieldByName('TEST').SQLType)

kann ich zwar sehen, ob es ein nummerisches Feld ist, aber bereits das Erkennen eines VarChar geht damit anscheinend nicht mehr, zumindest finde ich es nicht :wall:

Dabei interessiert mich das VarChar und hier besonders auch die Länge des VarChars.

Wie kann ich mehr Informationen zu den Feldern ermitteln?


Grüße,

Artur


P.S. Der Sinn der Sache: Ich bastele einen primitiven Import von Excel-Dateien und will einige Fehler im Vorfeld abfangen und nicht erst auf Exceptions beim Einfügen auflaufen lassen.

Artur 4. Jan 2008 17:04

Re: Feldtypen in Firebird DB ermitteln
 
So, hab jetzt selbst was gefunden und da es anderen auch helfen könnte, stelle ich es mal hier rein:

SQL-Code:

SELECT r.rdb$field_name fieldname, r.rdb$field_source has_domain, f.rdb$computed_blr is_computed, r.rdb$default_source ds ,
       f.rdb$default_source ds1 , f.rdb$field_type type_nb, f.rdb$dimensions, f.rdb$field_length fieldlength,
       t.rdb$type_name type_name
FROM rdb$relation_fields r
JOIN rdb$fields f ON (r.rdb$field_source = f.rdb$field_name )
JOIN rdb$types t ON (t.rdb$type = f.rdb$field_type)
WHERE (r.rdb$relation_name = :tn) AND
      (t.rdb$field_name = 'RDB$FIELD_TYPE')


ORDER BY r.rdb$field_position
Das Schöne: Ist auch mit anderen Komponenten nutzbar, da es ja SQL ist :-)
Setzt aber Firebird voraus (und das es keine Unterschiede zwischen den FB-Versionen gibt).

Schönen Abend,

Artur


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz