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语句