没法贴图上来,大家帮我看看,在调试中if 条件语句中的.EOF条件都为false 了,为什么还执行了then下面的语句(从.AddNew到.update的语句都执行了,本来是想.EOF为false时不执行这个then后面的语句的),小弟纳闷啊,纠结了半天~~求救!
 Adodc1.Recordset.MoveFirst
    .Find "易损件编号=  '" & Bian1 & "' ", , , 1
      If .EOF Then   '如果没有找到,就新增一条使用记录
        .AddNew
        .Fields("易损件名称") = Trim(Text1.Text)
        .Fields("易损件序号") = Left(Trim(Frame1.Caption), 1)
        .Fields("型号规格") = Trim(Text2.Text)
        .Fields("生产厂家") = Trim(Text3.Text)
        .Fields("压缩机编号") = Trim(Text5.Text)
        .Fields("元件单价") = Val(Trim(Text8.Text))
        .Fields("理论平均寿命(h)") = Val(Trim(Text9.Text))
        .Fields("现役元件安装日期") = DTPicker1
        .Fields("易损件库存(使用)量统计") = Val(Trim(Text7.Text))
        .Fields("实际平均寿命(h)") = Val(Trim(Text4.Text))
        .Fields("易损件编号") = Left(Frame1.Caption, 1) & "-" & Mid(Trim(Text5), 4) & "-" & Right(Frame1.Caption, 1)
        .Update
         Adodc1.Refresh
                 '无论更新一条使用记录,还是增加一条使用记录,库存量都得减少相应的量
        .Find "易损件编号=  '" & Left(Frame1.Caption, 1) & "-" & 0 & "-" & Right(Frame1.Caption, 1) & "' ", , , 1
         Bian = Left(Frame1.Caption, 1) & "-" & 0 & "-" & Right(Frame1.Caption, 1)
         n = Str(Val(Text6) - Val(Text7))
         stsql1 = "update ysjgl set 易损件库存(使用)量统计=" + n + " where 易损件编号='" + Bian + "'"
         cnn1.Execute (stsql1)
         .Update
         Adodc1.Refresh
         Y = MsgBox("新增使用成功!", , "系统提示")
         If Y = vbOK Then Unload Me: main_ysjkccx.Show
       End If

解决方案 »

  1.   

    去掉Adodc1.Recordset.MoveFirst
    若有问题,.EOF 改为.RecordCount=0试试
      

  2.   

    断点debug一下,按理说都是false不应该执行了
      

  3.   

    .Find "易损件编号= '" & Bian1 & "' ", , , 1 '会不会是这句查询有问题
    '在这个位置看下.EOF
    MSGBOX .EOF
    If .EOF Then '如果没有找到,就新增一条使用记录
      

  4.   

    用find时,应该不是.eof才对,可以看看F1
      

  5.   

    find方法搜索记录,存在则记录集位置在找到的记录上,不存在则位置在记录集的末尾,注意是末尾不是末尾之后,所以只要被搜索的recordset本身有记录,不可能.eof吧...
    如果要在recrodset中搜索,那就用filter属性返回一个新的recordset判断其.eof....
    建议可能的情况下,直接用select语句查询...
      

  6.   

    查了一下AbsolutePosition属性...
    你可以尝试find方法以后,用其来判断是不是存在搜索记录:
    if rs.AbsolutePosition=adPosEOF then msgbox "记录不存在"