[AccessD] Feeding an paramarray to a paramarray

Drew Wutka DWUTKA at Marlow.com
Wed Mar 12 10:14:08 CDT 2008


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.





More information about the AccessD mailing list