[AccessD] Off the wall Events question...

Shamil Salakhetdinov shamil at smsconsulting.spb.ru
Thu Feb 13 07:28:00 CST 2003


> You can know at runtime your access version with..
Sure you can, Patricio,

But SysCmd(acSysCmdAccessVer) can't help to answer the subject's question...

Shamil

----- Original Message -----
From: "Patricio Galleguillos" <pgalleguillos at plus.cl>
To: <accessd at databaseadvisors.com>
Sent: Thursday, February 13, 2003 2:28 PM
Subject: RE: [AccessD] Off the wall Events question...


> Hi Shamil and group
>
> You can know at runtime your access version with
>
>     VersionDelAccess = SysCmd(acSysCmdAccessVer)
>
> (Don't know if syscmd works in access97)
>
> Saludos cordiales,
> Patricio Galleguillos
>
>
> -----Mensaje original-----
> De: accessd-admin at databaseadvisors.com
> [mailto:accessd-admin at databaseadvisors.com] En nombre de Shamil
> Salakhetdinov
> Enviado el: jueves, 13 de febrero de 2003 7:40
> Para: accessd at databaseadvisors.com
> Asunto: Re: [AccessD] Off the wall Events question...
>
> > So, does anyone know how to accomplish the same thing in Access 97.
> Drew,
>
> It looks a little bit ugly but it can be done in Acc97 and ported to
> A2K/AXP/A11 with just a few edits of the source code - here is one of
> the
> ways to do it:
>
> '================  cut here ==================
> '+ CMyClassWithEvents (custom class module)
> #Const Acc97 = 1 ' change to 0 in A2K/AXP/A11
> #If Acc97 Then
> Private mobjCallBackClient As Object
>
> Public Sub Init(ByRef robjCallBackClient As Object)
>     Set mobjCallBackClient = robjCallBackClient
> End Sub
> Public Sub Terminate()
>     Set mobjCallBackClient = Nothing
> End Sub
> #Else
> 'Event MyEvent() ' uncomment in A2K/AXP/A11
> #End If
>
> Public Sub CallBackTest()
> #If Acc97 Then
>     mobjCallBackClient.MyEvent
> #Else
>     'RaiseEvent MyEvent  ' uncomment in A2K/AXP/A11
> #End If
> End Sub
> '- CMyClassWithEvents
>
> '================  cut here ==================
> '+ CMyCustomsEventsClient (custom class module)
> #Const Acc97 = 1 ' change to 0 in A2K/AXP/A11
>
> #If Acc97 Then
> Private mobjMyClassWithEvents As CMyClassWithEvents
> #Else
> Private WithEvents mobjMyClassWithEvents As CMyClassWithEvents
> #End If
>
> Public Sub Test()
>    Set mobjMyClassWithEvents = New CMyClassWithEvents
>    With mobjMyClassWithEvents
>      #If Acc97 Then
>       .Init Me
>       .CallBackTest
>       .Terminate
>      #Else
>       .CallBackTest
>      #End If
>    End With
> End Sub
>
> Private Sub mobjMyClassWithEvents_MyEvent()
>     MsgBox "MyEvent fired!", vbOKOnly + vbInformation
> End Sub
>
> #If Acc97 Then
> Public Sub MyEvent()
>     mobjMyClassWithEvents_MyEvent
> End Sub
> #Else
> #End If
> '- CMyCustomsEventsClient
>
> '================  cut here ==================
> '+ basTest (standard module)
> Public Sub a_test()
>     Dim o As CMyCustomsEventsClient
>     Set o = New CMyCustomsEventsClient
>     o.Test
> End Sub
> '- basTest
> '================  cut here ==================
>
> - Of course you can set project level conditional compilation constant
> Acc97
> to have less work during your port to A2k/Axp/A11;
> - Unfortunately Event and RaiseEvent are reserved words in Acc97 and
> even
> conditional compilation doesn't allow to use them without comments - so
> during port to A2k/Axp/A11 additional work of uncommenting code lines
> with
> RaiseEvent and Event will be needed...;
> - I did use very simple custom event without any arguments to show the
> principle - in the case of the usage of event arguments callback methods
> can
> be specific for every custom event or this technique can use more
> general
> callback method with EventName as the first paramater and ParamArray
> following it and Select Case inside it to call specific private custom
> event
> sinks ...;
> - Init method is what MS Access does "behind the curtains" when you use
> WithEvents;
> - Terminate method is a MUST HAVE for this custom events Acc97
> simulation -
> without it object instances will not be released because of cross-refs
> and
> you'll get memory leak....
>
> HTH,
> Shamil
>
>
> ----- Original Message -----
> From: "Drew Wutka" <DWUTKA at marlow.com>
> To: <AccessD at databaseadvisors.com>
> Sent: Thursday, February 13, 2003 7:49 AM
> Subject: [AccessD] Off the wall Events question...
>
>
> > With all of the posts about events recently, something just dawned on
> me.
> > Actually, it came crashing down on me.
> >
> > I have been rewriting my MiniCalendar form lately.  My original works,
> but
> > is far from elegant, or even slick.  I had visualized a lot of changes
> I
> > wanted to incorporate, and just starting wacking at them all.
> >
> > So far I have gotten some neat 'features', such as a rounded form,
> extended
> > dropdown capability, etc.  However, one of the new features that I had
> > planned on, I now know I can't do directly.  The old form accepted a
> form
> > name and control name, and would return a date to that control.  What
> I
> > wanted to use in this version was raiseevent, to fire an event on the
> > calling form.  Thinking in VB 6 mode, I didn't even realize this would
> be
> a
> > problem with Access 97, since I can do this easily in VB 6.  But with
> all
> of
> > the recent posts, I realized that event and raiseevent are reserved
> keywords
> > in Access 97 (VBA 5.0), but do nothing.
> >
> > ARG!!!!
> >
> > So, does anyone know how to accomplish the same thing in Access 97.  I
> will
> > be making a 2000 version of my calendar, so obviously I can use event
> and
> > raiseevent there, but I am developing the new version in 97 first, so
> I
> need
> > a work around.  I am thinking about using one of the form's current
> events,
> > and triggering it.  (Probably AfterUpdate).  I wanted my own event,
> but
> that
> > doesn't look possible.  I even tried hunting through the VBA .dll's,
> to
> see
> > if I could fudge an API or two, but no luck there.
> >
> > Any thoughts?
> >
> > Drew
> > _______________________________________________
> > 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