我在EXCEL编辑数据, 遇到需要特别记录的数据需要编辑一些字段, 并更新到ACCESS里头的一个表中
更新我会调用UDPTOAC过程, 这个过程里头目的是要循环的对所有选定的记录(不包括隐藏的), 更新到 ACCESS里头
PopulateOneField这个函数是根据指定行号的ID来更新某一条记录的(所有记录都是唯一的)
但问题是: 我发现 EXCEL里头选择一行可以更新, 但选择多行会将所有更新的内容变成 第一行的内容, 奇怪, 郁闷...谁帮忙看看 谢谢!
Sub UdpToAC()
Dim isok
isok = MsgBox("继续将更新ACCESS内容, 请确认!" & Now, vbYesNo)
If isok <> vbYes Then Exit Sub
Dim iRow, irow1, irow2
irow1 = Selection.Row
irow2 = Selection.Row + Selection.Rows.Count - 1
'选定行更新
For iRow = irow1 To irow2
'隐藏的行不更新
If Cells(iRow, 1).EntireRow.Hidden <> True Then
Call PopulateOneField(iRow)
End If
Next
End Sub
PopulateOneField 函数就更新某条记录对应的字段, 是这样的
Function PopulateOneField(iRow)
Dim cnn As ADODB.Connection
Dim MyConn
Dim rst As ADODB.Recordset
Dim i As Long, j As Long
Dim Rw As Long
Dim sSQL As String
Dim updColumnStr, arrstr
Rw = Range("A2").End(xlDown).Row
Set cnn = New ADODB.Connection
MyConn = TARGET_DB
With cnn
.Provider = ACC2007LinkFile
.Open MyConn
End With
'//****更新特定字段所对应的列号***
'
updColumnStr = "25,70,24,26,27,31,69"
'
'
'
arrstr = Split(updColumnStr, ",")
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseServer
'更新表中选定单元格所在行记录里的某字段
sSQL = "SELECT [f25],[f70],[f24],[f26],[f27],[f31],[f69] FROM [基础数据档] WHERE 零件件号 = """ & Cells(iRow, 1).Value & """"
rst.Open Source:=sSQL, ActiveConnection:=cnn, _
CursorType:=1, LockType:=3
For i = 0 To UBound(arrstr)
If arrstr(i) <> "" Then
rst(Cells(1, arrstr(i) / 1).Value) = Cells(ActiveCell.Row, arrstr(i) / 1).Value
End If
Next
rst.Update
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
End Function
谁帮忙看看, 为何不能连续更新, 只能一条一条更新呢?