beams
asked on
Set Focus to Report or Form
I am having a little trouble when printing. Because I have some code that occurs on timer from a main screen, sometime when printing, I print the main screen. This is because the focus moves to the main screen while the code runs. I know I can move the focus to a control, can I move the focus back to a form or report ?.
Hi beams,
To set the focus to a form/report, you can use:
Forms![MyFormName]!Control Name.SetFo cus
Where ControlName is a control (textbox, listbox, combobox, etc.) placed in the form/report.
BTW, Nico has a good point. If you can, deactivate the OnTimer before printting and activate it back again when printting is finnished.
HTH,
Nosterdamus
To set the focus to a form/report, you can use:
Forms![MyFormName]!Control
Where ControlName is a control (textbox, listbox, combobox, etc.) placed in the form/report.
BTW, Nico has a good point. If you can, deactivate the OnTimer before printting and activate it back again when printting is finnished.
HTH,
Nosterdamus
ASKER
I use the timer to check the database for new messages when in a network enviroment. Is there another way to prompt a user on a network that he a message in the database.
I can imagine that you offer the user a button or form to check by him self, but otherwise you could also create an e-mail to him, thus even showing there's something new when he's not working with the database.
I assume the database is also filled using access.
When you have MS-SQL it's even easier as you'll be able to place a trigger on a table update to send a mail. There has to be however a MAPI installed on the server.
Nic;o)
I assume the database is also filled using access.
When you have MS-SQL it's even easier as you'll be able to place a trigger on a table update to send a mail. There has to be however a MAPI installed on the server.
Nic;o)
ASKER
A message box is displayed when the user gets a new message. This all works very well because the actual message is also stored in the database. I would like to keep the function but as I say the only problem I have is trying to find a way of ensuring the focus is back to the form or report after the timer event has finished.
Hi beams,
If you are up to some coding, then you could consider the following method:
1. Declare a Global Variable (strCurrentFormReport).
2. You'll have to create some push/pop mechanism that will set the above variable to the actual form/report name to set focus to after the OnTimer event is done.
3. Every time you close a form/report, or open one, call a routine that will set the variable to the proper value.
4. Just before exitting the OnTimer event, use somethilng like:
Forms(strCurrentFormReport )!ControlN ame.SetFoc us
HTH,
Nosterdamus
If you are up to some coding, then you could consider the following method:
1. Declare a Global Variable (strCurrentFormReport).
2. You'll have to create some push/pop mechanism that will set the above variable to the actual form/report name to set focus to after the OnTimer event is done.
3. Every time you close a form/report, or open one, call a routine that will set the variable to the proper value.
4. Just before exitting the OnTimer event, use somethilng like:
Forms(strCurrentFormReport
HTH,
Nosterdamus
ASKER
This is what I do at the moment. The problem is with reports, If I open the report with the Docmd, I cant determine if the report was being previewed or printed.
Private Sub Form_Timer()
On Error Resume Next
Dim tmpDiaryList As Long, LoadedReportName As String
Dim frmCurrentReport As Report, frmCurrentForm As Form
Set frmCurrentReport = Screen.ActiveReport
Set frmCurrentForm = Screen.ActiveForm
LoadedReportName = frmCurrentReport.Name
If IsLoaded("frmPaymentsNew") Or IsLoaded("Orders") Or IsLoaded("Quote") _
Or IsLoaded("Orders All") Or IsLoaded("frmTaxRecDetails ") Then
DoCmd.OpenForm frmCurrentForm.Name
Exit Sub
End If
If LoadedReportName <> "" Then
Exit Sub
End If
On Error GoTo Err_Form_Timer
If Awarelist = 0 Then
Awarelist = val(DCount("[Diary_ID]", "Diary Menu Union"))
End If
tmpDiaryList = val(DCount("[Diary_ID]", "Diary Menu Union"))
If val(Awarelist) <= val(tmpDiaryList) Then
Awarelist = val(tmpDiaryList)
Dim response As Integer
response = MsgBox("You have New Messages, view your messages ?", 292, "MESSAGE CENTRE")
If response = 6 Then
DoCmd.OpenForm "Message Centre"
End If
End If
DoCmd.OpenForm frmCurrentForm.Name
Exit_Form_Timer:
Exit Sub
Err_Form_Timer:
MsgBox Err.Description
Resume Exit_Form_Timer
End Sub
Private Sub Form_Timer()
On Error Resume Next
Dim tmpDiaryList As Long, LoadedReportName As String
Dim frmCurrentReport As Report, frmCurrentForm As Form
Set frmCurrentReport = Screen.ActiveReport
Set frmCurrentForm = Screen.ActiveForm
LoadedReportName = frmCurrentReport.Name
If IsLoaded("frmPaymentsNew")
Or IsLoaded("Orders All") Or IsLoaded("frmTaxRecDetails
DoCmd.OpenForm frmCurrentForm.Name
Exit Sub
End If
If LoadedReportName <> "" Then
Exit Sub
End If
On Error GoTo Err_Form_Timer
If Awarelist = 0 Then
Awarelist = val(DCount("[Diary_ID]", "Diary Menu Union"))
End If
tmpDiaryList = val(DCount("[Diary_ID]", "Diary Menu Union"))
If val(Awarelist) <= val(tmpDiaryList) Then
Awarelist = val(tmpDiaryList)
Dim response As Integer
response = MsgBox("You have New Messages, view your messages ?", 292, "MESSAGE CENTRE")
If response = 6 Then
DoCmd.OpenForm "Message Centre"
End If
End If
DoCmd.OpenForm frmCurrentForm.Name
Exit_Form_Timer:
Exit Sub
Err_Form_Timer:
MsgBox Err.Description
Resume Exit_Form_Timer
End Sub
For this you could define a global variable in a module and set that before activating the form. In the form you can check that variable. (works only when reports are always triggered from VBA...)
Nic;o)
Nic;o)
No comment has been added lately, so it's time to clean up this TA.
I will leave a recommendation in Community Support that this question is:
- PAQ'd and pts removed
Please leave any comments here within the
next seven days.
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER !
Nic;o)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Do you really need it ?
Nic;o)