I use the following routine to open a form or report, check if there is an OnLoad event, if not I add it.
Experimentall I type -
PP_OpenForm(2,"RptSeminarbesucher", acPreview)
-
into the Debug Window
I then add a line of code to translate the form into a foreign language. All works perfectly ... nearly. -
Function PP_OpenForm(FormOrReport As Integer, FormReportName As String, Optional StrView As String = acNormal, _
-
Optional StrFilterName As String, Optional StrWhereCondition As String, _
-
Optional varDataMode As Variant = acFormPropertySettings, _
-
Optional varWindowMode As Variant = acWindowNormal, Optional varOpenArgs As Variant)
-
-
'PP_OpenForm(2,"RptSeminarbesucher", acPreview)
-
-
Dim TypeOfObject As Object
-
Dim Mdl As Module
-
Dim StartLine As Long, EndLine As Long
-
Dim StartCol As Long, EndCol As Long
-
Dim Increment As Integer
-
Dim HasMdl As Boolean
-
Dim ModuleAdded As Boolean
-
Dim PP_LoadAdded As Boolean
-
Dim ProcLineCount As Long
-
-
' Opens a form and insert PP_Load me.Name into the On open Event
-
-
If FormOrReport = 1 Then
-
DoCmd.OpenForm FormReportName, acDesign
-
Set TypeOfObject = Forms!FormReportName
-
Else
-
DoCmd.OpenReport FormReportName, acDesign
-
Set TypeOfObject = Reports(FormReportName)
-
End If
-
-
HasMdl = TypeOfObject.HasModule ' Save has module
-
If TypeOfObject.HasModule = 0 Then
-
TypeOfObject.HasModule = -1
-
End If
-
-
Increment = 2
-
-
Set Mdl = TypeOfObject.Module
-
-
If FormOrReport = 1 Then ' Form
-
Mdl.Find "Form_Load", StartLine, StartCol, EndLine, EndCol
-
If StartLine = 0 Then ' Sub Form_Load not found
-
StartLine = Mdl.CreateEventProc("Load", "Form")
-
ModuleAdded = -1
-
End If
-
Else ' Report
-
Mdl.Find "Report_Load", StartLine, StartCol, EndLine, EndCol
-
If StartLine = 0 Then
-
StartLine = Mdl.CreateEventProc("Load", "Report")
-
End If
-
End If
-
-
Mdl.Find "PP_Load", StartLine, StartCol, EndLine, EndCol
-
-
'StartLine = 0
-
If StartLine = 0 Then
-
Mdl.InsertLines StartLine + Increment, " PP_Load " & Chr$(34) & TypeOfObject.name & Chr$(34)
-
PP_LoadAdded = -1
-
End If
-
-
If FormOrReport = 1 Then
-
DoCmd.OpenForm FormReportName, StrView, StrFilterName, StrWhereCondition, varDataMode, varWindowMode, varOpenArgs
-
Else
-
DoCmd.OpenReport FormReportName, StrView, StrFilterName, StrWhereCondition, varWindowMode, varOpenArgs
-
End If
-
-
CleanUp:
-
DoEvents
-
-
Exit Function
-
-
End Function
-
The problem is when the form or report is closed I am prompted whether to save it. The answer is always "NO"
Now I do not want to modify any forms or reports so is there a way or preventing the question and just closing the form or report unchanged?
Phil
10 3422 NeoPa 32,564
Recognized Expert Moderator MVP
Hi Phil.
In the Form_Unload() event procedure have it set the Cancel parameter based on whether or not it's been closed by your special closing code. In your special closing code (probably behind a Close button) ensure you close the Form or Report with code similar to : - Call DoCmd.Close(ObjectType:={acForm or acReport} _
-
, ObjectName:=Me.Name _
-
, Save:=acSaveNo)
This ( How to Close a Main Form Without Saving Changes of any Subforms) may also help.
Hi Neopa
Thanks for reply, but still no dice.
Here is the full code. -
Function PP_OpenForm(FormOrReport As Integer, FormReportName As String, Optional StrView As String = acNormal, _
-
Optional StrFilterName As String, Optional StrWhereCondition As String, _
-
Optional varDataMode As Variant = acFormPropertySettings, _
-
Optional varWindowMode As Variant = acWindowNormal, Optional varOpenArgs As Variant)
-
-
'?PP_OpenForm(2,"RptSeminarbesucher",acPreview)
-
-
Dim TypeOfObject As Object
-
Dim Mdl As Module
-
Dim StartLine As Long, EndLine As Long
-
Dim StartCol As Long, EndCol As Long
-
Dim Increment As Integer
-
Dim HasMdl As Boolean
-
Dim ProcLineCount As Long
-
Dim InsertStr As String
-
Dim LoadStartLine As Long
-
Dim UnloadStartLine As Long
-
-
' Opens a form and insert PP_Load me.Name into the On open Event
-
-
If FormOrReport = 1 Then
-
DoCmd.OpenForm FormReportName, acDesign
-
Set TypeOfObject = Forms!FormReportName
-
Else
-
DoCmd.OpenReport FormReportName, acDesign
-
Set TypeOfObject = Reports(FormReportName)
-
End If
-
-
HasMdl = TypeOfObject.HasModule ' Save has module
-
If TypeOfObject.HasModule = 0 Then
-
TypeOfObject.HasModule = -1
-
End If
-
-
Increment = 2
-
-
Set Mdl = TypeOfObject.Module
-
-
If FormOrReport = 1 Then ' Form
-
Mdl.Find "Form_Load", StartLine, StartCol, EndLine, EndCol
-
If StartLine = 0 Then ' Sub Form_Load not found
-
StartLine = Mdl.CreateEventProc("Load", "Form")
-
End If
-
Else ' Report
-
Mdl.Find "Report_Load", StartLine, StartCol, EndLine, EndCol
-
If StartLine = 0 Then
-
StartLine = Mdl.CreateEventProc("Load", "Report")
-
End If
-
End If
-
-
LoadStartLine = StartLine
-
-
StartLine = 0
-
Mdl.Find "PP_Load", StartLine, StartCol, EndLine, EndCol, True, True
-
-
If StartLine = 0 Then
-
InsertStr = " PP_Load " & Chr$(34) & TypeOfObject.name & Chr$(34)
-
Mdl.InsertLines LoadStartLine + Increment, InsertStr
-
End If
-
-
' Unload procedure to stop it asking to save
-
StartLine = 0
-
-
If FormOrReport = 1 Then ' Form
-
Mdl.Find "Form_Unload", StartLine, StartCol, EndLine, EndCol
-
If StartLine = 0 Then ' Sub Form_Load not found
-
StartLine = Mdl.CreateEventProc("Unload", "Form")
-
End If
-
Else
-
Mdl.Find "Report_Unload", StartLine, StartCol, EndLine, EndCol
-
If StartLine = 0 Then
-
StartLine = Mdl.CreateEventProc("Unload", "Report")
-
End If
-
End If
-
-
UnloadStartLine = StartLine
-
-
StartLine = 0
-
-
Mdl.Find "PP_Unload", StartLine, StartCol, EndLine, EndCol
-
-
If StartLine = 0 Then
-
InsertStr = " PP_Unload " & FormOrReport & ", " & Chr$(34) & TypeOfObject.name & Chr$(34)
-
Mdl.InsertLines UnloadStartLine + Increment, InsertStr
-
End If
-
-
Debug.Print Mdl.Lines(1, 15)
-
-
If FormOrReport = 1 Then
-
DoCmd.OpenForm FormReportName, StrView, StrFilterName, StrWhereCondition, varDataMode, varWindowMode, varOpenArgs
-
Else
-
DoCmd.OpenReport FormReportName, StrView, StrFilterName, StrWhereCondition, varWindowMode, varOpenArgs
-
End If
-
-
End Function
-
-
Function PP_Unload(ObjType As Integer, ObjName As String) As Boolean
-
-
On Error GoTo PP_Onload_Err
-
-
If ObjType = 1 Then ' Form
-
DoCmd.Close acForm, ObjName, acSaveNo
-
Else
-
DoCmd.Close acReport, ObjName, acSaveNo
-
End If
-
-
PP_Onload_Exit:
-
Exit Function
-
-
PP_Onload_Err:
-
If Err = 2585 Then
-
Resume PP_Onload_Exit
-
Else
-
LogError Err, Err.Description, "PP_Unload"
-
End If
-
-
End Function
-
After running the code, the Debug statement shows the correct code for the "Modified report". The Report opens correctly in the desired language, but still asks me to save it when I close the report.
Any further thoughts
Phil
NeoPa 32,564
Recognized Expert Moderator MVP
No further thoughts Phil, but you may like to reread what I said in my earlier post. LMK if further explanation is required.
I have a vague idea that it may be possible to create a "virtual" copy of the form or report and append it to the database AllForms or AllReports collections.
Then make the necessary changes to this virtual report, display it, and on closing just remove remove it from the Allforms or AllReprts collection.
Is this likely to work?
Is there likely to be database bloat issues?
Phil
NeoPa 32,564
Recognized Expert Moderator MVP Phil:
Is this likely to work?
No. I may be mistaken but I don't see any reason to assume that would have the effect you're after. Phil:
Is there likely to be database bloat issues?
No. If you were to try it I don't see any reason that it would cause any more bloat than opening Forms/Reports in the usual way.
I'm afraid I have a very busy weekend ahead Phil. When I can though, I'll try to fit in posting more details about how I use the technique i outlined in my earlier post. I'm surprised that Access doesn't treat changes made while in display view as temporary automatically myself. That would leave you with nothing to do. However, they don't, so I've developed a fairly straightforward technique to handle exactly that which I use in many of my Forms. Some Forms and most Reports don't need it but for those that do I use the technique explained earlier. It's always worked perfectly for me.
Thanks to all for advice
The problem is solved don't ask how, but involves class modules & virtual forms. Anyway it works for forms so I think I can use the same technique for reports.
Here goes ...
Phil
Spoke too soon. The routine works perfectly for forms, but I can't get it to work for Reports.
To Clarify, this is a program to translate any database into a different language. Obviously it has limitations but it translates Labels, Captions, Command Buttons, Check Boxes, Option Buttons, Control Tip Text, Status Bar, Combo & List boxes where there is a value list, some Combo & List boxes where there is a query on both forms or reports.
An output language is selected and what should happen is that you either have a command button open the form or report (or even use the debug window).
The form if the command is for Form, use the code
PLP_OpenFormRep ort 1, "FormName"
and for Reports
PLP_OpenFormRep ort 2, "ReportName "
It works perfectly for forms, but have been struggling for a week using pretty well identical code to get it to work for Reports, but with no joy.
If anyone has any time to spare, I would be grateful for assistance, but it may or may not be a 5 minute job
Thanks for any volunteers
Phil
NeoPa 32,564
Recognized Expert Moderator MVP
I'd certainly love to help you through this Phil. Unfortunately, for now, I'm up to my eyeballs on various different levels so working hard simply to avoid drowning.
Maybe at the weekend I may get some time to talk you through it. In the meantime, when I get a little less time as it will take less, I'd like to flesh out my earlier suggestion so that it's understandable to a larger audience. My earlier comments were certainly kept brief but it seems clear now there were probably a little too cryptic.
I haven't forgotten you or this particular issue.
-Ade.
Thanks Adrian, I really appreciate your offer. In the mean time, I have more than enough to keep me out of mischief
Cheers
Phil
Sign in to post your reply or Sign up for a free account.
Similar topics |
by: Scott Sabo |
last post by:
I have a form & report based on a query which shows details about
employees performance reviews (hire date, review date, review submital
date, etc). We do 90 day probation reviews as well and I want to be
able to indicate employees who have a hire date that is within 90 days
of the current date and highlight their records in the form and...
|
by: ghadley_00 |
last post by:
MS Access Create form / report with multiple pages using different
background images
Hi,
Would like to have users fill out a multipage form, and then click a
print button, which pulls up the info just entered for a particular
record and print out multiple pages of forms, each page having a
different image as background.
|
by: ernxos |
last post by:
Hi,
There is a button on one of my www pages which changes page content. It
adds some fields to the form, which is created by php script. After
changing the page is displayed once again. What I want to do is to save
form data so after changing and reloading the page field are filled.
That button is not Submit button. Can I do such thing?
|
by: Mac Campbell |
last post by:
For some unknown reason my mdb seemed to drop a module I had named "Utilities". I tried to copy the module back in from a backup copy and got the error message "<<MyProject>> is currently unable to rename the form, report, or module to 'Utilities' ... Close the database, reopen it, and try the rename operation again." This didn't work. It seemed...
|
by: =?Utf-8?B?QmlsbHkgWmhhbmc=?= |
last post by:
I am using reporting service with asp.net.
I want to save a report snapshot in some time.
How do I do this in asp.net? Is there any web service to do this?
Thanks in advance!
-Billy
| |
by: MyWaterloo |
last post by:
I am trying to open my purchase orders form and go to the last record. In the on open command I do: DoCmd.GoToRecord , , acLast Seems straight forward enough...but I keep getting this message "You entered an expression that has invalid reference to the property Form/Report" before the form opens. After I acknowledge the message the form opens...
|
by: kimeee |
last post by:
I have a form that faculty need to fill out but it is very long and some stop before they can finish it and then have to re-enter all the fields they previously populated. So my boss asked if there was a way to set up the form so there is a 'save form' button and a 'submit' button, so our faculty don't have to complete the form in one sitting.
...
|
by: Seth Schrock |
last post by:
I'm creating a billing database and I'm wanting to be able to save the report that I use for the bill. I thought about using a Make Table query, but then you get a ton of tables. I could also export to PDF. My main problem is that I want a link to each bill in the customer form so that if a customer has a question about the bill, I can just...
|
by: beacon |
last post by:
Hi everybody,
I'm using Access 2010, but the format for the database is .mdb because I'm not ready to fully convert it to Access 2010 and the .accdb format.
I've been reading up on how to create Shortcut Menus in Access 2010 using VBA and I'm pretty confident I understand how most of it works...meaning that I can create a custom shortcut...
|
by: nalongar |
last post by:
Hi!
First off, bear with me; I've just started to learn VBA and this is my first post on this site. My question could be extremely basic, but I haven't been able to find anything via the internet that fits my needs exactly.
I need a way to save a report to a specific path after I have printed it as a PDF, so that I can send it as an email...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
| |
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it. ...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in...
| |
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |