TADOTable+ACCESS增加和删除记录时出错

fengzsz 2005-07-23 09:28:46
问题一:
procedure TForm1.BZInfo_GridDblClick(Sender: TObject);
begin
if zs_bzDataSource.State=dsBrowse then
begin
zs_bzGrid.Options:=[dgEditing,dgTitles,dgIndicator,dgColumnResize,
dgColLines,dgRowLines,dgConfirmDelete,dgCancelOnExit];
//将标准表格设为可以编辑
with zs_bz do
begin
Open;
//选择标准
DisableControls;
try
first;
edit;
AppendRecord([zs_bzname.Caption,zs_bztype.Caption,
zs_bzclass.Caption,zs_bzsn.Caption,zs_bzno.Caption,
zs_bzdate.Caption]);
Post;
Refresh;
Next;
Finally
EnableControls;
end;
end;
end;
//将标准表格设为不能编辑
zs_bzGrid.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,
dgRowLines,dgConfirmDelete,dgCancelOnExit];
end;

我的目的:双击BZInfo_Grid里的一条记录,把该记录添加到表格A并立即显示出来

出错:当表格A连接好我想要的表后双击BZInfo_Grid的记录时出错,提示zs_bz(这是TADOTable)不是处于edit或insert状态

问题二:
procedure TForm1.zs_bzGridDblClick(Sender: TObject);
begin
//删除已选择的标准
with zs_bz do
begin
Edit;
DeleteRecords(arCurrent);
post;
Next;
Refresh;
end;
end;
目的:选中当前表格一条记录后双击删除该记录

出错:当表格中有两条或以上的记录时一切正常,当表格里只有一条记录在删除时提示“Either BOF or EOF is true,or the current record has been deleted.Requested operation requires a current record”。由于初学我知道我的删除代码有问题,但不知道该怎么处理。

请各位大哥帮忙解决,谢谢!
...全文
210 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengzsz 2005-07-26
  • 打赏
  • 举报
回复
谢谢楼上两位帮忙,第二个问题已解决。
第一个问题:运行程序时在BZInfo_Grid里双击会将当前记录添加到zs_bzGrid中,但是还会出现一个出错的信息框,提示zs_bz不是处于EDIT或INSERT模式
yunfeijht 2005-07-26
  • 打赏
  • 举报
回复
1.refresh 换为 Application.ProcessMessages
2.
procedure TForm1.zs_bzGridDblClick(Sender: TObject);
begin
//删除已选择的标准
with zs_bz do
begin
Edit;
DeleteRecords(arCurrent);
if zs_bzGrid.DataSource.DataSet.IsEmpty then
begin
exit;
end;
post;
Next;
Refresh;
end;
end;
hqhhh 2005-07-26
  • 打赏
  • 举报
回复
1.把第一问题中的refresh 换为 Application.ProcessMessages
2.第二问题改为:
procedure TForm1.zs_bzGridDblClick(Sender: TObject);
begin
//删除已选择的标准
if not zs_bzGrid.DataSource.DataSet.IsEmpty then
begin
zs_bzGrid.DataSource.DataSet.Delete;
end;
end;

fengzsz 2005-07-26
  • 打赏
  • 举报
回复
试了N种方法就是出错,而且出错的提示都是同样的,唉。。。。。。。。。。。。。
用zs_bz.DeleteRecords(arAll)又提示“Operation is not allowed in this context”.
这两天已被这个问题弄得直想撞墙,哪位大哥能有解决的好方法啊?不用双击通过别的途径能达到复制和删除的目的就行
bxh2dai 2005-07-26
  • 打赏
  • 举报
回复
up
fengzsz 2005-07-26
  • 打赏
  • 举报
回复
我已经试过在双击表格的代码中把zs_bz重新连接、Open、Edit、AppendRecord,在插入记录后还是会提示zs_bz不处于EDIT或INSERT状态
procedure TForm1.BZInfo_GridDblClick(Sender: TObject);
begin
if ((zs_bzDataSource.State=dsBrowse) and (menu_bzgl.Checked=false)) then
begin
zs_bzGrid.Options:=[dgEditing,dgTitles,dgIndicator,dgColLines,dgRowLines,
dgConfirmDelete,dgCancelOnExit];
//将标准表格设为可以编辑
with zs_bz do
begin
Active:=true;
edit;
DisableControls;
try
InsertRecord([zs_bzname.Caption,zs_bztype.Caption,zs_bzclass.Caption,
zs_bzsn.Caption,zs_bzno.Caption,zs_bzdate.Caption]);
Post;
Application.ProcessMessages;
first;
Finally
EnableControls;
end;
end;
end;
//将标准器具表格设为不能编辑
zs_bzGrid.Options:=[dgTitles,dgIndicator,dgColLines,dgRowLines,
dgConfirmDelete,dgCancelOnExit];
end;
cumtbwxj 2005-07-26
  • 打赏
  • 举报
回复
先在双击时把zs_bzGrid.avtive :=true再添加试试
fengzsz 2005-07-24
  • 打赏
  • 举报
回复
Q1: 用到Append就不用edit了


Q2: 把Edit删了试试。我删一条记录没用edit就没错,用了就有错


删了edit还是出错,我之前就已试过了,在删除记录的代码里把NEXT去掉后也出错,把NEXT改成FIRST也不行。

lijinghe1 2005-07-23
  • 打赏
  • 举报
回复
厉害,已经可以了
lijinghe1 2005-07-23
  • 打赏
  • 举报
回复
delete 之后就是eof,再next当然出错了
hcnsoft 2005-07-23
  • 打赏
  • 举报
回复
呵呵,这个我遇到过

Q1: 用到Append就不用edit了

Q2: 把Edit删了试试。我删一条记录没用edit就没错,用了就有错

这种问题我经常遇到,不知道这样可以不,以前我反复试了好多次才得到这个理论
lxh00789 2005-07-23
  • 打赏
  • 举报
回复
1.设置GRID的属性,2.升级DELPHI的ADO
fengzsz 2005-07-23
  • 打赏
  • 举报
回复
我用的D7+WIN2000SP4
newyj 2005-07-23
  • 打赏
  • 举报
回复
难道你在用delphi5?Either BOF or EOF is true,or the current record has been deleted.Requested operation requires a current record”。
delphi5要升级才能解决

2,497

社区成员

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

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