繁体   English   中英

导致运行时错误“13”的原因 - 没有当前记录

[英]What causes Run-time error '13' - No Current Record

前言:虽然我在这个错误信息的任一部分分别找到了其他问题和答案(即运行时错误'13' = Type Mismatch OR'No Current Record'主要与错误'3021'相关联),但我没有找到这两部分的错误信息的组合以及这个问题的相应答案。

我有一个连接到 MSSQL 数据库的访问 UI。 至少 18 个月以来,我没有对 Access UI 或数据库进行任何更改,并且一切正常运行,没有任何错误。 这个错误直到现在才出现。

我已恢复到以前版本的 Access,但这并没有修复错误消息。

这是(部分)导致错误的代码,箭头指向调试器所说的问题所在:

 If Not IsNull(Me.cbIngredient) Then
        Set rs = CurrentDb().OpenRecordset("Select * from Recipes where PrepId = " & Me.Id & " and IngredientID = " & Me.cbIngredient, dbOpenDynaset, dbSeeChanges)
        If rs.RecordCount = 1 Then
            Set rs = Nothing
            MsgBox "You already added this ingredient!"
            Exit Sub
        End If

        Set rs = CurrentDb.OpenRecordset("Select u.id, u.uom from ingredients as i inner join uoms as u on i.uom = u.id where i.Id = " & Me.cbIngredient, dbOpenDynaset, dbSeeChanges)
        rs.MoveLast
        baseUomId = rs.Fields(0)
        baseUom = rs.Fields(1)
        If Me.Uom <> baseUomId Then
            Set rs = CurrentDb.OpenRecordset("Select MasterId from uoms where Id = " & Me.Uom, dbOpenDynaset, dbSeeChanges)
            rs.MoveLast
            If IsNull(rs.Fields(0)) Or rs.Fields(0) <> baseUomId Then
                Set rs = Nothing
                MsgBox "Uom should be compatible with " & baseUom
                Exit Sub
            End If
        End If
    Else
        Set rs = CurrentDb().OpenRecordset("Select * from Recipes where MenuId = " & Me.Id & " and PrepID = " & Me.PrepId, dbOpenDynaset, dbSeeChanges)
        If rs.RecordCount = 1 Then
            Set rs = Nothing
            MsgBox "You already added this prep!"
            Exit Sub
        End If
    End If
    Set rs = CurrentDb().OpenRecordset("Recipes", dbOpenDynaset, dbSeeChanges)
    rs.AddNew
    rs.Fields(1) = Me.IngredientType
    rs.Fields(2) = Me.Id
    rs.Fields(3) = Me.cbIngredient
    rs.Fields(4) = Me.PrepId
  >>rs.Fields(5) = Me.Quantity
    rs.Fields(6) = Me.Uom
    rs.Update
    rs.MoveLast
    Me.RecipesForm.Requery
    Me.cbIngredient = Null
    Me.Quantity = Null
    Me.PrepId = Null
    Me.Uom = Null
    Me.IngredientType = Null
    Me.cbIngredient.SetFocus

    Set rs = Nothing

End Sub

如前所述,直到几天前,这件事已经完美运行了 18 个月,所以我的理论是某处发生了变化,我的猜测是它与 Access 有关,因为 SQL 服务器没有更新(但 MS Access 可能是)。

错误行的 SQL 字段类型设置为“FLOAT”,这与我尝试输入的值相对应。

感谢您的帮助和建议。

更新:通过调试器,它实际上最初只显示“类型不匹配”错误,因此“无当前记录”附加错误消息可能是由于第一个错误并同时显示。 仍然不知道为什么会出现类型不匹配错误。

@Andre 有答案,当然是。 MS Access 更新中出现的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM