2014-12-17 2 views
1

그래서 단계를 수행 한 후 데이터베이스를 수동으로 분할합니다. Here. 어떤 이유로로드 이벤트가 하나의 양식에서 트리거되지 않고 다른 이벤트에서 언로드 이벤트가 트리거되지 않습니다 (그러나 각각 반대의 이벤트가 작동 함). 두 번째 형식 (Unload not working)은 수동으로 닫은 다음 디자인 모드로 열 때까지 디자인 모드로 전환하기를 거부합니다. 오픈과 클로즈 이벤트가 해당 VBA 코드와 적절하게 연결되어 있음을 확인했습니다.양식로드/언로드 이벤트가 Access 2007에서 폼을 가져온 후에 트리거되지 않음

이 문제를 해결하는 데 도움을 주시면 감사하겠습니다. 여기

편집 -

은로드 코드입니다 :

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 
+0

이벤트 아래의 Form 속성으로 들어가면 적절한 이벤트에서'[Event Procedure]'가 표시됩니까? – RubberDuck

+0

예, 줄임표를 클릭하면 적절한 코드 섹션으로 이동합니다. – 110SidedHexagon

+0

좋습니다. 음 ..... 코드를 보지 않고는 더 이상 할 수있는 것이 없습니다. – RubberDuck

답변

1

Form_Load 이벤트의 모든 코드를 (rem) 주석 처리하고 Sub 프로 시저에 중단 점을 넣은 다음 양식이 열리고 이벤트가 발생하는지 확인합니다. 화재가 발생한 후 로드 이벤트 에 영향을주는 코드 줄이 발견 될 때까지 각 줄의 "un-rem"을 시작할 것입니다.

"언로드"문제와 동일하게 수행합니다.

+0

참조를 만들지 않았을 경우 오류가 발생하지 않을 것이라고 생각했을 것입니다. 그러나 나는 ... 새 데이터베이스에서'ScriptControl'을 사용하도록 적절한 참조를 설정하지 않았으므로 전체 하위를 무시하고있었습니다. . – 110SidedHexagon

관련 문제