我正在尝试使用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 ????