procedure TForm1.ADOQtestBeforePost(DataSet: TDataSet);
begin
  if application.MessageBox('是否要保存已更改的数据数据',Pchar(application.Title),MB_YESNO)=IDNO then
  begin
    AdoQtest.Cancel;
  end;
1.这样的话提示 :"无法将NULL插入列,该列不允许为空值,INSERT失败 “2.还有就是 :我想在 TDBgrid控件里面进行修改多条数据后,再给用户进行
批量POST;但是现在我一修改TDBgrid里面的数据, 它就自动保存了, 这样
很不方便用户的操作!请问可以让用户进行多条纪录的修改,再进行批量保存吗 ?

解决方案 »

  1.   


    1. if application.MessageBox('是否要保存已更改的数据数据',Pchar(application.Title),MB_YESNO)=IDNO then
      begin
        abort;
      end;
    2.catch upate
      

  2.   

    if application.MessageBox('是否要保存已更改的数据数据',Pchar(application.Title),MB_YESNO)=IDNO then
      begin
        abort;
      end;
    楼上的这样作它会循环引用的! 只要你的焦点进入TDBgird的时候,由会触发procedure TForm1.ADOQtestBeforePost(DataSet: TDataSet);这个事件
    主要是把 state 设置为浏览状态,应该就没有问题了! 
      

  3.   

    当我在 TDbgrid 后面增加纪录时出现下面这句话,主要是哪些列不为空的,
    才会出现这种情况! “这样的话提示 :"无法将NULL插入列,该列不允许为空值,INSERT失败 “
      

  4.   

    主要是移动记录指针后,前一记录中有不允许空的字段你没有输入值
    if application.MessageBox('是否要保存已更改的数据数据',Pchar(application.Title),MB_YESNO)=IDNO then
      begin
        exit;//退出该过程
      end;
      

  5.   

    你的错误在与 已经进入了post处理过程 再AdoQtest.Cancel;是没有用的 只能通过静态异常abort退出来!2.改ADOQtest的Lock Type 为ltBatchOptimistic 最后要保存的时候要updateBatch