8

在 Delphi for Win32 中,如何在没有 BDE 的情况下以本机方式读写 dbf 文件?我知道网络上有一些可用的组件,但我从未使用过其中任何一个,所以我不知道该选择哪个(如果有的话)。

4

6 回答 6

18

您可以使用 ADO 访问 DBF 文件

请参阅示例代码(使用TAdoConnectionTAdoDataSet组件)。

var
dbf_folder : string;
begin
  dbf_folder:='c:\bdd';//set your dbf folder location here 
  ADOConnection1.LoginPrompt:=false;
  ADOConnection1.ConnectionString:=Format('Provider=Microsoft.JET.OLEDB.4.0;Data Source=%s;Extended Properties=dBase IV;',[dbf_folder]);
  try
  ADOConnection1.Connected:=True;
  ADODataSet1.CommandText:='Select * from file.dbf'; //make your SQL query using the name of the dbf file
  ADODataSet1.Open;
   while not ADODataSet1.eof do
   begin
   //do your stuff here
   //ADODataSet1.FieldByName('').AsString
   ADODataSet1.Next;
   end;
  except
    on E : Exception do
      ShowMessage(E.Message);
  end;
end;
于 2010-09-26T00:34:55.143 回答
9

当我还在处理 DBF 文件(一些遗留应用程序)时,我使用了 TDBF 。我仍然使用它来维护这些应用程序。它是免费的,有很多功能并且效果很好。

于 2010-09-26T05:55:51.453 回答
2

阿波罗数据库 VCL

于 2010-09-26T02:15:22.827 回答
2

在开始使用 Firebird 之前,我使用了 Software Science 的Topaz多年。它一直是一个优秀的图书馆,有很棒的手册和良好的技术支持。它支持索引,甚至还有一个内存选项。我认为这将是一个不错的选择。

于 2010-09-25T23:32:15.067 回答
2

ADO 对我不起作用,但我设法使用 BDE 打开了我的 dbf 文件:

从数据访问(或 BDE,取决于您的 Delphi 版本)部分,我放置了一个 TDataBase 和 TTable 组件(如果您愿意,可以使用 TQuery)。

通过双击 TDataBase 组件,我打开了设置对话框。用 'db_name' 填充名称字段(名称是任意的),驱动程序名称 = 'STANDARD',参数字段:'PATH=C:\Path\To\DBF_FILES\'。然后我设置 Connected=True。

然后在 TTable 组件中我设置 DatabaseName = 'db_name' - 我在 TDataBase 组件中设置的那个。并且 TableName 属性设置位于指定文件夹中的“DB_FILE.dbf”。活动 = 真。

你知道下一步该做什么

于 2016-08-12T06:19:34.203 回答
0

如果不需要索引,读取 DBF 文件并不难。格式非常简单。固定大小的寄存器后面跟着一个标题。每个寄存器中都有一个标志,指示它是否被删除。我建议寻找一个可以满足您需求的组件。您可以在 Torry 的 Delphi 页面中找到一些。

于 2010-09-25T23:25:29.650 回答