Einzelnen Beitrag anzeigen

xbu58

Registriert seit: 10. Dez 2002
Ort: Bäretswil / Schweiz
121 Beiträge
 
Delphi 7 Enterprise
 
#2
  Alt 14. Jan 2003, 05:50
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
  Mit Zitat antworten Zitat