错误3021"没有当前记录"

时间:2016-12-02 02:09:39

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

我有一个位于文件夹中的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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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