Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Herausbekommen, um welchen Feldtype es sich handelt? (https://www.delphipraxis.net/47996-herausbekommen-um-welchen-feldtype-es-sich-handelt.html)

smart 19. Jun 2005 09:49

Datenbank: ABS • Version: 488 • Zugriff über: Datascore

Herausbekommen, um welchen Feldtype es sich handelt?
 
Wie bekommt man bei einer Tabelle raus, um welchen Feldtype es sich handelt (Interger oder String, usw.)?

smart 20. Jun 2005 09:06

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Hat denn Keiner einen Vorschlag?

marabu 20. Jun 2005 09:13

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Hallo Heike,

keine Ahnung von DataScore, aber ABSQuery.FieldByName('ID').DataType liefert dir die Werte, die in der Online-Hilfe unter TFieldType ausgewiesen werden.

Grüße vom marabu

barf00s 20. Jun 2005 09:15

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
öhm

Delphi-Quellcode:
var
  xTTable: TTable;

case xTTable.Fields[Index].DataType of
  ftCurrency: ;
  ftBlob: ;
  ftGraphic: ;
end;
ein strg+linksklick auf eines der ft* wörter sollte die passende unit öffnen in der alle anderen typen definiert sind, damit du weist welche datentypen es noch gibt


ich hoffe das taugt was ;)

smart 20. Jun 2005 09:29

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Zitat:

Zitat von marabu
Hallo Heike,

keine Ahnung von DataScore, aber ABSQuery.FieldByName('ID').DataType liefert dir die Werte, die in der Online-Hilfe unter TFieldType ausgewiesen werden.

Grüße vom marabu

Vielen Dank, marabu.
Das hilft mir schon weiter. Nur wie bekomme ich das Angezeigt?
Delphi-Quellcode:
Edit1.Text := ABSQuery.FieldByName('ID').DataType;
geht nicht! Da bekomme ich eine Fehlermeldung "Inkompatiebele Typen..".

smart 20. Jun 2005 09:32

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Zitat:

Zitat von barf00s
öhm

Delphi-Quellcode:
var
  xTTable: TTable;

case xTTable.Fields[Index].DataType of
  ftCurrency: ;
  ftBlob: ;
  ftGraphic: ;
end;
ein strg+linksklick auf eines der ft* wörter sollte die passende unit öffnen in der alle anderen typen definiert sind, damit du weist welche datentypen es noch gibt


ich hoffe das taugt was ;)

Ja, alles Klaro, damit komme ich zurecht. Vielen Dank.

Heike.

NicoDE 20. Jun 2005 09:41

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Zitat:

Zitat von smart
Nur wie bekomme ich das Angezeigt?
Delphi-Quellcode:
Edit1.Text := ABSQuery.FieldByName('ID').DataType;
geht nicht! Da bekomme ich eine Fehlermeldung "Inkompatiebele Typen..".

Um eine Aufzählung in einen String zu konvertieren, könnte man die Funktion GetEnumValue verwenden (Beispiele gibt's sicher genug im Forum).

ps@marabu: stimmt, warum kompliziert wenn's einfach geht ;)

marabu 20. Jun 2005 10:01

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Zitat:

Zitat von smart
Nur wie bekomme ich das Angezeigt?

Delphi-Quellcode:
Edit1.Text := DB.FieldTypeNames[ABSQuery.FieldByName('ID').DataType];
marabu

Sharky 20. Jun 2005 10:35

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Hai Heike,

bei der ABS-DB ist sogar eine Funktion dabei welche dir den ABS-Feldtyp als String ausgibt.
Ich bin zur Zeit leider nicht zu Hause. Ich habe das ganze nämlich gerade selber gebraucht um mir aus einer ABSTable einen Delphi-Record mit einer Variablen pro Spalte zu erzeugen.

Ich kann dir das heute abend mal rüber geben. Oder Du schaust Dir mal den quellcode des DBManagers an der ja bei der ABS-DB dabei ist ;-)

[Edit]Hier mal ein Code der die Feldtypen einfach in ein Memo schreibt[/edit]
Delphi-Quellcode:
uses
  ABSConverts;

procedure TForm1.Button1Click(Sender: TObject);
var
  feldname : string;
  feldtyp : string;
begin
  Memo1.Clear;
  for ndx := 0 to Pred(ABSTable1.FieldCount) do
  begin
    feldname := ABSTable1.AdvFieldDefs[ndx].Name
    feldtyp := AftToStr(ABSTable1.AdvFieldDefs[ndx].DataType);
    Memo1.Lines.add (feldname + ' - ' + feldtyp);
  end;
end;

