Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fields.DataTyp einer Query in einer Showmessage anzeigen lassen (https://www.delphipraxis.net/188616-fields-datatyp-einer-query-einer-showmessage-anzeigen-lassen.html)

juergen 21. Mär 2016 20:32

Datenbank: MSSQL • Version: 2008 • Zugriff über: AnyDac

Fields.DataTyp einer Query in einer Showmessage anzeigen lassen
 
Hallo zusammen,

ich habe von einer Fremdsoftware die Feldnamen bekommen welche ich abfragen "darf". Allerdings nicht die Datentypen. Der Anwender kann sich aus einem Pool der möglichen Spalten diejenigen auswählen die ihn gerade interessieren.
In meinem Code muss ich auf den jeweiligen Datentyp reagieren und unterschiedliche Funktionen anwenden.
Allerdings funktionieren meine DataType-Abfragen nicht. Jetzt wollte ich mir mal den Datentyp anzeigen lassen.

Delphi-Quellcode:
while not AD_Query_1.Eof do begin
  for j := 0 to AD_Query_1.Fields.Count - 1 do begin
    if j = 7 then ShowMessage(AD_Query_1.Fields[j].DataType); // das geht so natürlich nicht, aber wie könnte ich mir den DataType anzeigen lassen?
....
Gibt es hierfür eine Möglichkeit?

Vielen Dank schon mal Vorab!

Sir Rufo 21. Mär 2016 20:33

AW: Fields.DataTyp einer Query in einer Showmessage anzeigen lassen
 
Delphi-Referenz durchsuchenGetEnumName

juergen 21. Mär 2016 21:06

AW: Fields.DataTyp einer Query in einer Showmessage anzeigen lassen
 
Hallo Sir Rufo,

vielen Dank, das scheint es zu sein was ich benötige. :thumb:

Allerdings bekomme ich es nicht ans Laufen, da mir in diesem Bereich die Kenntnisse einfach fehlen.
Ich habe mir das Beispiel aus der Hilfe angeschaut.

Delphi-Quellcode:
Var
Info    : PTypeInfo;
begin
  // 1. Versuch
  Info := System.TypeInfo(AD_Query_1.Fields[j].DataType); // Fehlermeldung: ...E2133 Standardfunktion TYPEINFO erwartet einen Typbezeichner
  ShowMessage(Info^.Name); // Fehlermeldung: ...W1057 Implizite String-Umwandlung von 'ShortString' zu 'string'

  // 2. Versuch
  ShowMessage(TypInfo.GetEnumName(AD_Query_1.Fields[j].DataType) // Fehlermeldung: ...E2010 Inkompatible Typen: 'PTypeInfo' und 'TFieldType'
 
end;
Wie müsste ich das umsetzen? :gruebel:
Vielen Dank!

Sir Rufo 21. Mär 2016 21:13

AW: Fields.DataTyp einer Query in einer Showmessage anzeigen lassen
 
Delphi-Quellcode:
uses
  System.TypInfo;

type
  TEnum = (eOne, eTwo);

ShowMessage( 
  GetEnumName( 
    {TypeInfo: PTypeInfo} TypeInfo( TEnum ),
    {Value: Integer} Ord( eOne ) ) ); // sollte eOne zeigen

juergen 21. Mär 2016 21:40

AW: Fields.DataTyp einer Query in einer Showmessage anzeigen lassen
 
Hallo,

habe es jetzt hinbekommen:

Delphi-Quellcode:
ShowMessage(GetEnumName(TypeInfo(TFieldType), Integer(AD_Query_1.Fields[j].DataType)))
Danke für die Unterstützung!

Rollo62 24. Mär 2016 07:54

AW: Fields.DataTyp einer Query in einer Showmessage anzeigen lassen
 
Funktioniert das auch ?

Ist etwas kürzer aber wohl erst in neueren Delphis vorhanden.

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 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