I have a helpdesk application where the user selects an individual via combo box. If the individual has any open calls, a new form (modal) is opened and the calls are displayed. The problem is that the second form is opened but the code behind the first form continues executing instead of waiting until control is returned from the second modal form. I'm sure this arises from not having a clear understanding of event driven programming. How would one go about accomplishing the objective in an event driven style? I've written some fairly complex applications but haven't run into a situation like this until now.
BTW, this is Access XP using old DAO 2.5/3.51 references. The problematic code follows:
<code>
Private Sub Combo289_AfterUpdate()
Dim DupCt As Long, Save_Filter As Variant
Dim dbs As Database, rs9158 As Recordset, SQLstr1 As String, SQLstr2 As String
SQLstr2 = "[ssn]='" & [Combo289] & "' and [Closed_ckb]=No"
DupCt = DCount("[ssn]", "Calls", SQLstr2)
mbconfirm = 1
If DupCt > 0 Then
If DupCt = 1 Then
MsgBox "This employee already has " & DupCt & " open call."
Else
MsgBox "This employee already has " & DupCt & " open calls."
End If
DoCmd.OpenForm "Duplicate Calls", acNormal, , SQLstr2, acFormEdit
''' Here is where I'd expect nothing further to execute until the "Duplicate Calls" form is closed, but it continues.
End If
''' mbconfirm value is set by msgbox during "on close" event from form "Duplicate Calls"
''' mbconfirm is always 1 since this executes before the close event from "Duplicate Calls"
If (mbconfirm = 1) Then
Set dbs = CurrentDb
SQLstr1 = "SELECT * FROM [Select Pay9158 Record] WHERE [ssn] = '" & [Combo289] & "'"
Set rs9158 = dbs.OpenRecordset(SQLstr1)
With rs9158
.MoveFirst
Me![m_ssn] = !ssn
Me![m_ssn4] = "###-##-" & Right(![ssn], 4)
Me![m_FirstName] = !fname
Me![m_LastName] = !lname
Me![m_Room] = !Room
Me![m_Building] = !blgabbr
Me![m_Department] = !deptname
Me![m_Phone] = !ophone
Me![m_Office_Extension] = !oext
Me![m_College] = !schooldescr
Me![m_Location] = !sitedescr
Me![m_Call_Type] = "E"
Me![m_Title] = !Title
End With
rs9158.Close
Set dbs = Nothing
End If
End Sub
</code>