procedure TFormMain.FormCreate(Sender: TObject);
begin
try
At1.Open;
At1.Filtered := False;
At1.Filter := 'State = ''1'' ';
At1.Filtered := True;
except
ShowMessage('连接数据库时发生错误!');
Application.Terminate;
end;end;procedure TFormMain.BitBtn1Click(Sender: TObject);
begin
At1.Edit;
At1.FieldByName('State').AsString := '5';
At1.Post;
end;当运行到At1.Post时报错如下:
Project Project1.exe raised exception class EOleException with Message
'BOF 或 EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。'但是里边确实有记录呀。
begin
try
At1.Open;
At1.Filtered := False;
At1.Filter := 'State = ''1'' ';
At1.Filtered := True;
except
ShowMessage('连接数据库时发生错误!');
Application.Terminate;
end;end;procedure TFormMain.BitBtn1Click(Sender: TObject);
begin
At1.Edit;
At1.FieldByName('State').AsString := '5';
At1.Post;
end;当运行到At1.Post时报错如下:
Project Project1.exe raised exception class EOleException with Message
'BOF 或 EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。'但是里边确实有记录呀。
解决方案 »
- TChart问题
- 为什么speedbutton的enable为false时,看不到上面变灰的图片呢?帮帮忙!
- 怎样将焦点移入DbGird控件中?
- 我用dbgrid连接table,修改数据时怎样控制dbgrid字段长度
- 我有一个图片,在delphi里异常显示
- 斑竹大侠们请问以后我们是不是都可以用.net而不必学delphi啦
- delphi7 怎么调用codesoft8 公式或输出值
- 一个工程里能设置两个mdi主窗口吗? 如果可以怎么设置?!
- 两个小问题,请大家来拿分!!!
- Delphi如何与Linux下的数据库连接?
- 表中有1000条纪录,我要从头到尾每隔5条记录抽取一条记录形成一个查询,如何写sql语句?
- 在DELPHI中如何在程序中调用另一个程序。
begin
if not at1.eof then
begin
At1.Edit;
At1.FieldByName('State').AsString := '5';
At1.Post;
end;
end;没有当前记录的话,你修改的是什么呢?
//////////////////////////////////////////////////////////////////////////
回复人: netdis(我是一条虫) ( ) 信誉:100 2003-05-06 10:34:00 得分:0
如果你用的是delphi 5+ado,赶快升级ado
试过了,还是不行,记录值没有更改。也就是说“State”还是原来的值。
to:jenemery(小熊)
我用的是Delphi6+MsSql2000
1、当你改变state 值的时候,该变的是内存中缓存的值,由于当前纪录的状态是过滤状态,因此该纪录立刻被过滤了。
2、要想你的代码能够运行,你应该在获取数据集的时候包含主健。保证在更新时,数据库能够找到要更新的纪录。
begin
At1.append;
At1.FieldByName('State').AsString := '5';
At1.Post;
end;
At1.Filtered := False;
At1.Edit;
At1.FieldByName('State').AsString := '5';
At1.Post;
At1.First;
At1.Filtered := True;