【问题标题】:Delphi ADODB Create dbf tableDelphi ADODB 创建 dbf 表
【发布时间】:2014-01-22 18:41:00
【问题描述】:

我必须在我的 Delphi 应用程序中创建 dbf 文件。

对于这种情况,我使用 ADODB。

连接字符串:

const
  ConnStringDBF =
  'Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=%s;';
  //'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=dBASE III;OLE DB Services=-1;Data Source=%s;';
  //'Driver={Microsoft Visual Foxpro Driver};SourceType=DBF;SourceDB=%s;';
  //Driver='Microsoft.ACE.OLEDB.12.0;Data Source=%s;';

和程序(不起作用):

procedure InsertRecordInDBF(file_name: string; DbfRecord: TDbfRecord);
var
  ADOConnDBF  : TADOConnection;
  ADOCommand : TADOCommand;
begin
  ADOConnDBF := TADOConnection.Create(nil);
  ADOConnDBF.ConnectionString := Format(ConnStringDBF, [data_dir]);
  ADOCommand := TADOCommand.Create(nil);
  ADOCommand.Connection := ADOConnDBF;
  ADOCommand.CommandText := 'Create Table ' + file_name + ' ('
                        + 'NUMBER CHAR(11)'
                        + ')'
                        ;
  ADOCommand.Execute;
end;

错误是:

引发异常类 EOleException,消息为“[Microsoft][Драйвер ODBC dBase] Ошибка синтаксиса при определении поля'。

这意味着:从俄语翻译的语法错误。

但这个 CommandText 完美运行:

  ADOCommand.CommandText := 'Create Table ' + file_name + ' ('
                        + 'NUMBER_ CHAR(11)'
                        + ')'
                        ;

字段名称的区别(Number_而不是Number

如何创建带有字段编号的表格?

也许我需要不同的连接字符串?

【问题讨论】:

    标签: delphi ado dbf


    【解决方案1】:

    看来我找到了解决这个问题的方法。正确的语法是:

      ADOCommand.CommandText := 'Create Table ' + file_name + ' ('
                            + '[NUMBER] CHAR(11)'
                            + ')'
                            ;
    

    我在字段名称中添加了 []

    【讨论】:

      【解决方案2】:

      使用具有以下连接字符串的 VFPOLEDB 提供程序:

      Provider=VFPOLEDB.1;Data Source=%s;Password="";Collating Sequence=MACHINE
      

      在这种情况下,您的 CREATE TABLE 子句可以正常工作。

      【讨论】:

      • 感谢您的建议
      猜你喜欢
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      相关资源
      最近更新 更多