Autor Beitrag
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 28.12.11 17:20 
Hallo,

ich habe eine Funktion, welche tDataSets aus beliebigen Quellen bekommt und Informationen über dieses Ausgeben soll. Unter anderen auch den Feldtypen. Jetzt habe ich aber das Problem, dass sowohl Char- als auch Varchar-Felder den tDataSet Feldtypen ftString zugewiesen bekommen. Ich würde aber gerne unterscheiden, ob dieses Feld in der darunterliegenden Datenbank ein char oder ein varchar Feld war. Gibt es eine Möglichkeit dies zu tun?

Gruß
Klabautermann
Singlepin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36
Erhaltene Danke: 4

WinXP
Delphi6 MySQL
BeitragVerfasst: Do 29.12.11 15:56 
Hallo Klabautermann,

bei MySQL würde ich den Feldtyp so ermitteln:

ausblenden SQL-Anweisung
1:
SHOW COLUMNS FROM `DB`.`Tabelle` LIKE "Feldname";					


Aber es gibt sicher noch ander Wege, SHOW CREATE TABLE ...
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Do 29.12.11 18:16 
Da nur die Datasets weitergereicht werden, ist ein Zugriff auf die Meta-Daten per SQL sicherlich kein Weg - vor allem, da dies bei jeder DB anders ist.
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 30.12.11 09:45 
Hallo,

leider hat user profile iconbaka0815 recht. Die entsprechende Funktion weiß nichts von den dahinter stehenden Datenbanken und soll es auch nicht wissen, außerdem würde ich sie ungern durch zusätzliche Querys ausbremsen. Ich hatte gehöft, das ich irgendwo in den Innereien von tDataset ein indikator befindet, den ich bisher übersehen habe.

Dennoch danke für den Versuch,
Klabautermann