【问题标题】:Form Load/Unload Event Not Triggered After Importing Form in Access 2007在 Access 2007 中导入表单后未触发表单加载/卸载事件
【发布时间】:2015-02-16 02:49:54
【问题描述】:

所以我只是按照Here 找到的步骤手动拆分数据库。由于某种原因,加载事件不会在一种形式上触发,而在另一种形式上则不会触发卸载事件(但在每种情况下,相反的都会起作用)。第二种形式(卸载不工作)也拒绝进入设计模式,直到我手动关闭它然后将其打开进入设计模式。我已经确认打开和关闭事件已正确链接到它们相应的 VBA 代码,所以我知道不是这样。

对于解决此问题的任何帮助将不胜感激。

编辑-

这是加载的代码:

Private Sub Form_Load()
    Dim scr As ScriptControl
    Dim SQL As String

    CheckConnection
    Set scr = New ScriptControl
    SQL = "UPDATE [Part Number] SET [Part Number].[Select] = False WHERE ((([Part Number].[Select])=True));"
    CurrentDb.Execute SQL

    scr.Language = "VBScript"
    scr.AddCode "Sub T :Dim ChangeReg: Set ChangeReg = CreateObject(""WScript.Shell""):ChangeReg.regwrite " & _
                """HKCU\Software\Microsoft\Office\12.0\Access\Security\VBAWarnings"", ""1"", ""REG_DWORD"" : " & _
                "Set ChangeReg = CreateObject(""WScript.Shell""):ChangeReg.regwrite " & _
                """HKCU\Software\Microsoft\Office\12.0\Excel\Security\VBAWarnings"", ""1"", ""REG_DWORD"": end sub"
    scr.Run "T"

    Locked = False
    CancelBupdate = False
    LockOff

    USRID = Environ("Username")

    TTTCount = 0
    Started = True

    SourceSelect.Value = 1

    DoCmd.SelectObject acTable, , True
    DoCmd.RunCommand acCmdWindowHide
    DoCmd.ShowToolbar "Ribbon", acToolbarNo

    ChgFrmOpen = False
    Me.LocationSelect.Visible = False
    Me.ClrSupLoc.Visible = False
    Me.Label20.Visible = False
    PSOn = True

    Me.RepSelect.Value = ""
    Me.SupplierSelect.Value = ""
    Me.SupNumSelect.Value = ""
    Me.LocationSelect.Value = ""
    Me.Base5Select.Value = ""
    Me.FullNbrSelect.Value = ""
    Me.Label104.Caption = "Last Updated On: " & DLookup("[Last Updated]", "[Last Updated]")
    ChangeCount = 0
    CT = ""
    CPP = ""
    PGNP = ""

    UpdateSub '****
    InfoGet
    RunFilter
    Cascade
    Me.Requery

    Select Case USRID
        Case "vn034153"
            UsrInfoSt = "Logged in as User"
        Case "vn043156"
            UsrInfoSt = "Logged in as User"
            Blah
        Case "vn034157"
            UsrInfoSt = "Logged in as Admin"
            Me.UpdateButton.Visible = True
        Case "vn034160"
            UsrInfoSt = "Logged in as User"
        Case "vn028040"
            UsrInfoSt = "Logged in as User"
        Case "vn028033"
            UsrInfoSt = "Logged in as Admin"
            Me.UpdateButton.Visible = True
        Case "vn034931"
            UsrInfoSt = "Logged in as User"
        Case Else
            UsrInfoSt = "Logged in as User"
    End Select

    Me.UsrInfo.Caption = UsrInfoSt
    Application.SetOption "Confirm Action Queries", 0
    Application.SetOption "Confirm Document Deletions", 0
    Application.SetOption "Confirm Record Changes", 0
    DoCmd.SetWarnings False
    Application.SetOption "Auto compact", True
End Sub

这里是卸载的代码(使用 cmd 按钮,两个子都不运行):

Private Sub OpenDatabase_Click()
    DoCmd.OpenForm "2BHPartsDatabaseX"
    DoCmd.Close acForm, Me.Name
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Dim TDF As TableDef
    Dim QDF As QueryDef
    Dim DBS As Database

    Set DBS = CurrentDb()

    Me.ReportForm.SourceObject = ""

    For Each QDF In DBS.QueryDefs
        If QDF.Name = "TempQRYX" Or QDF.Name = "DistinctPGNQry" Then
            DBS.QueryDefs.Delete QDF.Name
        End If
    Next

    For Each TDF In DBS.TableDefs
        If TDF.Name = "ProjectTable" Then
            DBS.TableDefs.Delete TDF.Name
            Exit For
        End If
    Next

    Application.SetOption "Confirm Action Queries", 1
    Application.SetOption "Confirm Document Deletions", 1
    Application.SetOption "Confirm Record Changes", 1
    DoCmd.SetWarnings True
End Sub

【问题讨论】:

  • 当您进入表单属性时,在事件下,是否在相应的事件中显示[Event Procedure]
  • 是的,单击省略号会将我带到正确的代码部分。
  • 好的。好吧.....如果没有看到代码,我们就无能为力了。

标签: forms ms-access vba ms-access-2007


【解决方案1】:

我会注释掉(rem)Form_Load 事件中的所有代码,并在 子程序,然后打开表单以查看事件是否触发。看到火了之后 我会开始“un-rem”每一行,直到影响加载事件的代码行 找到了。

我也会对“卸载”问题做同样的事情。

【讨论】:

  • 我原以为没有引用会引发错误,但我想不会……我没有在新数据库中设置正确的引用来使用 scr As ScriptControl 所以它是只是忽略整个子。
猜你喜欢
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 2013-10-25
  • 2012-08-01
  • 2011-10-22
  • 1970-01-01
相关资源
最近更新 更多