procedure Tqqq.DataSetProvider1BeforeUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind; var Applied: Boolean);
var
  sisbn:string;
begin
   if (updatekind=ukmodify) then
     begin
        sisbn:=deltads.fieldbyname('isbn').OldValue;
        form1.Edit1.Text:=sisbn;
        
        query1.ParamByName('isbn').AsString:=sisbn;
        form1.Label1.Caption:=query1.Parambyname('isbn').AsString;
        query1.Active:=true;        if (query1.recordcount=1) then
          
          begin
             try
              
               query1.Edit;
               if ((not varisempty(deltads.FieldByName('bookname').NewValue)) and (not varisnull(deltads.FieldByName('bookname').NewValue )))   then
                  query1.FieldByName('bookname').Value:=deltads.fieldbyname('bookname').NewValue;
               if ((not varisempty(deltads.FieldByName('level').NewValue)) and (not varisnull(deltads.FieldByName('level').NewValue )))   then
                  query1.FieldByName('level').Value:=deltads.fieldbyname('level').NewValue;
               query1.Post;
             finally
               query1.Active:=false;
             end;
          end;
     end;
   Applied:=true;
end;

解决方案 »

  1.   

    设置是 datasetprovider1的 [poAllowCommandText] 为true  Resolvetodataset 设为true问题是:上面的代码中form1.Label1.Caption:=query1.Parambyname('isbn').AsString;改为
    from1.label1.caption:='hao'; 来检测程序运行;
    如果放到 query1.ParamByName('isbn').AsString:=sisbn;前可以显示label1可以显示出来hao 
    可是要是放到后面就不可以显示出来了。请教为什么程序不能运行下去,还有就是这个数据跟新不到数据库。
    我可以另为给分 谢谢各位大侠了 急啊 请帮帮我这个菜鸟。
      

  2.   

    是不是query1的设置问题啊 是不是更新的时候 更新到缓存里了吧
    可是它为什么到 query1.ParamByName('isbn').AsString:=sisbn;就运行不下去了啊还请那位大侠给我说说 用数据集更新的问题 多谢给位大侠了