在循环中执行
  if ado_workin.Locate('order_no', ls_orderno, [loCaseInsensitive]) then
     ....
     ado_workin.AppendRecord...
    ...循环第一次正常通过,第二次就报错
说产生一个"  EOLEException 多步操作产生错误。请检查每一步的状态值 "
我做错了什么,应该怎样才能不出这个错误?

解决方案 »

  1.   

    if ado_workin.Locate('order_no', ls_orderno, [loCaseInsensitive]) then
         ....//你这中间的代码呢?
         ado_workin.AppendRecord...
        ...
      

  2.   

    从出错信息看,你进行了ole操作,不能append
      

  3.   

    中间代码有关系吗?它是执行到那句Locate报错的啊。
    ado_workin.Close ;
    ado_workin.Open;
         
    for i:=1 to ado_1.RecordCount do
      Begin
         ls_orderno  := ado_1.fieldbyName('field1').Asstring;
         ldt_sendtime:= ado_1.fieldbyName('field2').asdatetime;
         ls_datetime := Datetimetostr(ldt_sendtime);     ado_workin.First;
      if ado_workin.Locate('order_no',ls_orderno, [loCaseInsensitive]) then
         Begin //已经有了 做Update
          ado_workin.Edit;
          ado_workin.FieldByName('order_time').asstring:=ls_datetime;
         End
         else  //没有  做 Insert
            ado_workin.AppendRecord([ls_orderno,ls_datetime]);
         
         ado_1.Edit;
         ado_1.FieldByName('field3').AsString:='2';
         ado_1.Next;
      End;
      

  4.   

    “从出错信息看,你进行了ole操作,不能append”,我是到Locate就错了啊,还没有机会Append呢? 而且第一此循环中已经成功了啊“网络数据库不适合用locate” 啥意思? 我是本地Access数据库"加个begin end 试试"加在哪里? 做何用?
      

  5.   

    你的order_no字段是字符型吗?
      

  6.   

    是字符型啊,第一次循环是成功Locate的,第二次循环就出错了
      

  7.   

    ado_workin.Locate('order_no',ls_orderno, [loCaseInsensitive]) 
    →ado_workin.Locate('order_no',ls_orderno, []) 
      

  8.   

    wxlm
    高!! 可是能解释一下为什么吗?