关于Grid Index Out Of Range 的问题

sleaf 2009-02-16 10:12:53
我在窗体中添加了一个PageContol组件,通过切换PageContol的页面来实现不同数据表的全部记录显示,代码如下
procedure TForm2.PageControl1Change(Sender: TObject);
begin
if pagecontrol1.TabIndex=0 then
begin
datamodule1.ADOQuery2.Close;
with datamodule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from 年度培训计划表 order by 年度, 编号 ASC');
open;
last;
end;
DBGrid1.DataSource:=datamodule1.DataSource1;
DBNavigator1.DataSource:=datamodule1.DataSource1;
end;
if pagecontrol1.TabIndex=1 then
begin
datamodule1.ADOQuery1.Close;
with datamodule1.ADOQuery2 do
begin
close;
sql.Clear;
sql.Add('select * from 计划外培训项目表 order by 编号 ASC');
open;
last;
end;
DBGrid1.DataSource:=datamodule1.DataSource2;
DBNavigator1.DataSource:=datamodule1.DataSource2;
end;
end;
窗体显示时Pagecontrol的Tabindex为0,代码如下:
procedure TForm2.FormShow(Sender: TObject);
begin
dbgrid1.DataSource:=datamodule1.DataSource1;
dbnavigator1.DataSource:=datamodule1.DataSource1;
with datamodule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from 年度培训计划表 order by 年度, 编号 ASC');
open;
last;
end;
end;

然后我又增加了一个按钮,点击时显示表的全部记录,代码如下:
procedure TForm2.QueryAllClick(Sender: TObject);
begin
if pagecontrol1.TabIndex=0 then
begin
datamodule1.ADOQuery2.Close;
with datamodule1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from 年度培训计划表 order by 年度, 编号 ASC');
open;
last;
end;
DBGrid1.DataSource:=datamodule1.DataSource1;
DBNavigator1.DataSource:=datamodule1.DataSource1;
end;
if pagecontrol1.TabIndex=1 then
begin
datamodule1.ADOQuery1.Close;
with datamodule1.ADOQuery2 do
begin
close;
sql.Clear;
sql.Add('select * from 计划外培训项目表 order by 编号 ASC');
open;
last;
end;
DBGrid1.DataSource:=datamodule1.DataSource2;
DBNavigator1.DataSource:=datamodule1.DataSource2;
end;
end;

现在的问题在于,当窗体显示时,我点击该按钮,就会出错,弹出出现异常:Grid index out of range 。
利用F7跟踪调试,发现错误在last这条语句上。

我搞了半天也没弄明白为什么会出错,敬请大家赐教!!!!!!
...全文
828 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WFATAO8708282 2009-02-19
  • 打赏
  • 举报
回复
你在OPEN,可判断是不是EMPTY,如果是就不要LAST,试一下,我碰到过类似的问题。
sleaf 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bdmh 的回复:]
每个last都会出错吗?
数据集是不是有afterscroll0之类的事件,看看里面有没有什么代码问题
[/Quote]

兄弟能否讲详细点?我是初学者,不懂你说的话啊。
bdmh 2009-02-17
  • 打赏
  • 举报
回复
每个last都会出错吗?
数据集是不是有afterscroll0之类的事件,看看里面有没有什么代码问题
sleaf 2009-02-17
  • 打赏
  • 举报
回复
表结构不同,但这没关系吧?
iamduo 2009-02-17
  • 打赏
  • 举报
回复
这种问题我在dev上碰到过。
用BeginUpdate,EndUpdate处理的。
starluck 2009-02-16
  • 打赏
  • 举报
回复
年度培训计划表,计划外培训项目表

这二个表的表结构一样吗?GRID的字段是不是已经静态化了?
sleaf 2009-02-16
  • 打赏
  • 举报
回复
问题补充:不仅如此,而且每次点击DBNavigator上的last按钮时也会出现上述问题

2,507

社区成员

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

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