J
Jaroslav
Is it possible to write a function to return array?
I've tried to get some records from table and return them from function as
array:
Public Function Get_ZC_CURVE(paDATE As Date, paCURRENCY As Long) As Variant()
Dim rstZC_CURVE As ADODB.Recordset
Dim strSQLString As String
Dim fld As ADODB.Field
Dim nPiCounter As Integer
Set rstZC_CURVE = New ADODB.Recordset
strSQLString = "SELECT ZC_CURVES.MATURITY_DATE,
ZC_CURVES.DISCOUNT_FACTOR FROM ZC_CURVES WHERE (((ZC_CURVES.CURRENCY_ID)=" &
paCURRENCY & ") AND ((ZC_CURVES.INPUT_DATE)=" & paDATE & "));"
rstZC_CURVE.Source = strSQLString
rstZC_CURVE.CursorLocation = adUseClient
rstZC_CURVE.CursorType = adOpenDynamic
rstZC_CURVE.ActiveConnection = CurrentProject.Connection
rstZC_CURVE.Open
ReDim Get_ZC_CURVE(rstZC_CURVE.RecordCount, 2)
nPiCounter = 1
rstZC_CURVE.MoveFirst
Do Until rstZC_CURVE.EOF
Get_ZC_CURVE(nPiCounter, 1) =
rstZC_CURVE.Fields.Item("MATURITY_DATE").Value
Get_ZC_CURVE(nPiCounter, 2) =
rstZC_CURVE.Fields.Item("DISCOUNT_FACTOR").Value
nPiCounter = nPiCounter + 1
rstZC_CURVE.MoveNext
End Function
But it is not possible to do it this way. When I've tried to declare local
array within the function and assign it as return value by the Return
statement, I realized that in the VBA it is not possible (or I did it wrong
way).
Can anyone help me, please?
I've tried to get some records from table and return them from function as
array:
Public Function Get_ZC_CURVE(paDATE As Date, paCURRENCY As Long) As Variant()
Dim rstZC_CURVE As ADODB.Recordset
Dim strSQLString As String
Dim fld As ADODB.Field
Dim nPiCounter As Integer
Set rstZC_CURVE = New ADODB.Recordset
strSQLString = "SELECT ZC_CURVES.MATURITY_DATE,
ZC_CURVES.DISCOUNT_FACTOR FROM ZC_CURVES WHERE (((ZC_CURVES.CURRENCY_ID)=" &
paCURRENCY & ") AND ((ZC_CURVES.INPUT_DATE)=" & paDATE & "));"
rstZC_CURVE.Source = strSQLString
rstZC_CURVE.CursorLocation = adUseClient
rstZC_CURVE.CursorType = adOpenDynamic
rstZC_CURVE.ActiveConnection = CurrentProject.Connection
rstZC_CURVE.Open
ReDim Get_ZC_CURVE(rstZC_CURVE.RecordCount, 2)
nPiCounter = 1
rstZC_CURVE.MoveFirst
Do Until rstZC_CURVE.EOF
Get_ZC_CURVE(nPiCounter, 1) =
rstZC_CURVE.Fields.Item("MATURITY_DATE").Value
Get_ZC_CURVE(nPiCounter, 2) =
rstZC_CURVE.Fields.Item("DISCOUNT_FACTOR").Value
nPiCounter = nPiCounter + 1
rstZC_CURVE.MoveNext
End Function
But it is not possible to do it this way. When I've tried to declare local
array within the function and assign it as return value by the Return
statement, I realized that in the VBA it is not possible (or I did it wrong
way).
Can anyone help me, please?