在使用ADOQuery删除数据时的处理 [问题点数:100分,结帖人isdxsc]

时间:2021-06-28 15:00:39

在使用ADOQuery删除数据时的,希望在他的事件BeforeDelete进行一些判断,符合要求的进行删除,不符合要求的终止这个删除行为,请问应该用什么语句呢?
还有个比较奇怪的现象也一起请教:DBGrid的Option里,dgConfirmDelete已经设置为False,为什么我每次删除数据时,都要出个对话框询问是否删除呢?
Abort这个不得。

BeforeDelete中写
if A=B then abort;//这个方法在我这测试可行啊,无论是单选还是多选都可以

至于第二个问题,建议您自己查一下是否在Delete前写了提示语句,又或者是在程序用动态设置了ADOQuery的Option,如果还没解决的话,自己新拖一个ADOQuery,对比一下默认设置跟‘出错设置’的不同就知道了

if A=true then
begin
  raise Exception.Create('此条记录不允许删除!');
  abort;
end;

我的ADOQuery与DataSource都是动态创建的,DBGrid是放在窗口的组件,列是动态创建的。。。

先谢谢楼上两位,再测试下。

第二个问题已经解决了,确实是DBNavigator的ConfirmDelete属性问题。

但第一个问题还是存在。
DictionaryQuery.BeforeDelete := DictionaryQueryBeforeDelete;

procedure TFrmDictionary.DictionaryQueryBeforeDelete(DataSet: TDataSet);
begin
  try
    showmessage('Abort');  这个显示
    Abort;
    showmessage('终止');   这个不显示
  except
  end;
end;
但数据依然被删除。这个问题应该和DBGrid的Options设置没有关系的吧。

1、不要在BeforeDelete事件写代码,新建一个删除按纽的click事件中写就不存在这些问题。
  if .....  then adoquery1.delete;

2、我在DBGrid编辑数据时尽量不用它的插入功能和删除功能,只用它的编辑功能,因为插入和删除有时需要一些操作,还是用两个按纽来实现。