[AccessD] Feeding an paramarray to a paramarray

Michael R Mattys mmattys at rochester.rr.com
Wed Mar 12 12:13:35 CDT 2008


Hmmm. I've read about this before, pass in pointer to start of array,
number elements, etc

Declare Function SetBitmapBits Lib "gdi32" Alias _
"SetBitmapBits" (ByVal hBitmap As Long, _
ByVal dwCount As Long, lpBits As Any) As Long

Michael R. Mattys
MapPoint & Access Dev
www.mattysconsulting.com

----- Original Message ----- 
From: "jwcolby" <jwcolby at colbyconsulting.com>
To: "'Access Developers discussion and problem solving'" 
<accessd at databaseadvisors.com>
Sent: Wednesday, March 12, 2008 11:49 AM
Subject: Re: [AccessD] Feeding an paramarray to a paramarray


> Drew,
>
> LOL.
>
>>Ya learn something new everyday.
>
> Would you speak into the microphone please...
>
> The "solution" did the trick, but at the expense of eliminating the 
> ability
> to pass in multiple arguments to SecondParamfunction.  It is the keyword
> ParamArray that allows the passing in of multiple arguments.  It is often
> useful to have two functions, BOTH of which have param arrays, and be able
> to call either one directly, but also call one from the other.  It is the
> "call one from the other" that is not possible if both have paramarrays.
>
> ParamArrays are indeed a neat trick and one I use all of the time.  What
> would be REALLY cool would be to be able to pass into TWO paramarrays but
> that is syntactically impossible - there is no way to denote where
> parameters aimed at one array ends and where the parameters aimed at the
> next array begins.  The language could be expanded to allow a semicolon to
> denote the end of one list and the beginning of the next but that doesn't
> currently exist.
>
> John W. Colby
> Colby Consulting
> www.ColbyConsulting.com
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Drew Wutka
> Sent: Wednesday, March 12, 2008 11:14 AM
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] Feeding an paramarray to a paramarray
>
> Ya learn something new everyday.  Never even knew about the ParamArray
> option.  Pretty slick.  Anyhow, I whipped out my trusty 'solve all my
> problems' tool, otherwise known as Google, and on the second page of hits
> for ParamArray, I found this:
>
> http://support.microsoft.com/kb/157351
>
> Sure enough, changing this:
>
> Function TestParamArray(strSomething As String, ParamArray tmpParams() As
> Variant) Dim varMember For Each varMember In tmpParams
>    Debug.Print strSomething & " " & varMember
>    SecondParamFunction tmpParams
> Next
> End Function
> Function SecondParamFunction(ParamArray tmpParams() As Variant) Dim
> varMember For Each varMember In tmpParams
>    Debug.Print varMember
> Next
> End Function
>
> To this:
>
> Function TestParamArray(strSomething As String, ParamArray tmpParams() As
> Variant) Dim varMember For Each varMember In tmpParams
>    Debug.Print strSomething & " " & varMember
>    SecondParamFunction tmpParams
> Next
> End Function
> Function SecondParamFunction(ByVal tmpParams As Variant) Dim varMember For
> Each varMember In tmpParams
>    Debug.Print varMember
> Next
> End Function
>
> Did the trick!
>
> Drew
>
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby
> Sent: Wednesday, March 12, 2008 5:23 AM
> To: 'Access Developers discussion and problem solving'
> Subject: [AccessD] Feeding an paramarray to a paramarray
>
> Paramarrays are very useful.
>
> function ListGrpMembers(ParamArray GrpMembers() as variant) dim 
> varGrpMember
> for each varGrpMember in GrpMembers
> debug.print varGrpMember
> next varGrpMember
> end function
>
> ListGrpMembers "John", "Mary", "Robbie", "Allie"
>
> Paramarrays allow you to feed a variable number of values into a function,
> and then easily manipulate the array that they are placed in using a for
> each iterator.
>
> The problem lies if you then need to feed that array off to another
> function.
>
> function LogGrpMembers(Paramarray GrpMembers() as variant) end function
>
> Using a function as shown above doesn't work.  If you pass the
> GrpMembers()
> array assembled in ListGrpMembers into LogGrpMembers you get a runtime
> error.
>
> I have "solved" this problem by unpacking the array into a collection and
> passing the collection into the next function.
>
> function LogGrpMembers( GrpMembers as collection) end function
>
> function ListGrpMembers(ParamArray GrpMembers() as variant) dim 
> varGrpMember
> dim colGrpMembers as collection
> set col
> for each varGrpMember in GrpMembers
> colGrpMembers.Add  varGrpMember
> next varGrpMember
> LogGrpMembers colGrpMembers
>
> end function
>
> While that works, it is cumbersome and there are times where you would
> really like the second function to be a ParamArray as well, perhaps so 
> that
> it can be called directly if required.
>
> Am I missing something?  Is there a syntax for passing a paramarray into
> another paramarray?
>
> John W. Colby
> Colby Consulting
> www.ColbyConsulting.com
>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com The information contained in this
> transmission is intended only for the person or entity to which it is
> addressed and may contain II-VI Proprietary and/or II-VI Business 
> Sensitive
> material. If you are not the intended recipient, please contact the sender
> immediately and destroy the material in its entirety, whether electronic 
> or
> hard copy. You are notified that any review, retransmission, copying,
> disclosure, dissemination, or other use of, or taking of any action in
> reliance upon this information by persons or entities other than the
> intended recipient is prohibited.
>
>
> -- 
> 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