我用数据感知控件作了一个页面。该页面调用方法只能插入数据,不能修改数据(没有任何错误代码返回),我感到非常疑惑,会是哪儿出了问题,希望给点提示。
代码如下:
var
  ICustomdisp: ICommSrvDisp;
  OutStrCode: WideString;
  RecStrMark: PCodeRec;
  OutNode: TTreeNode;
begin
  with DataModule_Common.Client_jxxx do
  begin
    if AddTree then
    begin
      try
        ICustomdisp:= ICommSrvDisp(Idispatch(DataModule_Common.SocketConnection1.appserver));
        ICustomdisp.GetBaseCurNO('jx', AddStr, OutStrCode);
      except
        Application.MessageBox('调用远程服务器方法出错!', '提示', MB_ICONWARNING);
        Self.Hide;
        TFam_BaseData(MainMenu_Main.dlFrame).ChildFrame1:=nil;
        Exit;
      end;
      if AddStr='' then
        FieldByName('Parent_code').Clear else
        FieldByName('Parent_code').AsString:= AddStr;
        FieldByName('jx_code').AsString:= OutStrCode;
        FieldByName('jx_name').AsString:= DBEdit1.Text;
        New(RecStrMark);
        RecStrMark^.bm_code:= OutStrCode;
        ContrlFans(False);
        dlDBTreeView1.ControlTree(AddNode, DBEdit1.Text, RecStrMark, 'insert', OutNode);
      try
        Post;
        ApplyUpdates(0);
      except
        Application.MessageBox('更新数据失败!', '提示', MB_ICONWARNING);
        Self.Hide;
        TFam_BaseData(MainMenu_Main.dlFrame).ChildFrame1:=nil;
        Exit;
      end;
    end else
    begin
      FieldByName('jx_name').AsString:= DBEdit1.Text;
      ContrlFans(False);
      dlDBTreeView1.ControlTree(AddNode, DBEdit1.Text, nil , 'edit', OutNode);
      Try
        Post;
        ApplyUpdates(0);
      except
        Application.MessageBox('更新数据失败!', '提示', MB_ICONWARNING);
        Self.Hide;
        TFam_BaseData(MainMenu_Main.dlFrame).ChildFrame1:=nil;
        Exit;
      end;
    end;
  end;
  keybd_event(VK_TAB,0,0,0);
end;

解决方案 »

  1.   

    没有细看你的程序,不过我以前遇到过类似问题。多半是因为上次applyupdate后没有刷新数据,造成数据和数据库不一致而更新失败。
      

  2.   

    问题出现的情况很多,打个比方.我用DOA控件连接Oracle,如果Session的Autocommit缺省为False,那么在客户端修改的内容即使Applyupdate,也不能马上写到数据库里面。别的用户查看的时候,还是原来的数据。如果设置Autocommit=True,那么每一个提交,就及时更新了。
      

  3.   

    有没有错误提示???将ApplyUpdates(0);改为ApplyUpdates(-1);
    ClientDataset有提交时出错的事件,你将他的错误信息显示出来。你用什么数据库?有一些什么类型的字段?