【问题标题】:Update Access table from Excel- says current record has been deleted?从 Excel 更新 Access 表 - 说当前记录已被删除?
【发布时间】:2015-10-15 18:05:30
【问题描述】:

基本上,我在这里有一些代码可以从 Excel 更新 Access,它通过查看“监控 ID”是否等于“IngID”(本质上是监控 ID)来执行此操作。所以基本上如果它们匹配,代码需要更新访问表中标记为“TOWN”的字段。

但是,当我这样做时,.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"

【问题讨论】:

    标签: excel ms-access vba sql-update


    【解决方案1】:

    编辑:这不是问题。

    sSQL = "SELECT * FROM Tbl_Primary WHERE MonitorID = '" & lngID & "'"
    

    如果MonitorID 是一个数字,' 不属于那里,你只需要它们作为字符串。
    所以:

    sSQL = "SELECT * FROM Tbl_Primary WHERE MonitorID = " & lngID
    

    虽然我不确定它是否能解决问题,但遗憾的是 Jet 对这类错误相当宽容。

    【讨论】:

    • 问题在于它不是数字,虽然每个都是唯一的,但它最后也包含字母,因此例如它可能是 16SC 作为 ID。
    • 好的,所以您将变量命名为lngID(如“Long”)以最大程度地混淆? :-) @Calum
    • 哈哈,对不起,我试过作为字符串,也没有运气。 :(@Andre451
    • 尽管如此,请编辑您的问题并将变量命名为strID,这样其他人就不会遇到同样的问题。 @Calum
    • 对不起@Andre451,我很困惑我还没有尝试将它作为一个字符串 - 你知道我会如何改变它吗?简单地更改为StrID 不会解决问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多