又一个"Grid index out of range"提示......

delphiyesterday 2003-02-08 11:02:01
为何我的Adoquery增加记录有时会出现"Grid index out of range"?何解?
...全文
187 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphiyesterday 2003-02-09
  • 打赏
  • 举报
回复
难道CSDN就没有人会这个问题?
lxpbuaa 2003-02-09
  • 打赏
  • 举报
回复
试试:
DataModule1.adoquery1.DisableControls;
with DataModule1.adoquery1 do
begin
...
end;
DataModule1.adoquery1.EnableControls;

—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
delphiyesterday 2003-02-09
  • 打赏
  • 举报
回复
但为何有时没到10条记录就没事,一超过10条记录就“grid index out of range"?
Wally_wu 2003-02-09
  • 打赏
  • 举报
回复
因为Append方法需要指定索引值,
所以你不妨将你的Coding改成这样
DataModule1.adoquery1.close;
DataModule1.adoquery1.sql.text:='select * from ddxx';
DataModule1.adoquery.open;
with DataModule1.adoquery1 do
begin
last;
id:=fieldbyname('ddid').asinteger;
sql.Text := 'Insert into ddxx(ddid) values(:id)'
Parameters[0].value := id+1;
ExecSQL;
end;
delphiyesterday 2003-02-09
  • 打赏
  • 举报
回复
代码应没错,就好象:
DataModule1.adoquery1.close;
DataModule1.sql.text:='select * from ddxx';
DataModule1.adoquery.open;
with DataModule1.adoquery1 do
begin
last;
id:=fieldbyname('ddid').asinteger;
append;
edit;
fieldbyname('ddid').asinteger:=id+1;
post;
end;

是不是我的DBGRID一定要显视如ddxx表里的所有fields才行?
delphiyesterday 2003-02-08
  • 打赏
  • 举报
回复
DBGrid, 还有些DBEdit等.
sunware 2003-02-08
  • 打赏
  • 举报
回复
用的是DBGrid,还是自己的stringgrid?
delphiyesterday 2003-02-08
  • 打赏
  • 举报
回复
为何没人理我?
分不够可加分呵.

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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