I’ve having a problem with a form in Access that is set to MODAL but it doesn’t stop the processing of the VBA. The program only stops when it gets to a MSGBOX for changing the default printer. Below are the VBA code and the properties box of the form showing the MODAL selection. Any Ideas?
' +-------------------+ +----------+ '---------------------------| SetDateForBills() |-----------------| 10/28/10 | ' +-------------------+ +----------+ 'Called by: Macro - AutoExec 'Calls : N/A 'Returns : True if rates exist or are added. ' False if rates do not exist and are not added. Function SetDateForBills() As Boolean Dim iAns As Integer Dim qryName As QueryDef Dim dbName As Database Dim rst As Recordset Dim zBillDate As String Dim zSQL As String Set dbName = CurrentDb zBillDate = InputBox("Enter Billing Year as 4 digits", "Billing Year", Trim(Str(Year(Now())))) zBillDate = "4/1/" & Trim(zBillDate) dtBillDt = CDate(zBillDate) '***** Check to see if Rates for that year are present in tblFees ***** Set rst = dbName.OpenRecordset("tblFees") rst.Index = "PrimaryKey" rst.Seek "=", dtBillDt If rst.NoMatch Then rst.Close '**** Close the Recordset no longer needed **** iAns = MsgBox("There are no Fees in the tblFees table for " & zBillDate & vbCrLf & _ "Would you like to enter them now?", _ vbYesNo + vbInformation, "Warning: No Fees!") If iAns = vbYes Then bFormMode = True '** Data Entry Mode *** DoCmd.OpenForm "frmFees", acNormal Else MsgBox "There are no rates for Bill Year " & zBillDate & vbCrLf & _ "No bills will be produced at this time." & vbCrLf & _ "You will be returned to the Billing Options Menu.", _ vbOKOnly + vbInformation, "Can NOT Produce Bills:" SetDateForBills = False GoTo Exit_Function End If '** if iAns ** Else '**Code for existing rates! ** rst.Close '**** Close the Recordset no longer needed **** iAns = MsgBox("Would you like to Edit the Fees for " & zBillDate & "?", _ vbYesNo + vbInformation, "Information: View/Edit Fees?") If iAns = vbYes Then bFormMode = False '** Data Edit Mode *** DoCmd.OpenForm "frmFees", acNormal, , , , acWindowNormal '*** Should STOP HERE! *** End If '** if iAns ** End If '** rst.NoMatch ** Set qryName = dbName.QueryDefs("qryDocksForBills") zSQL = "SELECT Owners.OwnerID, Docks.OwnerID, Docks.Dock, IIf([MaintThru]<[BillingDate]," & _ " [DockMaintFee],0) AS DockFee, IIf([LiftThru]<[BillingDate],[LiftMaintFee],0)" & _ " AS LiftFee, Docks.MaintThru, Docks.LiftThru, tblFees.BillingDate" & _ " FROM tblFees, Owners INNER JOIN Docks ON Owners.OwnerID = Docks.OwnerID" & _ " WHERE (((Docks.Dock) < 'WB*') And ((tblFees.BillingDate) = #" & zBillDate & "#))" & _ " ORDER BY Docks.OwnerID, Docks.Dock;" qryName.SQL = zSQL 'Assign SQL statement to Query Name qryName.Close 'Close and Save the Query Set qryName = dbName.QueryDefs("qryLotsForBills") zSQL = "SELECT Lots.OwnerID, Lots.Lot, Lots.PropertyAddr, Lots.DuesThru, " & _ "IIf([DuesThru]<[BillingDate],[AsociationFee],0) AS AnnFee, " & _ "IIf([DuesThru]<[BillingDate],[CapitalImpFee],0) AS CImpFee, " & _ "IIf([DuesThru]<[BillingDate],[CapitalRepFee],0) AS CRepFee, " & _ "Lots.Mowing, Lots.MowingThru, IIf([Mowing]='Yes',IIf([MowingThru]<" & _ "[BillingDate],[MowingFee],0),0) AS MowFee FROM Lots, tblFees " & _ "WHERE ((tblFees.BillingDate) = #" & zBillDate & _ "#) ORDER BY Lots.OwnerID, Lots.Lot;" qryName.SQL = zSQL 'Assign SQL statement to Query Name qryName.Close 'Close and Save the Query SetDateForBills = True '*** Successfully Set *** Exit_Function: End Function '*** SetDateForBills()***
The Form is displayed properly but execution blows right through to the MsgBox mentioned and of course it is modal so I can't even move it out of the way to get to this form which has to be processed first.