保存数据时候的判断不够,用户编号是主键,所以要先判断要保存的数据是否已经存在表中,如果存在则只要更新用户编号之外的字段的数据,如果不存在则要新增一条记录保存整行数据。
Private Sub CommandButton1_Click()
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim sq1 As String
Dim x As Long
x = [a65536].End(xlUp).Row
For i = 2 To x
cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "\db.mdb"
sq1 = "select * from 用户表 WHERE 用户编号=" & Range("a" & i)
rst.Open sq1, cnn, adOpenKeyset, adLockOptimistic
If rst.EOF Then
rst.AddNew
rst.Fields("用户编号") = Range("a" & i)
rst.Fields("姓名") = Range("b" & i)
rst.Fields("年龄") = Range("c" & i)
rst.Fields("基本工资") = Range("d" & i)
rst.Fields("津贴") = Range("e" & i)
rst.Fields("工资合计") = Range("f" & i)
Else
rst.Fields("姓名") = Range("b" & i)
rst.Fields("年龄") = Range("c" & i)
rst.Fields("基本工资") = Range("d" & i)
rst.Fields("津贴") = Range("e" & i)
rst.Fields("工资合计") = Range("f" & i)
End If
rst.Update
cnn.Close
Set cnn = Nothing
Next i
MsgBox "保存成功"
End Sub