[AccessD] Feeding an paramarray to a paramarray

Gustav Brock Gustav at cactus.dk
Wed Mar 12 05:38:48 CDT 2008


Hi John

As far as I know, a Variant can hold an array. Thus you should be able to pass your modified array as a Variant to the next function.
Not very elegant and leads to not so easy to read code. Your use of a Collection might be preferable.

/gustav


>>> jwcolby at colbyconsulting.com 12-03-2008 11:22 >>>
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 






More information about the AccessD mailing list