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:
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;
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.
Gruss
Xaver