Logo

  DELPHI - FAQ

  Delphi-FAQ | Allgemeine Tipps | Grafik | Datenbanken | VCL | DLL-Programmierung |
 
  Delphi-FAQ | Datenbanken | dBase |
  Struktur auslesen

Als Besonderheit des dBase-Format müssen bei Numeric-Feldern die Weite und Dezimalstellen angegeben werden. Mit Delphi bekommt man diese Definition nicht so einfach zurück. Folgende einfache Komponente ist ein Nachfolger von DataSet. Die Felder Units1 (Weite) und Units2 (Dezimalstellen) enthalten die entsprechenden Informationen.
uses BDE;

type
  TFelderListe = class(TDBDataSet)
  private
    FTableName: string;
  protected
    function CreateHandle: HDBICur; override;
    function GetRecordCount: LongInt; override;
  public
    property TableName: string read FTableName write FTableName;
  end;

{ TFelderListe }

function TFelderListe.CreateHandle: HDBICur;
var
  STableName        : array[0..255] of Char;
begin
  AnsiToNative(DBLocale, FTableName, STableName, SizeOf(STableName));
  Check(DbiOpenFieldList(DBHandle, STableName, nil, false, result));
end;

function TFelderListe.GetRecordCount: LongInt;
begin
  check(dbiGetRecordCount(handle, result));
end;


Beispiel:
procedure TForm1.FormCreate(Sender: TObject);
var
  fl                : TFelderListe;
begin
  fl := TFelderListe.Create(self);
  fl.TableName := 'xxx.dbf';
  fl.Active := true;
  DataSource1.DataSet := FL;
end;




 26.01.2006 © wlsoft www.wlsoft.de