【问题标题】:Error 3021 "No current Record"错误 3021“没有当前记录”
【发布时间】:2017-04-16 20:37:13
【问题描述】:

我有一个位于文件夹中的 Access 文件。该文件夹链接到公司的服务器。这意味着可以通过公司的每一台计算机访问Access文件。

我遇到的问题是,虽然我可以从一台计算机登录访问文件,但当我尝试从另一台计算机登录同一文件时,出现错误“错误 3021,无当前记录” .

这是我的代码。

'Daily Material Record Code
sql = "select max(Date_Recorded) from Daily_Material"
Set rst = CurrentDb.OpenRecordset(sql)

If (rst.EOF Or IsNull(rst.Fields(0))) Then
        lastdate = "01/01/1990"
        LastYear = 1990
        LastID = 0
Else
        maxlastdate = rst.Fields(0)
        lastdate = DateValue(rst.Fields(0))
        lasttime = TimeValue(rst.Fields(0))
        LastYear = Year(rst.Fields(0))
        'LastID = Val(Mid(rst!ID, 6))
        sql = "select ID from Daily_Material where Date_Recorded = #" & maxlastdate & "# "
        Set rst = CurrentDb.OpenRecordset(sql)
        LastID = CStr(Val(Mid(rst.Fields(0), 6))) <---- This is where the error happens

End If

就在那里,我很困惑。因为我从服务器登录到同一个文件,不应该没有错误吗?仅当我在另一台计算机上登录访问文件时才会发生此错误。

有谁知道为什么会发生这种情况以及我该如何解决?

【问题讨论】:

  • 您是否阅读了此处有关此相同错误的其他帖子以查看它们是否有帮助?搜索access error 3021
  • 对不起,我已经试过了,我相信我的问题很奇怪,这是我第一次遇到这样的事情。如果它有助于更​​好地描述我的问题,我已经编辑了我的问题。 @KenWhite
  • 您的编辑并未表明任何努力使用两打现有答案中的任何一个来尝试找到解决方案。

标签: sql-server ms-access vba ms-access-2016


【解决方案1】:

您必须检查是否未找到任何记录,并使用您的变量。

另外,只需要调用一次记录集:

sql = "select top 1 ID, Date_Recorded from Daily_Material order by Date_Recorded desc"
Set rst = CurrentDb.OpenRecordset(sql)

lastdate = #01/01/1990#
LastYear = 1990
LastID = 0

If rst.RecordCount > 0 Then
    If Not IsNull(rst.Fields(1).Value) Then
        maxlastdate = rst.Fields(1).Value
        lastdate = DateValue(maxlastdate)
        lasttime = TimeValue(maxlastdate)
        LastYear = Year(maxlastdate)
        LastID = CStr(Val(Mid(rst.Fields(0).Value, 6))) 
    End If
End If
rst.Close

【讨论】:

    猜你喜欢
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2017-11-08
    相关资源
    最近更新 更多