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