我目前正在开发一个程序,该程序的功能是从 Excel 电子表格中读取数据,用户应该能够编辑库存量并生成仅使用的库存的单独报告,我已经完成了。我的问题发生在尝试更新原始电子表格时,显示随着用户在程序上添加/删除,库存变得更少/更多。
我已经能够在 DBGrid 中显示库存的变化,但在实际的电子表格上没有进行任何更改,因此无论何时重新启动程序,它都会显示不变的数字。(这是使用 DBEdits 完成的)
**我创建了此代码的较小版本,希望使我的问题更清晰,更易于阅读。利用查询尝试更新 Excel 电子表格,电子表格中的第一行的值为 17,程序尝试更改为 5。每当我运行此代码时,我都会收到“更新语句中的语法错误”,我很确定情况并非如此。我玩过代码添加了诸如
ADOQuery.open ADOQuery.Enabled := false ADOQuery.Enabled := true
等等,每个都给我不同的错误。**
代码如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
//Building Connection string as well as recieving filename of excel document
OpenDialog1.Execute;
ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + OpenDialog1.FileName + ';' + 'Extended Properties="Excel 8.0;IMEX=2"';
//Working SQL statement to display records in DBGrid
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM [Sheet1$];');
ADOQuery1.Active := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//Broken code, purpose is to replace the first row value with a new value
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE [Sheet1$]');
ADOQuery1.SQL.Add('SET Value = 5');
ADOQuery1.SQL.Add('WHERE Value = 17;');
ADOQuery1.ExecSQL;
end;
end.
示例电子表格: 上面代码中使用的示例电子表格
在过去的两天里,我对这个问题进行了研究,但不知何故,我似乎一直在寻找答案,询问总是最后的努力。如果您不知道解决方案,我们将不胜感激任何指导,甚至是对其他编程语言/IDE 的建议,这将给我带来更富有成效的结果。如果您能够将一个可能与我当前程序相关的链接到我,我什至会接受 Excel 脚本教程
PS 很抱歉这么长的帖子,对这个网站来说相当新。非常感谢所有帮助。