Raj said:
I need a VB function to return array of collections like
Private Type Employee
empname as string
address as string
salary as integer
deptno as integer
End Type
dim employees() as Employee
Public Function getEmployees() as Employee()
getEmployees=employees
End Function
I will call that function in ASP.
This was not working any other method is welcomed.
Regards,
Raj.
First off the code above doesn't compile. You can't expose a private type
as a return value of a public member. You would need make the Employee type
public to get it to compile. Unfortunately that still doesn't help a great
deal with ASP.
ASP only has one data type, the variant (or two if you count an array of
variants as a type). Now whilst it is possible to re-arrange the VB code to
pass a reference to User-Defined type into a variant and thus into VBScript
you can't access the members of the type. The VBScript parsing doesn't
allow for the 'type.member' notation to work both for objects and for UDTs
as it does in VB6.
If the ASP merely needs to hold reference to a type that is passed to
another component then that is possible as long as appropriate measures are
taken to ensure the interfaces are compatible with Script in this way (I.E.
takes a variant ByRef).
If you need the ASP code to be able to access the members of the type then
you will need to use a class instead:-
'Class Employee
Public empname as string
Public address as string
Public salary as integer
Public deptno as integer
'Your class
Dim employees() as Variant ' Actuall contains employess objects
Public Function getEmployees() As Variant
getEmployees = employees
End Public
However that can get expensive. It may be better to turn your class into a
form of a collection. E.g.,
Dim employess() as Employee
Dim mlCount as Long
Public Property Get Item(ByVal Index As Long) As Employee
Set Item = employees(Index)
End Property
Public Property Get Count() as Long
Count = mlCount
End Property