access数据库,多次执行update后,有时候update成功,有时候update失败,不知道为什么UpdateTrackSql := 'UPDATE INVOICE_TRACK SET NEW_ITEM_ID = ' + id +'  WHERE CORP_CODE =''' + DataContainer.CorpCode + ''' AND NEW_SALE_CODE=''' + NewSaleCds +'''';
BaseComDealDM.publicSqlExe(InvoiceInputQry, UpdateTrackSql, RtnFlag,RtnMsg);function TBaseComDealDM.publicSqlExe(PublicQryTemp: TADOQuery; sql: string; var
  RtnFlag:boolean; var RtnMsg: string): boolean;
begin
 RtnFlag:=TRUE;
 if (not DataContainer.ADOConnection.Connected) then 
  DataContainer.ADOConnection.Open('', '');
  PublicQryTemp.SQL.Clear;
  PublicQryTemp.SQL.Add(sql);
 try
  PublicQryTemp.ExecSQL;
 except
  RtnFlag := false;
  RtnMsg := RtnMsg + '##' + '[错误]:执行语句' + sql + '时发生错误';
 end;
  publicSqlExe := RtnFlag;
end;

解决方案 »

  1.   


    try
      PublicQryTemp.ExecSQL;
     except
      RtnFlag := false;
      RtnMsg := RtnMsg + '##' + '[错误]:执行语句' + sql + '时发生错误';
     end;如果是except出的错误, 检查这几项:
    1 sql语句是否正确, 可以在查询分析器中直接执行验证
    2 PublicQryTemp的conn连接是否正确
    3 提交成功后查看数据库中的数据变化是否正确
      

  2.   

    sql是正确的
    PublicQryTemp确实没有conn连接,补充了PublicQryTemp.Connection:=DataContainer.ADOConnection;还是一样的update失败,真是郁闷
      

  3.   

    是否update的频率高了,ADODB来不及updatecursorLocation:clUserClient
    cursorType:    ctStatic
    LockType  :    ltBatchOptimistic