database - 使用 Form.Requery 时出现运行时错误 3246
问题描述
我目前正在研究一个作为排队系统工作的访问数据库,该数据库有一个表格,显示客户何时呼叫他们的号码以及在哪个柜台上。为了只让一台计算机显示表单而需要四台计算机来使用数据库,我提出了一个名为“CommandRequest”的子表单,其中包含命令、请求和启用文本框。它的计时器间隔为 2500。在 On Timer 事件中,我让它执行以下操作:
Private Sub Form_Timer()
Dim rst As Recordset
'Dim read As Object
'Set read = CreateObject("sapi.spvoice")
Set rst = CurrentDb.OpenRecordset(Name:="CR_List", Type:=RecordsetTypeEnum.dbOpenDynaset)
If command = 1 Then
Dim currdigitD, currletterposD, currnumD, currletterD, currfullD, currlenD, extrazerosD
DoCmd.SetWarnings False
currdigitD = DLookup("[current_digitD]", "current_digitD")
currletterposD = DLookup("[letter_positionD]", "current_letterD")
currnumD = DLookup("[current_numberD]", "current_numberD")
currletterD = DLookup("[current_letterD]", "current_letterD")
If currnumD < 9999 Then
' increase currnum
DoCmd.OpenQuery "increase_current_numberD"
currnumD = DLookup("[current_numberD]", "current_numberD")
Else
' set currnum back to 0
' increase digit
' increase letter
DoCmd.OpenQuery "increase_current_numberD"
currnumD = DLookup("[current_numberD]", "current_numberD")
DoCmd.OpenQuery "increase_digitD"
currdigitD = DLookup("[current_digitD]", "current_digitD")
If currdigitD = 0 Then
DoCmd.OpenQuery "increase letterD"
DoCmd.OpenQuery "update letterD"
currletterD = DLookup("[current_letterD]", "current_letterD")
End If
End If
DoCmd.SetWarnings True
' field on form = current letter & current digit & current number
currlenD = Len(Trim(Str(currnumD)))
If currlenD = 3 Then
extrazerosD = "0"
End If
currfullD = currletterD & Trim(Str(currdigitD)) & extrazerosD & Trim(Str(currnumD))
Forms![FrmPassport]![CURNUM] = currfullD
If Request = 2 Then
Forms![FrmPassport]![CURCOUNTER] = 2
Forms![FrmPassport]![Counter2Num] = Forms![FrmPassport]![CURNUM]
'read.speak "Information Lane. Number," & Forms![FrmPassport]![CURNUM] & "please proceed to counter 2."
DoCmd.RunCommand acCmdDeleteRecord
Form.Refresh
Me.enable = 1
ElseIf Request = 3 Then
Forms![FrmPassport]![CURCOUNTER] = 3
Forms![FrmPassport]![Counter3num] = Forms![FrmPassport]![CURNUM]
read.speak "Information Lane. Number," & Forms![FrmPassport]![CURNUM] & "please proceed to counter 3."
DoCmd.RunCommand acCmdDeleteRecord
Form.Refresh
Me.enable = 0
ElseIf Request = 5 Then
Forms![FrmPassport]![CURCOUNTER] = 5
Forms![FrmPassport]![Counter5Num] = Forms![FrmPassport]![CURNUM]
read.speak "Information Lane. Number," & Forms![FrmPassport]![CURNUM] & "please proceed to counter 5."
DoCmd.RunCommand acCmdDeleteRecord
Form.Refresh
Me.enable = 0
Else
End If
ElseIf command = 4 Then
If enable = 1 Then
DoCmd.GoToRecord , "", acNext
Else
If (Not (rst.EOF) And Not (rst.BOF)) Then
Form.Requery
Form.Refresh
End If
Me.enable = 1
End If
Else
Me.enable = 0
DoCmd.GoToRecord , "", acFirst
Form.Refresh
End If
End Sub
上面的代码在打开表单之前添加了 2 个或更多记录时工作正常,但是,在代码运行时添加新记录时,我得到“错误 3246 Operation not supported in transactions”,当我尝试调试时,它会突出显示 `Form .重新查询'。有针对这个的解决方法吗?
解决方案
推荐阅读
- python - 变量之间的打印线,我该如何停止?
- facebook - 需要 Facebook 消息 API 帮助
- swagger - swagger-ui 给出的请求 URL 不正确 试试看
- sql - 当必须根据条件对记录进行分组时如何选择最多 x 行
- amazon-ec2 - 如果达到 100%,EC2 T3 实例会崩溃吗
- javascript - Sequelize.define 无法将可选对象合并到模型构造函数中
- java - 在 JAVA 中实现类似于 Paint 中的矩形形状特征
- flutter - 在颤动的文本小部件中显示产品的折扣百分比
- firebase - Firebase.instance.signOut() 未将 currentUser() 设置为 null
- iis - 具有基于请求的条件的 IIS 出站重写规则 (web.config)