aldovalerio
Programmer
I'm a VB6 developer, and I'm trying to learn VB.NET (perhaps not the best way) by converting some code from VB6.
I'm having trouble finding the equivalent for the VB6
Array() command.
This is my VB6 code:
function call:
Set rst = ADO_RunSPReturnRSParm ( _
strDBConnect, "sel_facts", lngNumberOfFactRows, _
Array(adParamInput, adInteger, 10, txtMaxNbrRows), _
Array(adParamInput, adVarChar, 100, "22.5"), _
Array(adParamInput, adVarChar, 15, "AP13,AP14"), _
Array(adParamOutput, adInteger, 10) _
)
Public Function ADO_RunSPReturnRSParm( _
ByVal strDBConnectString As String, _
ByVal strSPName As String, _
ByRef lngNumberOfRows As Long, _
ParamArray params() As Variant) As Object
....some code...
ADO_Collect_Params cmd, params
End Function
Private Sub ADO_Collect_Params( _
ByRef cmd As ADODB.Command, _
ParamArray argparams() As Variant)
Dim params As Variant, i As Integer, v As Variant
params = argparams(0)
For i = LBound(params) To UBound(params)
If params(i)(1) = adParamOutput Then
Call ADO_Create_Parm(cmd, adParamOutput, _
params(i)(2), params(i)(3))
Else
Call ADO_Create_Parm(cmd, adParamInput, _
params(i)(2), params(i)(3), params(i)(4))
End If
Next i
End Sub
I've rewritten (helped by the VB.NET upgrade wizard) the above as:
rst = ADO_RunSPReturnRSParm( _
strDBConnect, "sel_facts", lngNumberOfFactRows, _
New Object() {New Object() {ADODB.ParameterDirectionEnum.adParamInput, ADODB.DataTypeEnum.adInteger, 10, txtMaxNbrRows}}, _
New Object() {New Object() {ADODB.ParameterDirectionEnum.adParamInput, ADODB.DataTypeEnum.adVarChar, 100, "22.5"}}, _
New Object() {New Object() {ADODB.ParameterDirectionEnum.adParamInput, ADODB.DataTypeEnum.adVarChar, 15, "AP13,AP14"}}, _
New Object() {New Object() {ADODB.ParameterDirectionEnum.adParamOutput, ADODB.DataTypeEnum.adInteger, 10}})
Public Function ADO_RunSPReturnRSParm( _
ByVal strDBConnectString As String, _
ByVal strSPName As String, _
ByRef lngNumberOfRows As Integer, _
ByVal ParamArray params() As Object) As Object
...some code...
ADO_Collect_Params(cmd, New Object() {params})
End Function
Private Sub ADO_Collect_Params( _
ByRef cmd As ADODB.Command, _
ByVal ParamArray argparams() As Object)
Dim params As Object
Dim i As Short
params = argparams(0)
For i = LBound(params) To UBound(params)
If params(i)(0) = ADODB.ParameterDirectionEnum.adParamOutput Then
Call ADO_Create_Parm(cmd, _
ADODB.ParameterDirectionEnum.adParamOutput, _
params(i)(1), params(i)(2))
Else
Call ADO_Create_Parm(cmd, _
ADODB.ParameterDirectionEnum.adParamInput, _
params(i)(1), params(i)(2), params(i)(3))
End If
Next i
End Sub
I'm getting the following runtime error on this line:
"If params(i)(0) = ADODB.ParameterDirectionEnum.adParamOutput Then".
Additional information: Operator is not valid for type 'Object()' and type 'ParameterDirectionEnum'.
I'm having trouble finding the equivalent for the VB6
Array() command.
This is my VB6 code:
function call:
Set rst = ADO_RunSPReturnRSParm ( _
strDBConnect, "sel_facts", lngNumberOfFactRows, _
Array(adParamInput, adInteger, 10, txtMaxNbrRows), _
Array(adParamInput, adVarChar, 100, "22.5"), _
Array(adParamInput, adVarChar, 15, "AP13,AP14"), _
Array(adParamOutput, adInteger, 10) _
)
Public Function ADO_RunSPReturnRSParm( _
ByVal strDBConnectString As String, _
ByVal strSPName As String, _
ByRef lngNumberOfRows As Long, _
ParamArray params() As Variant) As Object
....some code...
ADO_Collect_Params cmd, params
End Function
Private Sub ADO_Collect_Params( _
ByRef cmd As ADODB.Command, _
ParamArray argparams() As Variant)
Dim params As Variant, i As Integer, v As Variant
params = argparams(0)
For i = LBound(params) To UBound(params)
If params(i)(1) = adParamOutput Then
Call ADO_Create_Parm(cmd, adParamOutput, _
params(i)(2), params(i)(3))
Else
Call ADO_Create_Parm(cmd, adParamInput, _
params(i)(2), params(i)(3), params(i)(4))
End If
Next i
End Sub
I've rewritten (helped by the VB.NET upgrade wizard) the above as:
rst = ADO_RunSPReturnRSParm( _
strDBConnect, "sel_facts", lngNumberOfFactRows, _
New Object() {New Object() {ADODB.ParameterDirectionEnum.adParamInput, ADODB.DataTypeEnum.adInteger, 10, txtMaxNbrRows}}, _
New Object() {New Object() {ADODB.ParameterDirectionEnum.adParamInput, ADODB.DataTypeEnum.adVarChar, 100, "22.5"}}, _
New Object() {New Object() {ADODB.ParameterDirectionEnum.adParamInput, ADODB.DataTypeEnum.adVarChar, 15, "AP13,AP14"}}, _
New Object() {New Object() {ADODB.ParameterDirectionEnum.adParamOutput, ADODB.DataTypeEnum.adInteger, 10}})
Public Function ADO_RunSPReturnRSParm( _
ByVal strDBConnectString As String, _
ByVal strSPName As String, _
ByRef lngNumberOfRows As Integer, _
ByVal ParamArray params() As Object) As Object
...some code...
ADO_Collect_Params(cmd, New Object() {params})
End Function
Private Sub ADO_Collect_Params( _
ByRef cmd As ADODB.Command, _
ByVal ParamArray argparams() As Object)
Dim params As Object
Dim i As Short
params = argparams(0)
For i = LBound(params) To UBound(params)
If params(i)(0) = ADODB.ParameterDirectionEnum.adParamOutput Then
Call ADO_Create_Parm(cmd, _
ADODB.ParameterDirectionEnum.adParamOutput, _
params(i)(1), params(i)(2))
Else
Call ADO_Create_Parm(cmd, _
ADODB.ParameterDirectionEnum.adParamInput, _
params(i)(1), params(i)(2), params(i)(3))
End If
Next i
End Sub
I'm getting the following runtime error on this line:
"If params(i)(0) = ADODB.ParameterDirectionEnum.adParamOutput Then".
Additional information: Operator is not valid for type 'Object()' and type 'ParameterDirectionEnum'.