0
基本上我在這裏有一些代碼更新來自Excel的Access,它通過查看'監視ID'是否等於基本上是監視ID的'IngID'來做到這一點。所以基本上如果它們匹配,代碼需要將更新標記爲「TOWN」的訪問表中的字段。從Excel更新訪問表 - 說當前記錄已被刪除?
但是,當我這樣做時,我得到一個錯誤在.Fields("TOWN") = Cells(lngRow, 74).Value
。錯誤是:「運行時錯誤3021 BOF或EOF爲True,或當前記錄已被刪除,請求的操作需要當前記錄。」 該記錄確實存在於表格中,並且我嘗試過使用多個記錄,但它似乎仍然無法正常工作,有什麼想法?
Application.ScreenUpdating = False ' Prevents screen refreshing.
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim fld As ADODB.Field
Dim MyConn
Dim lngRow As Long
Dim lngID, LR, Upd
Dim sSQL As String
LR = Range("BN" & Rows.Count).End(xlUp).Row
Upd = LR - 1
lngRow = 1
Do While lngRow <= LR
lngID = Cells(lngRow, 66).Value
sSQL = "SELECT * FROM Tbl_Primary WHERE MonitorID = '" & lngID & "'"
Set cnn = New ADODB.Connection
MyConn = "Provider = Microsoft.ACE.OLEDB.12.0;" & _
"Data Source =location of access file.mdb"
With cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open MyConn
End With
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseServer
rst.Open sSQL, ActiveConnection:=cnn, _
CursorType:=adOpenKeyset, LockType:=adLockOptimistic
'Load all records from Excel to Access.
With rst
'
.Fields("TOWN") = Cells(lngRow, 74).Value
rst.Update
End With
' Close the connection
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
lngRow = lngRow + 1
Loop
MsgBox "Update Complete"
這就是問題,它不是一個數字,儘管每個都是唯一的,它在最後還包括字母,所以例如它可能是16SC作爲ID。 – Calum
好吧,所以你將變量'lngID'命名爲「Long」,以免造成最大的混淆? :-) @Calum – Andre
哈哈對不起,我已經嘗試了字符串,也沒有運氣。 :(@ Andre451 – Calum