我用类写的一段代码,实现数据输入,在form1的其中一个country的textbox,可以直接在textbox里直接输入,也可以按F9调用另一个查询country的form4,查询后将country的值form1,我发现假如直接在textbox里输入,保存是没问题的,但按F9查询返回得值再保存,他就会提示“实时错误'-2147217887(80040e21)':
多步操作产生错误,请检查每一步状态值。(而我经F9查询出来的值还有另外几个字段(area,aget),保存都无问题)

解决方案 »

  1.   

    Public Sub Save()    Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        
        rs.LockType = adLockOptimistic
        rs.CursorType = adOpenKeyset
        Set rs.ActiveConnection = dfedexconnect.feconect
        rs.Source = "select * " & _
                    "from fedex " & _
                    "where bill_no = " & bill_no
        rs.Open
        
        ' Insert or update?
        If rs.EOF Then
            ' Insert!
            rs.AddNew
            
            rs.Fields("Bill_no") = bill_no
        rs.Fields("odate") = odate
        rs.Fields("Agent") = Agent
        rs.Fields("Mode") = Mode
        rs.Fields("Jianshu") = Jianshu
        rs.Fields("Zhongliang") = Zhongliang
        rs.Fields("area") = Area
        rs.Fields("Country_cn") = Country_Cn
        rs.Fields("Leixing") = LeiXing
        rs.Fields("YingShouJine") = YingShouJine
        rs.Fields("YingFuChengBen") = YingFuChengBen
        rs.Fields("ShiFuChengBen") = ShiFuChengBen
        rs.Fields("YingFuRanYouFei") = YingFuRanYouFei
        If Len(Invoice_id) = 0 Then
        rs.Fields("kaipiao") = 0
        rs.Fields("invoice_id") = Invoice_id
        Else
        rs.Fields("kaipiao") = 1
        rs.Fields("invoice_id") = Invoice_id
        End If
        
        
        rs.Update
        Else
        rs.Fields("agent") = Agent
        rs.Fields("YingShouJine") = YingShouJine
        rs.Fields("YingFuRanYouFei") = YingFuRanYouFei
        rs.Fields("ShiFuChengBen") = ShiFuChengBen
        rs.Fields("GuanLiFei") = GuanLiFei
        rs.Fields("Invoice_id") = Invoice_id
        rs.Fields("Yingfuzhongzhuan") = YingFuZhongZhuan
        rs.Update 
        End If
        
        
        
        rs.Close
        Set rs = Nothing
        
    End Sub
    这段代码是在类模块里的,提示就是rs.Fields("Country_cn") = Country_Cn这一句
      

  2.   

    我搞掂了,只是加了个trim函数,真的好奇怪,看来vb的错误提示真是莫名其妙
      

  3.   

    在VB中有Trim()函数,在SQL中没有Trim()函数,要用RTrim()函数加LTrim()函数来达到目的