使用Delphi AdoTable / Grid编辑/更新Excel表

时间:2013-11-26 18:07:35

标签: database excel delphi ado delphi-xe5

我正在尝试使用TADOTable和Grid组件从XE5-Delphi中读取Excel 2000文件。阅读工作正在进行,但是当尝试更改某些字段时会收到:

“用于更新或刷新的关键列信息不足”

尝试更改游标类型,锁定类型,我在论坛中找到的任何内容,都不起作用。大多数建议都是定义一个索引键,但这是Excel,所以一切都没用。

我的代码是:

Begin
  MastTable.FormMast.ADOTableMast.DisableControls;
  MastTable.FormMast.ADOTableMast.Edit;

  for i := 0 to SrcList.Items.Count-1 do
  begin
    MastTable.FormMast.ADOTableMast.First;

    while not MastTable.FormMast.ADOTableMast.EOF do
    begin;

      MastTable.FormMast.ADOTableMast.Edit;

      if MastTable.FormMast.ADOTableMast.FieldByName('FieldNames').Value = SrcList.Items[i] then 
        MastTable.FormMast.ADOTableMast.FieldByName('FieldNames').Value:='Yes'
      else 
        MastTable.FormMast.ADOTableMast.FieldByName('FieldNames').Value:='';

      MastTable.FormMast.ADOTableMast.Post;
      MastTable.FormMast.ADOTableMast.Next;
    end;
  end;

  MastTable.FormMast.ADOTableMast.Refresh;
  MastTable.FormMast.ADOTableMast.EnableControls;
End;

我的连接字符串是:

  

Provider = Microsoft.ACE.OLEDB.12.0; User ID = Admin; Data Source = N:\ DP-DATA \ Lee_County \ LCPA \ DistPropLCPA_Filters.xls; Mode = ReadWrite; Persist Security Info = False; Jet OLEDB:System database =“”; Jet OLEDB:Registry Path =“”; Jet OLEDB:Database Password =“”; Jet OLEDB:Engine Type = 35; Jet OLEDB:Database Locking Mode = 0; Jet OLEDB:Global Partial Bulk Ops = 2; Jet OLEDB:全局批量事务= 1; Jet OLEDB:新数据库密码=“”; Jet OLEDB:创建系统数据库= False; Jet OLEDB:加密数据库= False; Jet OLEDB:不要复制Compact上的Locale = False; Jet OLEDB:Compact没有副本修复= False; Jet OLEDB:SFP = False; Jet OLEDB:支持复杂数据= False; Jet OLEDB:绕过UserInfo验证= False;

使用Windows Vista Ultimate 64位,安装了Microsoft Database Engine 32位。

有人能帮助我吗?


经过三天和66名访客,这似乎是一个棘手的问题。坦率地说,我很惊讶没有人(想要?)帮助我。我强迫自己简化这个问题:可以在XE5-DELPHI中显示一个示例代码,可以读取和写入EXCEL-2000文件吗?不是抱怨,意见,想法,建议!一个完整的功能程序,在XP,VISTA,WIN7 32/64位机器上运行的编译版本?!这真的很难在XE5-DELPHI ????

0 个答案:

没有答案