OK. Should I create two functions? One to retrieve the value, and another to set the value? And place both functions in my module?
This makes alot more sense than any help files I have read previously.
"Z"
Main Topics
Browse All TopicsThis should be easy. I'm trying to declare several global variables that will be available to every form in my database. After searching the internet, and through trial and error, I am pretty sure that I need to declare the variables as Public in the General section of a Module. I created a new module called Global Settings, and put my declarations in there:
Public gCurrent_Marshal As String
Public gCurrent_Marshal_ID As String
Public Const gChapter_Name As String = "ULTRA National"
Public Const gChapter_ID As String = "00"
However, when I try to read these variables, or change them using my forms, my forms act as though they do not exist. I have several text controls on my forms that instead of showing the value, they show #Name?
I know some other resources have said to make sure you are not declaring a module level or procedure level variable with the same name, and I have confirmed that I have NO other Dim, Public, or Private commands referencing these variables.
I have a Main Menu form that should display the values of gCurrent_Marshal and gChapter_Name. I have a Choose User form that references a table that has a list of user names and user id's that I use a List Box, unbound, and then set the following code for when they double click on a user name in the list box:
Private Sub lstChooseUser_AfterUpdate(
gCurrent_Marshal = Me.lstChooseUser.Column(0)
gCurrent_Marshal_ID = Me.lstChooseUser.Column(1)
End Sub
The same form also has text boxes to report the values of gCurrent_Marshal and gCurrent_Marshal_ID.
None of these controls work unless I declare the variables inside the general section of the form itself... but then it erases the variables, and they won't work *outside* the form.
What am I doing wrong? Do I have to have the forms reference the module in some way? Force the module to load?
"Z"
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
First make sure these are in in a module under module tab (it apears they are):
Public gCurrent_Marshal As String
Public gCurrent_Marshal_ID As String
Public Const gChapter_Name As String = "ULTRA National"
Public Const gChapter_ID As String = "00"
----------
To set them, you just use:
gCurrent_Marshal =Me!txtMarshal 'for exampe, in a event.
-----
to read them to anter them in to a text box, say txtMarshal, reverse the order (once again in an event):
Me!txtMarshal= gCurrent_Marshal
This way, you don't have make functions.
Mike
But, to use it in aquery as criteria, you must use function calls. Under field [Marshal], for example, you would enter following line in the criteria cell"
IIF(fnMarshal()="",[Marsha
Where, in astandard module, under module tab, you will have:
Pumbic function fnMarshal()As String
If Nz(gCurrent_Marshal,"")=""
fnMarshal=""
Else
fnMarshal=gCurrent_Marshal
End If
End Function
Mike
Thank you Mike, but I had tried that earlier, and they wouldn't read the data outside of the same module. I could get them to work on one form, but they wouldn't hold the data going to another form.
The functions are surprisingly easy to program, and I am testing the last of them now. The only thing I have to do is include a redraw command when I change the data using a function, because it won't update on the display of a form automatically. Almost got this licked.
"Z"
Well, to make this easy, none of this information is going to be in a query.
When I had the declarations as above placed into a module, with NO functions, I used exactly the code as you described. And it would not read or set the variables.
The initial setting of the variables is done by my Main Menu, using Form_Open. Then the Menu itself showed these variables. When I tried the global variable = Value, it didn't error on me, (I don't have Option Explicit Set), but it didn't put a value in either.
Now with the functions, the variable set and read works perfectly. Almost. If I change the variable I can't get the text boxes showing the value to change. I tried
DoCmd.RepaintObject acDefault
Which should force repainting the current screen. But it's doesn't seem to do so.
If I can get these displays to refresh, I'm good to go!
"Z"
Re:>If I can get these displays to refresh, I'm good to go!
It means that variables are recognized.
-----
If you keep you txtBox unbound and use an event, say OnCurrent
MsgBox gCurrent_Marshal & " <-- Remove this line after making sure that variable value is available to you."
Me!txtMarshal=gCurrent_Mar
------------
I don't know when you are redefining its value, regardless of the event you are using, try:
gCurrent_Marshal="New Marshal"
MsgBox gCurrent_Marshal & " <-- Remove this line after making sure that variable value is REDEFINED."
Mike
Hi Zaehlas
I use a Module called mod_GeneralDeclarations
' --- Global Constants (Messages) --------------------------
Global gMsgText As String 'Text in MsgBox() and InputBox() functions
Global gMsgType As Integer 'Type in MsgBox() and InputBox() functions
Global gMsgTitle As String 'Title for MsgBox() and InputBox() function
Global gStatusText As String 'Status bar text used in Application.Echo method
I use this mainly for error reporting lke this:
Private Sub SomeSub()
On Error Goto ReportError
Your code here
ExitProcedure:
On Error Resume Next
Exit Sub
ReportError:
Select Case err.Number
Case 2501
Case 2501
Case 3420 'Object No longer Valid
Case 0
Case Else
gMsgTitle = "Error in mod_frm_Main.SomeSub"
gMsgType = vbOKOnly + vbCritical
gMsgText = "Error " & CStr(err.Number) & ":" & vbCrLf & err.Description
DoCmd.Hourglass False: Application.Echo True: Beep
MsgBox gMsgText, gMsgType, gMsgTitle
End Select
setCreditLimit = False
Resume ExitProcedure
End Sub
Alan Warren
OK, I will make the question more specific to my needs:
Why is it that when I declare a global variable in the top of one of my modules, like:
Global quitPrompt As String
and then assign it in one of my onclick form events:
quitPrompt = "False"
and then close the form, in the unload section when I return the variable:
msgbox quitPrompt
I get a null value?
i experienced the same problem, when i tried to declare a public variable on the declaration section(s) of my form, when i tried to use the variable after i close the form, the value became null so what i did was, i created a module (in the module section just below the macro section) of my project and after that i am able to retain the values of my variables.
hope this helps.
i experienced the same problem, when i tried to declare a public variable on the declaration section(s) of my form, when i tried to use the variable after i close the form, the value became null so what i did was, i created a module (in the module section just below the macro section of my project) and declared all my global variables in it and after that i am able to retain the values of my variables.
hope this helps.
Business Accounts
Answer for Membership
by: peter57rPosted on 2004-02-29 at 01:46:06ID: 10479446
Hello Zaehlas,
To display the value of a public variable you have to create a function to fetch it.
That's just the way it is.
So create a function that returns the value, and set the control source to
=myfunction() where myfunction is the name of the function you created.
Function Getpubvar1()
GetPubVar1 = PubVar1
end Function
Pete