Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
estou invocando uma função no qual eu passo alguns atributos (string, long e um array bidimencional). quando eu chamo esta função me é passada a seguinte mensagem:
subscript out of range
segue abaixo o código com a chamada e logo em seguida a função chamada. (a função é padrão aqui de onde trabalho... queria saber onde estou errando na chamada)
valews mesmo galera
abração
ReDim varParam(2, 5) As Variant
Dim retorno As adodb.Recordset
Set retorno = New adodb.Recordset
For b = 0 To lista.ListCount - 1
mail = lista.List(b)
If (opc = 1) Then
strSql = "update pessoa set cod_operador = " & codOp & " where end_e_mail = '" & mail & "'"
sqlCodPessoa = "select cod_pessoa from pessoa where end_e_mail = '" & mail & "'"
sqlCodEmail = "select cod_email from email where end_email = '" & mail & "'"
Set rsCodigos = clConnect.SelecionarDados(adoOpenStatic, ReturnADORecordset, sqlCodPessoa)
codPessoa = rsCodigos(0)
Set rsCodigos = clConnect.SelecionarDados(adoOpenStatic, ReturnADORecordset, sqlCodEmail)
codEmail = rsCodigos(0)
varParam(1, 1) = "COD_PESSOA"
varParam(1, 2) = "NUMBER"
varParam(1, 3) = 1
varParam(1, 4) = 20
varParam(1, 5) = codPessoa
varParam(2, 1) = "COD_EMAIL"
varParam(2, 2) = "NUMBER"
varParam(2, 3) = 1
varParam(2, 4) = 12
varParam(2, 5) = codEmail
clConnect.BeginTrans
clConnect.ExecutarSQL (strSql)
**Set retorno = clConnect.ExecutarSP("fun_del_email", 5, varParam)**
clConnect.CommitTrans
MsgBox (" email deletado com sucesso!!!")
End If
next
aqui está o método que eu estou chamando.......................
Public Function ExecutarSP(strSPName As String, ByRef lngRecAffected As Long, varParam As Variant) As ADODB.Recordset
' Função/Propriedade .....: Executar uma stored Procedure
'os parâmetros serão passados em um array by dimensional onde:
'colune 0=nome do parâmetro
'coluna 1=tipo de dado do parâmetro (char, numeric, etc...)
'coluna 2=direção do parâmetro (input,output, etc..
'coluna 3=tamanho do parâmetro
'coluna 4=valor do parâmetro
On Error Resume Next
Dim strErro As String
Dim adoCommand As New ADODB.Command
Dim adoPar As ADODB.Parameter
Dim i%
'setamos a conexão...
Set adoCommand.ActiveConnection = adoCon
'setamos o tipo de command=stored procedure
adoCommand.CommandType = adCmdStoredProc
'setamos os parâmetros...
adoCommand.CommandText = strSPName
For i% = 0 To UBound(varParam, 2)
Set adoPar = adoCommand.CreateParameter(varParam(0, i%), varParam(1, i%), varParam(2, i%), varParam(3, i%))
adoPar.Value = varParam(4, i%)
adoCommand.Parameters.Append adoPar
If Err <> 0 Then 'deu certo?
On Error GoTo 0
Err.Raise vbObjectError + 16000, strConnectName & ".ExecutarSP", "Erro ao setar parâmetro da SP: Parãmetro " & (i% - 2) & ":Valor=" & varParam(i%) & vbCrLf & Err.Description
Exit Function
End If
Next i%
'executamos a sp..
Set ExecutarSP = adoCommand.Execute(lngRecAffected)
If Err <> 0 Then 'deu certo?
strErro = Err.Description
On Error GoTo 0
Err.Raise vbObjectError + 16000, strConnectName & ".ExecutarSP", "Erro ao executar SP:" & adoCommand.CommandText & vbCrLf & strErro
Exit Function
End If
End Function
Carregando comentários...