Invalid Procedure Call or Arguement

Invalid Procedure Call or Arguement

am 05.05.2006 16:05:33 von matt

I am receiving the following error from the simple script below. This works
fine from a .NET form but when I access the dll from a Classic ASP page it
fails.

Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument: 'GetGroups'


Dim oUser 'As mnaSecurityUser
Dim oDBAdapter 'As mnasecurityDBAdapter
Dim group 'As mnasecurityGroup

Set oUser = Server.CreateObject("mnaSecurityControl.mnasecurityUser")
Set oDBAdapter =
Server.CreateObject("mnaSecurityControl.mnasecurityDBAdapter ")

Set oUser = oDBAdapter.GetUser("mamarsha")
'This works ok
Response.Write "'" & oUser.FirstName & "'"

'This line returns the error
Set oUser.Groups = oDBAdapter.GetGroups(oUser)

For each group in oUser.Groups
Response.Write "'" & group.name & "'"
Next

GetGroups is a method that accepts an mnasecurityUser object as a parameter.
Groups (in oUser.Groups) is a collection object property of the
mnasecurityUser object.

Re: Invalid Procedure Call or Arguement

am 05.05.2006 21:42:17 von matt

I have found the culprit but I am not sure why it worked in .NET ok but not
from an ASP page? The GetUsers function accepted a parameter of the type
mnasecurityUser object.



Public Function GetUsers(ByRef oUser as mnasecurityUser) as
mnasecurityGroups



From my code I passed in oUser which was instantiated as a mnasecurityUser
object (see previous post for code)



I changed the function in my object to accept a UserID as an integer and
everything worked fine.



Public Function GetUsers(ByRef iUser As Integer) as mnasecurityGroups



From my Asp page I updated the following line of code



Set oUser.Groups = oDBAdpater.GetUsers(oUser)



to



Set oUser.Groups = oDBAdpater.GetUsers(oUser.ID)



Does anyone know why I can't pass an object as a parameter from an ASP page?
Or let me know what I did wrong in my ASP page when I was trying to pass the
object?



Thanks.



"Matt" wrote in message
news:uxV96zEcGHA.4892@TK2MSFTNGP02.phx.gbl...
>I am receiving the following error from the simple script below. This works
>fine from a .NET form but when I access the dll from a Classic ASP page it
>fails.
>
> Microsoft VBScript runtime error '800a0005'
>
> Invalid procedure call or argument: 'GetGroups'
>
>
> Dim oUser 'As mnaSecurityUser
> Dim oDBAdapter 'As mnasecurityDBAdapter
> Dim group 'As mnasecurityGroup
>
> Set oUser = Server.CreateObject("mnaSecurityControl.mnasecurityUser")
> Set oDBAdapter =
> Server.CreateObject("mnaSecurityControl.mnasecurityDBAdapter ")
>
> Set oUser = oDBAdapter.GetUser("mamarsha")
> 'This works ok
> Response.Write "'" & oUser.FirstName & "'"
>
> 'This line returns the error
> Set oUser.Groups = oDBAdapter.GetGroups(oUser)
>
> For each group in oUser.Groups
> Response.Write "'" & group.name & "'"
> Next
>
> GetGroups is a method that accepts an mnasecurityUser object as a
> parameter. Groups (in oUser.Groups) is a collection object property of the
> mnasecurityUser object.
>

Re: Invalid Procedure Call or Arguement

am 05.05.2006 21:55:37 von Bob Lehmann

> Does anyone know why I can't pass an object as a parameter

By 'parameter', I assume you mean argument.

You can pass objects to Subs and Functions in VBScript. What you can't do,
is declare the type for the Function / Sub argument.

No -
Public Function GetUsers(ByRef oUser as mnasecurityUser)

Yes -
Public Function GetUsers(ByRef oUser)

Bob Lehmann

