请问下面几句代码如果访问本地SQL服务器则一切正常,一旦访问远程服务器则出错,请问这是为什么,多谢了
  With frmDatas.AdoCards do
  Begin
    frmDatas.AdoConn.BeginTrans ;
    Try  //如果变动
      if (frmCards.sBianDong=IntToStr(FieldByName('TId').AsInteger)+FieldByName('Nos').AsString) then
        Begin
          frmDatas.QueryExec(frmDatas.AdoQRUser,'Insert Into CardsChange Select * from Cards10 Where CAST(Tid AS VARCHAR(10))+NOS='+QuotedStr(sBianDong) );  //插入历史记录到变动表 //审核时间是唯一的,因为每次审核,只能变动一次
          frmDatas.QueryExec(frmDatas.AdoQRUser,'Update CardsChange SET MEMO='+QuotedStr(DateTimeToStr(Date)+P_User)+'+ISNULL(MEMO,'''') Where CAST(Tid AS VARCHAR(10))+NOS='+QuotedStr(sBianDong)+' and CheckDate='''+DateTimeToStr(FieldByName('CheckDate').AsDateTime)+'''' );  //在变动表里更新当前插入的记录的备注(更新人+时间)
          if not(state in [dsEdit,dsInsert]) then Edit;
          if NOT VarIsNull(FieldByName('Dept').OldValue)  then FieldByName('yDept').AsString:=FieldByName('Dept').OldValue;
          if NOT VarIsNull(FieldByName('Users').OldValue) then FieldByName('yUsers').AsString:=FieldByName('Users').OldValue;
          FieldByName('EditDate').AsDateTime:=Date;
          FieldByName('ChangeDate').AsDateTime:=Date;
          FieldByName('BodState').AsInteger:=7;
        end;      if FieldByName('NewUser').AsString='' then
      Begin
        if not(state in [dsEdit,dsInsert]) then  Edit;
        FieldByName('NewUser').AsString:=P_User;
      end;
      Post;
      frmDatas.AdoConn.CommitTrans ;
      Refresh;
      if frmCards.sBianDong=IntToStr(FieldByName('TId').AsInteger)+FieldByName('Nos').AsString then
         MessageBox(0,'变动数据成功','提示',MB_ICONINFORMATION+MB_OK);
      frmCards.sBianDong:='';
      SetBtnState(THREE_VIEW);
    Except
      MessageBox(0,'数据保存失败,请检查数据。','提示',MB_ICONINFORMATION+MB_OK);
      frmDatas.AdoConn.RollbackTrans ;
    End;
  end;end;