[英]Run-time error 3197 when attempting to update record via DAO recordset
[英]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.