"Matt" wrote in message
news:%23W6KGwHcGHA.3900@TK2MSFTNGP05.phx.gbl...
> I have found the culprit but I am not sure why it worked in .NET ok but
not
> from an ASP page? The GetUsers function accepted a parameter of the type
> mnasecurityUser object.
>
>
>
> Public Function GetUsers(ByRef oUser as mnasecurityUser) as
> mnasecurityGroups
>
>
>
> From my code I passed in oUser which was instantiated as a mnasecurityUser
> object (see previous post for code)
>
>
>
> I changed the function in my object to accept a UserID as an integer and
> everything worked fine.
>
>
>
> Public Function GetUsers(ByRef iUser As Integer) as mnasecurityGroups
>
>
>
> From my Asp page I updated the following line of code
>
>
>
> Set oUser.Groups = oDBAdpater.GetUsers(oUser)
>
>
>
> to
>
>
>
> Set oUser.Groups = oDBAdpater.GetUsers(oUser.ID)
>
>
>
> Does anyone know why I can't pass an object as a parameter from an ASP
page?
> Or let me know what I did wrong in my ASP page when I was trying to pass
the
> object?
>
>
>
> Thanks.
>
>
>
> "Matt" wrote in message
> news:uxV96zEcGHA.4892@TK2MSFTNGP02.phx.gbl...
> >I am receiving the following error from the simple script below. This
works
> >fine from a .NET form but when I access the dll from a Classic ASP page
it
> >fails.
> >
> > Microsoft VBScript runtime error '800a0005'
> >
> > Invalid procedure call or argument: 'GetGroups'
> >
> >
> > Dim oUser 'As mnaSecurityUser
> > Dim oDBAdapter 'As mnasecurityDBAdapter
> > Dim group 'As mnasecurityGroup
> >
> > Set oUser = Server.CreateObject("mnaSecurityControl.mnasecurityUser")
> > Set oDBAdapter =
> > Server.CreateObject("mnaSecurityControl.mnasecurityDBAdapter ")
> >
> > Set oUser = oDBAdapter.GetUser("mamarsha")
> > 'This works ok
> > Response.Write "'" & oUser.FirstName & "'"
> >
> > 'This line returns the error
> > Set oUser.Groups = oDBAdapter.GetGroups(oUser)
> >
> > For each group in oUser.Groups
> > Response.Write "'" & group.name & "'"
> > Next
> >
> > GetGroups is a method that accepts an mnasecurityUser object as a
> > parameter. Groups (in oUser.Groups) is a collection object property of
the
> > mnasecurityUser object.
> >
>
>

Re: Invalid Procedure Call or Arguement

am 05.05.2006 21:58:10 von Bob Lehmann

Oops! I didn't read your initial post.

Still pretty much the same answer.

Everything in VBScript is a variant, so, if I remember correctly, the args
in the dll's Subs / Functions need to be of type Variant.


Bob Lehmann


"Matt" wrote in message
news:%23W6KGwHcGHA.3900@TK2MSFTNGP05.phx.gbl...
> I have found the culprit but I am not sure why it worked in .NET ok but
not
> from an ASP page? The GetUsers function accepted a parameter of the type
> mnasecurityUser object.
>
>
>
> Public Function GetUsers(ByRef oUser as mnasecurityUser) as
> mnasecurityGroups
>
>
>
> From my code I passed in oUser which was instantiated as a mnasecurityUser
> object (see previous post for code)
>
>
>
> I changed the function in my object to accept a UserID as an integer and
> everything worked fine.
>
>
>
> Public Function GetUsers(ByRef iUser As Integer) as mnasecurityGroups
>
>
>
> From my Asp page I updated the following line of code
>
>
>
> Set oUser.Groups = oDBAdpater.GetUsers(oUser)
>
>
>
> to
>
>
>
> Set oUser.Groups = oDBAdpater.GetUsers(oUser.ID)
>
>
>
> Does anyone know why I can't pass an object as a parameter from an ASP
page?
> Or let me know what I did wrong in my ASP page when I was trying to pass
the
> object?
>
>
>
> Thanks.
>
>
>
> "Matt" wrote in message
> news:uxV96zEcGHA.4892@TK2MSFTNGP02.phx.gbl...
> >I am receiving the following error from the simple script below. This
works
> >fine from a .NET form but when I access the dll from a Classic ASP page
it
> >fails.
> >
> > Microsoft VBScript runtime error '800a0005'
> >
> > Invalid procedure call or argument: 'GetGroups'
> >
> >
> > Dim oUser 'As mnaSecurityUser
> > Dim oDBAdapter 'As mnasecurityDBAdapter
> > Dim group 'As mnasecurityGroup
> >
> > Set oUser = Server.CreateObject("mnaSecurityControl.mnasecurityUser")
> > Set oDBAdapter =
> > Server.CreateObject("mnaSecurityControl.mnasecurityDBAdapter ")
> >
> > Set oUser = oDBAdapter.GetUser("mamarsha")
> > 'This works ok
> > Response.Write "'" & oUser.FirstName & "'"
> >
> > 'This line returns the error
> > Set oUser.Groups = oDBAdapter.GetGroups(oUser)
> >
> > For each group in oUser.Groups
> > Response.Write "'" & group.name & "'"
> > Next
> >
> > GetGroups is a method that accepts an mnasecurityUser object as a
> > parameter. Groups (in oUser.Groups) is a collection object property of
the
> > mnasecurityUser object.
> >
>
>

Re: Invalid Procedure Call or Arguement

am 05.05.2006 22:50:44 von matt

Thanks Bob.

If I set the argument to VariantType in my function, how can I then access
the object properties in the function?


"Bob Lehmann" wrote in message
news:uvVmo4HcGHA.4108@TK2MSFTNGP03.phx.gbl...
> Oops! I didn't read your initial post.
>
> Still pretty much the same answer.
>
> Everything in VBScript is a variant, so, if I remember correctly, the args
> in the dll's Subs / Functions need to be of type Variant.
>
>
> Bob Lehmann
>
>
> "Matt" wrote in message
> news:%23W6KGwHcGHA.3900@TK2MSFTNGP05.phx.gbl...
>> I have found the culprit but I am not sure why it worked in .NET ok but
> not
>> from an ASP page? The GetUsers function accepted a parameter of the type
>> mnasecurityUser object.
>>
>>
>>
>> Public Function GetUsers(ByRef oUser as mnasecurityUser) as
>> mnasecurityGroups
>>
>>
>>
>> From my code I passed in oUser which was instantiated as a
>> mnasecurityUser
>> object (see previous post for code)
>>
>>
>>
>> I changed the function in my object to accept a UserID as an integer and
>> everything worked fine.
>>
>>
>>
>> Public Function GetUsers(ByRef iUser As Integer) as mnasecurityGroups
>>
>>
>>
>> From my Asp page I updated the following line of code
>>
>>
>>
>> Set oUser.Groups = oDBAdpater.GetUsers(oUser)
>>
>>
>>
>> to
>>
>>
>>
>> Set oUser.Groups = oDBAdpater.GetUsers(oUser.ID)
>>
>>
>>
>> Does anyone know why I can't pass an object as a parameter from an ASP
> page?
>> Or let me know what I did wrong in my ASP page when I was trying to pass
> the
>> object?
>>
>>
>>
>> Thanks.
>>
>>
>>
>> "Matt" wrote in message
>> news:uxV96zEcGHA.4892@TK2MSFTNGP02.phx.gbl...
>> >I am receiving the following error from the simple script below. This
> works
>> >fine from a .NET form but when I access the dll from a Classic ASP page
> it
>> >fails.
>> >
>> > Microsoft VBScript runtime error '800a0005'
>> >
>> > Invalid procedure call or argument: 'GetGroups'
>> >
>> >
>> > Dim oUser 'As mnaSecurityUser
>> > Dim oDBAdapter 'As mnasecurityDBAdapter
>> > Dim group 'As mnasecurityGroup
>> >
>> > Set oUser = Server.CreateObject("mnaSecurityControl.mnasecurityUser")
>> > Set oDBAdapter =
>> > Server.CreateObject("mnaSecurityControl.mnasecurityDBAdapter ")
>> >
>> > Set oUser = oDBAdapter.GetUser("mamarsha")
>> > 'This works ok
>> > Response.Write "'" & oUser.FirstName & "'"
>> >
>> > 'This line returns the error
>> > Set oUser.Groups = oDBAdapter.GetGroups(oUser)
>> >
>> > For each group in oUser.Groups
>> > Response.Write "'" & group.name & "'"
>> > Next
>> >
>> > GetGroups is a method that accepts an mnasecurityUser object as a
>> > parameter. Groups (in oUser.Groups) is a collection object property of
> the
>> > mnasecurityUser object.
>> >
>>
>>
>
>

Re: Invalid Procedure Call or Arguement

am 05.05.2006 23:25:07 von Anthony Jones

"Matt" wrote in message
news:eISKWWIcGHA.3872@TK2MSFTNGP04.phx.gbl...
>
> Thanks Bob.
>
> If I set the argument to VariantType in my function, how can I then access
> the object properties in the function?
>
>

Your real problem is the use of a ByRef. The only argument that VBScript
can pass byref is a variant.

Change the parameter to ByVal oUser as mnasecurityUser. You really should
use ByVal for most parameters anyway regardless of whether they are to be
called from script or not.

Anthony.