[AccessD] Accessing AfterUpdate Event from another procedure

Jim Lawrence accessd at shaw.ca
Wed Aug 30 14:15:52 CDT 2006


Hi Borge:

In order to run/spawn another running form and/or processed you will have to
run a do event process. See example below:

Private Sub MyList_DblClick()
 Dim bolFormOpen as Boolean
 
 ...
 
 bolFormOpen = True
	
 DoCmd.OpenForm "MyCalledForm"
 
 Do while bolFormOpen = true 
   Do While globalBooleanFlag = True
     DoEvents
   Loop

   bolFormOpen = IsLoaded("MyCalledForm")  

   If bolFornOpen = True then
     AddAnotherRecordtoaTable()
   End if
	
   globalBooleanFlag = bolFormOpen
 Loop
 	
End Sub

...


Public Function IsLoaded(ByVal strFormName As String) As Boolean
 Dim bolStatus as Boolean
   
 Const conObjStateClosed = 0
 Const conDesignView = 0
 bolStatus = False 
   
 If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed
Then
   If Forms(strFormName).CurrentView <> conDesignView Then
     bolStatus = True
   End If
 End If
 
 IsLoaded = bolStatus
    
End Function

Upon initialization the form MyCalledForm it sets the variable
globalBooleanFlag to TRUE, within the called Form, it can spawn an external
process by setting it to FALSE and holds the caller processing, in the
subroutine to the current position until the Form MyCalledForm is closed.  

If you expand on this "a little more complex than I wanted to have" example,
you can have a number of forms opened and various processes running.  

Also check out WithEvents example by John,
http://www.databaseadvisors.com/newsletters/newsletter052002/0205CombiningRa
iseEvents%20.htm and Shamil
http://smsconsulting.spb.ru/shamil_s/articles.htm which describes similar
functionality using the WithEvent clause. 
   
HTH
Jim

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of
paul.hartland at fsmail.net
Sent: Wednesday, August 30, 2006 7:59 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Accessing AfterUpdate Event from another procedure
Importance: High

I too am unsure what your trying to do but you would need to use a call
statement....I know you can call events in the same form your working in,
but as for another form I don't know if it would work....you could always
try
      CALL Forms![frmControl].cboNav_AfterUpdate
As I say I don't know if it would work, but surely there could be a better
solution..

Paul





Message Received: Aug 30 2006, 03:50 PM
From: "Charlotte Foust" 
To: "Access Developers discussion and problem solving" 
Cc: 
Subject: Re: [AccessD] Accessing AfterUpdate Event from another procedure

It isn't clear to me what you're trying to accomplish with this.
Perhaps you could explain it in overview, not the specifics but what you
hope to achieve as a result. I still think trying to call the
afterupdate event of a combobox on another form is going the long away
around to get nowhere.

Charlotte Foust 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Borge Hansen
Sent: Tuesday, August 29, 2006 7:16 PM
To: Access Developers discussion and problem solving
Subject: [AccessD] Accessing AfterUpdate Event from another procedure

Hmmmm...
I always seem to get stuck when attempting to access and run code in an
afterupdate event when trying to call and execute the event from another
procedure in another module than the Form module the afterupdate event
code resides in....

So what are the clear cuts on this.... please

See the code snippet below

Regards
Borge

/Code snippet:

If FIsLoaded("frmSystem") Then
If FIsLoaded("frmControl") Then
Dim strSecName As String
Dim boolModuleNamePresent As Boolean

strSecName = Forms("frmSystem")("SecName")
boolModuleNamePresent = DLookup("Screen1", "tblSystem",
"SecName = '" & strSecName & "'")

If boolModuleNamePresent Then

Dim frm As Form
Dim ctrl As ComboBox
Set frm = Forms!frmControl
Set ctrl = frm!cboNav

ctrl.Value = "Clients"

'just for testing - tests ok!
Dim vValue0
Dim vValue1
Dim vValue2
Dim vValue3
Dim vValue4

vValue0 = ctrl
vValue1 = ctrl.Column(1)
vValue2 = ctrl.Column(2)
vValue3 = ctrl.Column(3)
vValue4 = ctrl.Column(4)
'end just for testing

'HERE: how do I call the AfterUpdate event of cboNav
in the open form called frmControl ??

' cboNav_AfterUpdate to execute here

Set frm = Nothing
Set ctrl = Nothing


Else
MyMsgBox "You do not have access to the Clients
Module" & vbCrLf & "Please see the System Administrator about this!",
vbInformation
End If
Else
MyMsgBox "This Form requires frmControl to be loaded!",
vbCritical
End If
Else
MyMsgBox "This Form requires frmSystem to be loaded!",
vbCritical
End If




--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com
-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list