![]() |
adoquery.fielddefs.Items[i].Size nur bei Stringfeldern
Hi,
ich lese mit
Code:
die grösse der Felder aus. Das klappt auch wunderbar, leider aber nur bei Stringfeldern.
adoquery.fielddefs.Items[i].Size
Da ich aber auch herausfinden möchte, ob ein Feld ein SmallINt oder IntegerFeld ist, brauche ich auch diese Information, der oben gepostete code gibt dabei aber immer 0 zurück. Warum, bzw wie bekomme ich doch die Grösse heraus ? (Ich weiss, ich könnte auch mit
Code:
die Bezeichnung herausbekommen, und das obrige Problem lösen, falls es aber eine Lösung mit size geben würde, wäre das für mich sehr viel komfortabler) adoquery.FieldDefs.Items[i].FieldClass.ClassName Dank und Gruß lkz633 |
Hi
Das Auslesen der Grosse aus Items funktioniert nicht. Delphi stellt diese Information nur ungenügend zur Verfügung. Wenn man die genauen Angaben haben möchte, muss man auf RecordSet zugreifen.
Code:
Das funktioniert aber auch nicht bei alle Typen korrekt und ist je nach Datenbank/DBServer unterschiedlich. Zum Beispiel wird ein Numeric(10) mit 19 zurück gegeben. Ich habe nicht herausgefunden warum das so ist. Auf den meisten DBServern kannst Du aber auf die System-Tabellen zugreifen, um die korrekten Grössen zu erhalten.
for xInd := 0 to qSelForFields.FieldCount -1 do
begin xName := qSelForFields.Fields[xInd].FieldName; xAdoId := qSelForFields.Recordset.Fields.Item[xInd].Type_; xSize := qSelForFields.Recordset.Fields.Item[xInd].NumericScale; if (qSelForFields.Fields[xInd].Size > 0) and (xSize < 255) then begin xAdoId := qSelForFields.Recordset.Fields.Item[xInd].Precision; xSizeStr := IntToStr(xAdoId)+', '+IntToStr(xSize); // bei z.B. Numeric(12, 4) oder Decimal(12, 4) end else begin xAdoId := qSelForFields.Recordset.Fields.Item[xInd].DefinedSize; xSizeStr := IntToStr(xAdoId); end; end; Gruss Xaver |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz