Invalid Procedure Call or Arguement

Discussion in 'ASP General' started by Matt, May 5, 2006.

  1. Matt

    Matt Guest

    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.
    Matt, May 5, 2006
    #1
    1. Advertising

  2. Matt

    Matt Guest

    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:...
    >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.
    >
    Matt, May 5, 2006
    #2
    1. Advertising

  3. Matt

    Bob Lehmann Guest

    > 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:%...
    > 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:...
    > >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.
    > >

    >
    >
    Bob Lehmann, May 5, 2006
    #3
  4. Matt

    Bob Lehmann Guest

    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:%...
    > 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:...
    > >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.
    > >

    >
    >
    Bob Lehmann, May 5, 2006
    #4
  5. Matt

    Matt Guest

    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:...
    > 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:%...
    >> 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:...
    >> >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.
    >> >

    >>
    >>

    >
    >
    Matt, May 5, 2006
    #5
  6. "Matt" <> wrote in message
    news:...
    >
    > 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.
    Anthony Jones, May 5, 2006
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?ISO-8859-1?Q?Jean-S=E9bastien_Bolduc?=

    eval's local arguement ignored?

    =?ISO-8859-1?Q?Jean-S=E9bastien_Bolduc?=, Sep 23, 2003, in forum: Python
    Replies:
    4
    Views:
    335
    Peter Abel
    Sep 30, 2003
  2. Nike
    Replies:
    7
    Views:
    371
  3. In-Ho Yi
    Replies:
    1
    Views:
    250
    Vitaly Filimonov [MSFT]
    Dec 11, 2003
  4. Replies:
    1
    Views:
    167
    Phill. W
    Aug 11, 2005
  5. an an
    Replies:
    11
    Views:
    195
    an an
    Feb 9, 2008
Loading...

Share This Page