2

I have a form in which I have created some checkboxes. These checkboxes have been created dynamically, and their number may not be the same each time the user opens the form. Although my event listener works exactly in the way I want, when I press the "X" button to close the form, MS Access crashes. It does not hang, it crashes. I've tried decompiling and recompiling, and I have tried other steps too but nothing fixes the problem. When I comment the lines of code responsible for the event handler, the crashes stop.

Below is my Class Module 's code. The class module's name is EventClass.

Option Compare Database
Public WithEvents ct As Access.CheckBox

Public Sub ct_Click()
    MsgBox ct.Name & "pressed"
End Sub

Below is the Form's code:

Option Compare Database
Private listenerCollection As New Collection

Private Sub Form_Load()
    DoCmd.SetWarnings False
    Dim listener As EventClass
    For Each ctrl In Forms("test").TestTab.Pages(0).Controls
      If (TypeName(ctrl) = "CheckBox") Then
         'the created checkboxes should not be checked by default
         ctrl.Value = 0

         Set listener = New EventClass
         Set listener.ct = ctrl
         listener.ct.OnClick = "[Event Procedure]"
         listenerCollection.Add listener
      End If
   Next

End Sub

And here 's the code that makes the checkboxes (it belongs to another form,which closes before the controls are made and the form that is causing the issue shows up):

DoCmd.Close

DoCmd.OpenForm "test", acDesign, , , acFormEdit, acHidden

'delete the previously created controls
again:

For Each ctrl In Forms("test").TestTab.Pages(0).Controls
    DeleteControl "test", ctrl.Name
Next

'ensure that all the controls have been deleted
If (Forms("test").TestTab.Pages(0).Controls.Count > 0) Then GoTo again

Dim q As CheckBox
Dim usr As Label
Dim db As Database
Dim rs As Recordset
Top_ = 500
Left_ = 1000

'create new controls
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT USERNAME FROM T_USERS", dbOpenSnapshot)
With rs
    Do While Not .EOF
        Set usr = CreateControl("test", acLabel, acDetail, "Page1", , 0, Top_, 1100, 1000)
        usr.Caption = rs.Fields("USERNAME")
        Set q = CreateControl("test", acCheckBox, acDetail, "Page1", , 1500, Top_, 200, 200)

        Top_ = Top_ + 500
        Set q = Nothing
        Set usr = Nothing
        .MoveNext
    Loop
    .Close
End With
Set rs = Nothing
Set db = Nothing

'and here,the form which causes the problem shows up
DoCmd.OpenForm "test"

Crash information:

Problem signature:

Problem Event Name: APPCRASH

Application Name: MSACCESS.EXE

Application Version: 15.0.4665.1000

Application Timestamp: 54339a95

Fault Module Name: MSACCESS.EXE

Fault Module Version: 15.0.4665.1000

Fault Module Timestamp: 54339a95

Exception Code: c0000005

Exception Offset: 00000000003796f5

OS Version: 6.1.7601.2.1.0.256.48

Sometimes the application event name appears as BEX64

This problem has started making me really frustrated, as there 's no proper solution anywhere i 've searched. Code decompilation doesnt work, DEP turn-off doesnt work, references in vba editor are ok. I really dont know what to do.

3
  • 1
    Do you have two forms? One with dynamic controls (test) and one adding the listeners (whose code is shown above)? Since you only say Form, I can't tell which form's closing causes the crash. If there are two forms, please name them in your question. If this is all one form, please add the code that creates the checkboxes. Commented Dec 31, 2014 at 15:05
  • The first piece of code is the Class Module.The second piece is the form's that causes the crash. Commented Jan 1, 2015 at 0:37
  • @pteranodon I added the code which makes the checkboxes.I hope that it helps.Thanks for your time by the way. Commented Jan 1, 2015 at 1:01

1 Answer 1

1

I didnt actually manage to solve the problem,but it seems that it has to do with the form 's "X" button. So i did the following.I disabled the X button and inserted a custom button in my form. Below you can see its "_Click" sub.

Private Sub CloseButton_Click()
    DoCmd.Close
End Sub

The crashes stopped.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.