Access 使用 Addnew 的问题,急

Access 使用 addnew 一次性添加3条数据,第一次正常,再次新增时,会将上次输入的一条数据修改掉。


再次加入数据后





有一条数据被莫名其妙修改了,原来的39 被改掉了



代码如下

Private Sub Cmdsave_Click()

On Error GoTo err_cmdsave_click

Dim checkcard As String

' 应用分类编号

Dim i As Integer

Dim kehu As String

Dim bookingnum As Integer

bookingnum = Me.[Combo149]


' 客户编号

Me.[Text151].SetFocus

kehu = Me.[Text151]

Me.[Text153].SetFocus

checkcard = Me.Text153.Value

Dim strtemp As String

Dim rst As ADODB.Recordset

Set rst = New ADODB.Recordset

 

 strtemp = "select * from 订单主要部件信息"

   rst.Open strtemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

   

    For i = 1 To 3

    rst.AddNew

     

    Select Case checkcard

    

  Case "烟道"

     rst("订单ID") = bookingnum

    'rst("订单ID") = DLookup("订单ID", "客户详细信息", "[订单ID]=" & bookingnum)

    rst("客户ID") = DLookup("客户ID", "客户详细信息", "[客户名称]='" & kehu & "'")

    rst("客户名称") = kehu

    rst("预定安装日期") = Me.[Text155]

     

     If i = 1 Then

      rst("序列号") = Me.Combo182.Value

      rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo182.Value & "'")

     ElseIf i = 2 Then

       rst("序列号") = Me.Combo184.Value

       rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo184.Value & "'")

       ElseIf i = 3 Then

        rst("序列号") = Me.Combo186.Value

         rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo186.Value & "'")

      End If

     

  Case "钢制烟囱"

    rst("订单ID") = bookingnum

    rst("客户ID") = DLookup("客户ID", "客户详细信息", "[客户名称]='" & kehu & "'")

    rst("客户名称") = Me.[Text151]

    rst("预定安装日期") = Me.[Text155]

    If i = 1 Then

      rst("序列号") = Me.Combo166.Value

      rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo166.Value & "'")

     ElseIf i = 2 Then

       rst("序列号") = Me.Combo168.Value

       rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo168.Value & "'")

       ElseIf i = 3 Then

        rst("序列号") = Me.Combo170.Value

         rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo170.Value & "'")

      End If

     

     

     

  Case "水泥烟囱"

    rst("订单ID") = bookingnum

    rst("客户ID") = DLookup("客户ID", "客户详细信息", "[客户名称]='" & kehu & "'")

    rst("客户名称") = Me.[Text151]

    rst("预定安装日期") = Me.[Text155]

    If i = 1 Then

      rst("序列号") = Me.Combo93.Value

      rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo93.Value & "'")

     ElseIf i = 2 Then

       rst("序列号") = Me.Combo99.Value

       rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo99.Value & "'")

       ElseIf i = 3 Then

        rst("序列号") = Me.Combo103.Value

         rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo103.Value & "'")

      End If

         

    

  Case "火炬气"

   rst("订单ID") = bookingnum

    rst("客户ID") = DLookup("客户ID", "客户详细信息", "[客户名称]='" & kehu & "'")

    rst("客户名称") = Me.[Text151]

    rst("预定安装日期") = Me.[Text155]

    If i = 1 Then

      rst("序列号") = Me.Combo174.Value

      rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo174.Value & "'")

     ElseIf i = 2 Then

       rst("序列号") = Me.Combo176.Value

       rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo176.Value & "'")

       ElseIf i = 3 Then

        rst("序列号") = Me.Combo178.Value

         rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo178.Value & "'")

      End If

     

    Case "其它"

    rst("订单ID") = bookingnum

    rst("客户ID") = DLookup("客户ID", "客户详细信息", "[客户名称]='" & kehu & "'")

    rst("客户名称") = Me.[Text151]

    rst("预定安装日期") = Me.[Text155]

    If i = 1 Then

      rst("序列号") = Me.Combo198.Value

      rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo198.Value & "'")

     ElseIf i = 2 Then

       rst("序列号") = Me.Combo200.Value

       rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo200.Value & "'")

       ElseIf i = 3 Then

        rst("序列号") = Me.Combo202.Value

         rst("主要部件ID") = DLookup("主要部件ID", "OSI主要部件库存", "[序列号]='" & Me.Combo202.Value & "'")

      End If

   

   End Select

   

  ' rst.MoveLast

   'rst.Requery

   'rst.Save

   rst.Update

   Next

 rst.Close


  Me.Cmdsave.Enabled = False


exit_cmdsave_click:

   Exit Sub

err_cmdsave_click:

   MsgBox Err.Description

   Resume exit_cmdsave_click:

End Sub


兄弟,不要用rst.addnew,用了ado一般都用connection.execute来执行增删改sql语句