smart 21. Jun 2005 08:19

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Zitat:

Zitat von Sharky
Hai Heike,

bei der ABS-DB ist sogar eine Funktion dabei welche dir den ABS-Feldtyp als String ausgibt.
Ich bin zur Zeit leider nicht zu Hause. Ich habe das ganze nämlich gerade selber gebraucht um mir aus einer ABSTable einen Delphi-Record mit einer Variablen pro Spalte zu erzeugen.
Ich kann dir das heute abend mal rüber geben. Oder Du schaust Dir mal den quellcode des DBManagers an der ja bei der ABS-DB dabei ist ;-)

Vielen Dank. Haut hin.
Delphi-Quellcode:
uses
  ABSConverts;
Wie bis Du darauf gekommen? Ich habe es das ganze Wochenende versucht, ohne Erfolg! Wie kommt man auf sowas?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  feldname : string;
  feldtyp : string;
begin
  Memo1.Clear;
  for ndx := 0 to Pred(ABSTable1.FieldCount) do
  begin
    feldname := ABSTable1.AdvFieldDefs[ndx].Name
    feldtyp := AftToStr(ABSTable1.AdvFieldDefs[ndx].DataType);
    Memo1.Lines.add (feldname + ' - ' + feldtyp);
  end;
end;
Das kann ich nachvollziehen! Bis Du ABSExperte?

Vielen Dank auch an alle Anderen!

Sharky 21. Jun 2005 08:26

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Zitat:

Zitat von smart
... Wie bis Du darauf gekommen? Ich habe es das ganze Wochenende versucht, ohne Erfolg! Wie kommt man auf sowas?

Eigentlich ganz einfach ;-)
Ich habe mir den Quellcode des ABS-DBManagers angesehen und geschaut wie die das machen. Dabei habe ich die Funktion AftToStr gesehen. Jetzt bin ich einfach in meiner IDE mit dem Cursor über die Funktion gegangen und Delphi hat mir angezeigt in welcher Unit sie deklariert ist.

Zitat:

Bis Du ABSExperte?
Das würde ich nicht sagen. Aber da ich sie zur Zeit selber gerne verwende (für meine Buchverwaltung) habe ich mir halt einmal alles genau angesehen. Leider sind diese Funktionen ja nirgends dokumentiert. Ich werde den Herstellern aber heute ein iMehl schreiben und sie nach einer Liste aller Funktionen fragen.[/quote]

smart 21. Jun 2005 08:41

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Zitat:

Zitat von Sharky
Eigentlich ganz einfach ;-)
Ich habe mir den Quellcode des ABS-DBManagers angesehen und geschaut wie die das machen. Dabei habe ich die Funktion AftToStr gesehen. Jetzt bin ich einfach in meiner IDE mit dem Cursor über die Funktion gegangen und Delphi hat mir angezeigt in welcher Unit sie deklariert ist.

Das habe ich schon oft gelesen, aber bei mir klappt das nicht. Auch in den Einstellungen habe ich keine Möglichkeit gefunden das ein zu stellen. Ist das abhängig von der Delphiversion?

Zitat:

Zitat von Sharky
Ich werde den Herstellern aber heute ein iMehl schreiben und sie nach einer Liste aller Funktionen fragen.

Wenn Du eine Liste bekommen solltest, würdest Du so freundlich sein die zu Verfügung stellen?

mschaefer 21. Jun 2005 09:02

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Moin, moin,

dass Delphi gleich die Unit mit anzeigt, bei Cursor über Funktion, das kenne ich auch noch nicht (D6). Allerdings kannst Du die Strg-Taste drücken und dann mit dem Mousecursor über die Funktion gehen. Die wird dann als Link hervorgehoben. Clickst Du dann springt die IDE zur Funktion und Unit wo diese deklariert ist. Es ist schon länger her, meine aber dass dies auch bei D5 geht.

Grüße // Martin

smart 21. Jun 2005 09:04

Re: Herausbekommen, um welchen Feldtype es sich handelt?
 
Zitat:

Zitat von mschaefer
Moin, moin,

dass Delphi gleich die Unit mit anzeigt, bei Cursor über Funktion, das kenne ich auch noch nicht (D6). Allerdings kannst Du die Strg-Taste drücken und dann mit dem Mousecursor über die Funktion gehen. Die wird dann als Link hervorgehoben. Clickst Du dann springt die IDE zur Funktion und Unit wo diese deklariert ist. Es ist schon länger her, meine aber dass dies auch bei D5 geht.

Grüße // Martin

Hast Rech! Kannte ich noch nicht. Vielen Dank, für den nützlichen Tipp.

Heike.


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