sql—为什么当tempvars存储对象时,我会得到一个只存储数据而不存储对象的tempvars

whlutmcx  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(278)

最近,我被要求完成一个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]=" &amp; [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
7ivaypg9

7ivaypg91#

来自microsoft文档:
tempvar对象只能存储文本或数字数据。tempvar对象不能存储对象。
来源:tempvar对象(access)
如果真的需要将对象存储在内存中,则需要提出一种不同的解决方案。

9vw9lbht

9vw9lbht2#

没有更多的细节,我只是做了一些假设。如果“id”是窗体上的一个控件(绑定到一个数字字段),那么access很可能试图设置该控件的tempvar,而不是它的值。如前所述,我认为没有必要使用tempvar。用以下代码替换块:

Dim lngID as Long 
lngID = Nz(Me!ID, 0)
If lngID = 0 Then
    Beep
    Exit Sub
End If
If (Nz([Contact Name]) <> "") Then
    DoCmd.OpenForm "Check In", acNormal, "", "[Transactions].[Asset]=" & lngID & " And [Transactions].[Checked In Date] Is Null", acEdit, acDialog
End If

相关问题