Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datentyp einer Variablen ermitteln (https://www.delphipraxis.net/104818-datentyp-einer-variablen-ermitteln.html)

steppo 11. Dez 2007 11:40

Datenbank: MSSQL • Version: 8.0 • Zugriff über: AdoQuery,DataSource,DBGrid

Datentyp einer Variablen ermitteln
 
Hallo zusammen,

wie kann ich den Datentyp einer Variablen ermitteln?

Ich arbeite mit MSSql 8.0.

Die Datenbankabfrage realisiere ich über AdoQuery.
Die Ansicht wird über ein DataSource und ein DBGrid dargestellt.

Gruß Steppo

SirThornberry 11. Dez 2007 12:02

Re: Datentyp einer Variablen ermitteln
 
in welchem zusammenhang benötigst du das? Du legst den Datentyp doch selbst fest, dementsprechend weißt du doch auch welcher Typ es ist :gruebel:

steppo 11. Dez 2007 12:13

Re: Datentyp einer Variablen ermitteln
 
Hallo SirThornberry,

ich hole mir Daten aus einer Sql-Tabelle und importieren diese nach Excel. Anhand des Datentypes sol dann eine Formartierung der Spalte in Excel erfolgen.

Gruß Steppo

DP-Maintenance 11. Dez 2007 12:15

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Datenbanken" verschoben.

SirThornberry 11. Dez 2007 12:17

Re: Datentyp einer Variablen ermitteln
 
ok :) dann fehlen uns noch die Angaben welche Datenbank du verwendest und mit welchen Komponenten du darauf zugreifst. (am besten du editierst den ersten Beitrag und ergänzt die Angaben in den entsprechenden Feldern :-D )

steppo 11. Dez 2007 15:57

Re: Datentyp einer Variablen ermitteln
 
Entschuldigung!

oldmax 12. Dez 2007 06:01

Re: Datentyp einer Variablen ermitteln
 
Hi
Bisher hab ich's mit einer Query-Komponenten gelöst, die über eine
"Select * From ..."-SQL-Anweisung die Tabelle gelesen hat. Danach kann über FieldCount und Fieldnummer der Fieldtype ermittelt werden
z.B.
Delphi-Quellcode:
If MyQuery.Fields[n].FieldType=ftFloat then ... //ftString, ftInteger, ftBoolean, etc
Versuchs mal, vielleicht hilfts
Gruß oldmax

alzaimar 12. Dez 2007 07:05

Re: Datentyp einer Variablen ermitteln
 
Kleiner Nachtrag zum Beitrag von OldMax: Das dauert so bei sehr großen Tabellen ewig, weil unnötigerweise die Daten mit geladen werden.

Um die Feldnamen, -typen und -längen zu erhalten, reicht es, ein 'SELECT * From [Table] WHERE 1=0' zum DBMS zu schicken.

RWarnecke 12. Dez 2007 07:13

Re: Datentyp einer Variablen ermitteln
 
Zitat:

Zitat von oldmax
Hi
Bisher hab ich's mit einer Query-Komponenten gelöst, die über eine
"Select * From ..."-SQL-Anweisung die Tabelle gelesen hat. Danach kann über FieldCount und Fieldnummer der Fieldtype ermittelt werden
z.B.
Delphi-Quellcode:
If MyQuery.Fields[n].FieldType=ftFloat then ... //ftString, ftInteger, ftBoolean, etc
Versuchs mal, vielleicht hilfts
Gruß oldmax

Wäre hier nicht eine Case-Anweisung vorteilhafter ?

oldmax 12. Dez 2007 08:19

Re: Datentyp einer Variablen ermitteln
 
Hi
Zitat:

Wäre hier nicht eine Case-Anweisung vorteilhafter ?
selbstverfreilich.... wenn die ft.. -Konstanten Integer sind, was ich aber jetzt so ohne meine Programmiermaschine nich weiß :oops:
Gruß oldmax

generic 12. Dez 2007 09:12

Re: Datentyp einer Variablen ermitteln
 
Zitat:

Zitat von alzaimar
Kleiner Nachtrag zum Beitrag von OldMax: Das dauert so bei sehr großen Tabellen ewig, weil unnötigerweise die Daten mit geladen werden.

Um die Feldnamen, -typen und -längen zu erhalten, reicht es, ein 'SELECT * From [Table] WHERE 1=0' zum DBMS zu schicken.

bei dem MSSQL geht das noch einfacher ohne where

SQL-Code:
set FMTONLY on
select * from <Table>

RWarnecke 12. Dez 2007 12:14

Re: Datentyp einer Variablen ermitteln
 
Zitat:

Zitat von oldmax
Hi
Zitat:

Wäre hier nicht eine Case-Anweisung vorteilhafter ?
selbstverfreilich.... wenn die ft.. -Konstanten Integer sind, was ich aber jetzt so ohne meine Programmiermaschine nich weiß :oops:
Gruß oldmax

Die ft..-Konstanten sind Integer-Werte.

steppo 10. Jan 2008 16:27

Re: Datentyp einer Variablen ermitteln
 
Recht herzlichen Dank an alle.

gruß steppo

Muetze1 10. Jan 2008 18:44

Re: Datentyp einer Variablen ermitteln
 
Zitat:

Zitat von RWarnecke
Zitat:

Zitat von oldmax
Hi
Zitat:

Wäre hier nicht eine Case-Anweisung vorteilhafter ?
selbstverfreilich.... wenn die ft.. -Konstanten Integer sind, was ich aber jetzt so ohne meine Programmiermaschine nich weiß :oops:
Gruß oldmax

Die ft..-Konstanten sind Integer-Werte.

Eher eine Aufzählung, also eine Enumeration, und die wird immer als Ordinaltyp umgesetzt und ist somit immer mit einer Case Verzweigung nutzbar. Ob die Enumeration aber eine Größe von 4 Bytes (also Integer) hat, liegt an den Compilerparametern.
Delphi-Quellcode:
{$Z4}
bzw.
Delphi-Quellcode:
{$Z+}
würde das entsprechend regeln.

Hinweis: Wenn euer Quellcode vom C++ und Delphi benutzt wird, dann wird die Einstellung in den Projektoptionen im C++ Projekt für den Pascal Compiler im BDS2006 für alle nicht direkt eingebundenen Pascal Quellen ignoriert! Dies ist ein Bug, ihr solltet somit mit solchen direkten Compiler Optionen im Quelltext arbeiten, damit das stimmt.

Wir sind damit deftigst auf dir Schnauze gefallen, da die Pascalquellen trotz der Einstellung im Projekt (und allen Libs, etc) eine Größe von 1 Bytes hatten während der C++ Compiler überall Code für 4 Bytes generierte. Da kam schöner Speicherschrott raus, bzw. die Instanzen waren schneller intern zerschossen als man denken konnte. Nur einer von vielen noch vielen Bugs im Zusammenspiel Delphi <-> C++.

Der Bug wurde noch nicht in der Quality Central eingetragen. Der liegt noch - neben einigen anderen Bugs - auf der ToDo Liste und ich werde ihn noch melden!


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