DBGRID读取EXCEL 后刷新的问题,麻烦看看。。谢谢

hwk_email 2008-03-18 02:46:08
实现读取EXCEL的代码:
procedure Tform_getinfo.Button2Click(Sender: TObject);
var
a_cc: TStrings;
ExcelApp: Variant;
begin
if OpenDialog2.Execute then
begin
edit5.Text:=OpenDialog2.FileName;
//Fmdir.FileListBox1.FileName;
{打开保存一次EXCEL文件,为何要保存一次呢?如果是其它程序用第三方控件导出的EXCEL文件,最好做此步,否则容发生错误}
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.WorkBooks.Open(OpenDialog2.FileName);
ExcelApp.ActiveWorkBook.Save;
ExcelApp.Quit;
varclear(ExcelApp);

a_cc :=TStringList.Create;
{ADOConn是数据库连接控件ADOConnection}
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + OpenDialog2.FileName + ';Extended Properties=excel 8.0;Persist Security Info=false';
ADOConnection1.Connected := True;
ADOConnection1.GetTableNames(a_cc);{将EXCEL文件中的表格名单赋值于a_cc变量}
with adoquery1 do
begin
Close;
sql.text:='select 记录序号,寄达局邮编,收件人姓名,收件人地址 from ['+a_cc[0]+']';//得到EXCEL文件中的第一个表格的数据
open;
end;
DBGrid1.Columns[0].Width:=80;
DBGrid1.Columns[1].Width:=80;
DBGrid1.Columns[2].Width:=80;
DBGrid1.Columns[3].Width:=200;
end;
GroupBox1.Visible:=false;
end;
===========================请问我要实现刷新数据应该如何实现。。。
ADOQuery1.Refresh; 提示错误报告:“缺少刷新或更新的键列信息”
在线等,谢谢啦。。。
...全文
90 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwk_email 2008-03-18
  • 打赏
  • 举报
回复
你是说用ADODataSet控件吗?
GDTOPONE 2008-03-18
  • 打赏
  • 举报
回复
为什么不利DTS将EXCEL文件直接导入到数据表中,再进行操作?而要执着于这样,导入数据表后,使用SQL语句操作数据方便得很,你现在用的方法真是食力不讨好!
GDTOPONE 2008-03-18
  • 打赏
  • 举报
回复
1.ADO对象不能直接对EXCEL文件进行操作.(包括增删改),如果有操作,就要用OLE对象来完成.
2.ADOQuery1在OPEN后,你Refresh来Refresh都是先前的SQL数据集,而再次CLOSE,OPEN就不同了.
hwk_email 2008-03-18
  • 打赏
  • 举报
回复
还有别的方法吗?为什么ADOQuery1.Refresh不能用呢?是不是我少了什么条件?
GDTOPONE 2008-03-18
  • 打赏
  • 举报
回复
建议用列表对象!
GDTOPONE 2008-03-18
  • 打赏
  • 举报
回复
另你的程序有BUG:

edit5.Text:=OpenDialog2.FileName;{此句}
{举例:第一次打开1.xls,edit5.Text自然等于1.xls,当你即时第二次要打开1.xls时可以防重复打开,但是如果先打开1.xls,再打开2.xls,再次打开1.xls,你就防不了}
GDTOPONE 2008-03-18
  • 打赏
  • 举报
回复

ADOQuery1.Refresh;
改为:
ADOQuery1.close;
ADOQuery1.open;
hwk_email 2008-03-18
  • 打赏
  • 举报
回复
EXCEL里需要设置这个吗?但是读取是正常的啊
brightyang 2008-03-18
  • 打赏
  • 举报
回复
没主键?

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