出什么错呢,是服务器端更新出的问题还是客户端出错。是用Sqlserver吗,可以用Profiler看一下提交给数据库的Sql操作是否正确。

解决方案 »

  1.   

    用Profiler看了一下,TUpdateSql控件传入的关键字不知怎么搞成了Null,如在ImgQry2相关的控件中的deleteSql为:Delete From MyImg where Number = :Number(其中Number为两表的主关键字),变成了Delete From MyImg where Number = NULL,怪事????就是用Delphi的例子代码也不行
    原:  if Master.UpdatesPending or Detail.UpdatesPending then
        if Master.UpdateStatus = usInserted then
          Database1.ApplyUpdates([Master, Detail])
        else
          Database1.ApplyUpdates([Detail, Master]);
    我的:
       try
         if not Dm.ImgQry2.Eof then
         Begin
            showMessage('Number ='+Dm.ImgQry2.FieldByName('Number').asstring); //显示Number=1
            Dm.ImgQry2.Delete ;
         End;     if not Dm.MsgQry2.Eof then
         Begin
            Dm.MsgQry2.Delete;
         End;
        if DM.MsgQry2.UpdatesPending or Dm.ImgQry2.UpdatesPending then
        if DM.MsgQry2.UpdateStatus = usInserted then
          Dm.ImgQry2.Database.ApplyUpdates([DM.MsgQry2, Dm.ImgQry2])
        else
          Dm.ImgQry2.Database.ApplyUpdates([Dm.ImgQry2, DM.MsgQry2]);   except
          On Exception do
             Begin
                Dm.MsgQry2.CancelUpdates ;
                Dm.ImgQry2.CancelUpdates ;
                Exit;
             End;
       end;主细表的记录不是这么删除吗??
      

  2.   

    不是主细表也出同样的错误:错误信息‘Update  Failed’
      

  3.   

    这是否是BDE配合Sqlserver时本身的问题,按说不该有这么明显的问题,我一般都用ADO,不太清楚这个,试了试真的很奇怪,还就是删除才会出错。例子里用Interbase就没有问题。
    看来和主细目没有什么关系。GZ
      

  4.   

    呵呵,我在删除条件参数前加上OLD_,你这里也就是象:OLD_NUMBER这样试一试。以前没有用过,见笑了。
      

  5.   

    呵呵,我在删除条件参数前加上 OLD_ 就好了,你这里也就是象:OLD_NUMBER这样试一试。以前没有用过,见笑了。
      

  6.   

    lyxinfo() ,
    真行了,你是在那里找到这么做的?