最近,我被要求完成一个access数据库,一位同事在离开工作岗位之前,已经完成了99%的工作。数据库正在用作库签入/ checkout 数据库。
有一个操作按钮,“单击”运行用vba编写的事件过程。单击操作按钮后,我得到错误“tempvar只能存储数据,不能存储对象”。
我没有任何vba或访问的经验,所以我不知道什么是坏的或如何修复。任何帮助都将不胜感激
Private Sub Action_Click()
On Error GoTo Action_Click_Err
' _AXL:<?xml version="1.0" encoding="UTF-16" standalone="no"?>
' <UserInterfaceMacro For="Owner" xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application"><Statements><ConditionalBlock><If><Condition>IsNull([Screen].[ActiveControl])</C
' _AXL:ondition><Statements><Action Name="StopMacro"/></Statements></If></ConditionalBlock><Action Name="OpenForm"><Argument Name="FormName">Contact Details</Argument><Argument Name="WhereCondition">="[ID]=" & [Screen].[ActiveControl]</Argument><Argum
' _AXL:ent Name="WindowMode">Dialog</Argument></Action><Action Name="OnError"/><Action Name="Requery"><Argument Name="ControlName">=[Screen].[ActiveControl].[Name]</Argument></Action></Statements></UserInterfaceMacro>
If (IsNull(ID)) Then
Beep
Exit Sub
End If
TempVars.Add "ItemID", ID
If (Nz([Contact Name]) <> "") Then
DoCmd.OpenForm "Check In", acNormal, "", "[Transactions].[Asset]=[TempVars]![ItemID] And [Transactions].[Checked In Date] Is Null", acEdit, acDialog
End If
If (Nz([Contact Name]) = "") Then
DoCmd.OpenForm "Check Out", acNormal, "", "1=0", acEdit, acDialog
End If
DoCmd.Requery ""
Action_Click_Exit:
Exit
Sub
Action_Click_Err:
MsgBox Error$
Resume Action_Click_Exit
End Sub
2条答案
按热度按时间7ivaypg91#
来自microsoft文档:
tempvar对象只能存储文本或数字数据。tempvar对象不能存储对象。
来源:tempvar对象(access)
如果真的需要将对象存储在内存中,则需要提出一种不同的解决方案。
9vw9lbht2#
没有更多的细节,我只是做了一些假设。如果“id”是窗体上的一个控件(绑定到一个数字字段),那么access很可能试图设置该控件的tempvar,而不是它的值。如前所述,我认为没有必要使用tempvar。用以下代码替换块: