PROCEDURE COM PARAMETRO E RETORNO
Estou com uma dúvida.. já pesquisei sobre o assunto mas não encontrei ainda a solução.
esse é uma exemplo q pegue no Forum do usuário (MHTERRES) mas como fazer para enviar parà ¢metro para PROCEDURE e receber um retorno
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "MinhaStoredProcedure"
cmd.CommandType = adCmdStoredProc
cmd.CommandTimeout = 15
cmd.Execute
A minha PROCEDURE é a seguinte BUSCASeguencia (Empresa, sMensagem, iSeg)
onde (sMensagem e iSeq) são variavéis do VB e são OUT na PROCEDURE
como opter esse conteudo nas variavéis ??
O dúvida cruel !!!
esse é uma exemplo q pegue no Forum do usuário (MHTERRES) mas como fazer para enviar parà ¢metro para PROCEDURE e receber um retorno
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "MinhaStoredProcedure"
cmd.CommandType = adCmdStoredProc
cmd.CommandTimeout = 15
cmd.Execute
A minha PROCEDURE é a seguinte BUSCASeguencia (Empresa, sMensagem, iSeg)
onde (sMensagem e iSeq) são variavéis do VB e são OUT na PROCEDURE
como opter esse conteudo nas variavéis ??
O dúvida cruel !!!
Acho que isso pode te ajudar:
Dim ADOCmd As New ADODB.Command
Dim ADOPrm As New ADODB.Parameter
Dim ADOCon As ADODB.Connection
Dim ADORs As ADODB.Recordset
strConnect = "PROVIDER=SQLOLEDB;server=SeuServidor;uid=SeuUsuario;pwd=SuaSenha;database=Seubanco"
Set ADOCon = New ADODB.Connection
With ADOCon
.CursorLocation = adUseClient
.ConnectionString = strConnect
.Open
End With
Set ADOCmd.ActiveConnection = ADOCon
With ADOCmd
.CommandType = adCmdStoredProc
.CommandText = "TesteParam"
End With
'Parà ¢metro retornado pela procedure
sParmName = "ParamOutput"
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adVarChar, adParamOutput, 40, 0)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = -1
'Parà ¢metro enviado para a procedure
sParmName = "ParamInput"
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adVarChar, adParamInput, 10)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = "XGBL"
Set ADORs = ADOCmd.Execute
If ADORs.State = adStateClosed Then Exit Sub
While Not ADORs.EOF
For i = 0 To ADORs.Fields.Count - 1
rStr = rStr & " : " & ADORs(i)
Next i
Debug.Print Mid(rStr, 3, Len(rStr))
ADORs.MoveNext
rStr = ""
Wend
Debug.Print "Parà ¢mtro Retorno: " & ADOCmd.Parameters("ParamOutput").Value
Set ADOCmd = Nothing
Set ADOPrm = Nothing
Set ADOCon = Nothing
Set ADORs = Nothing
Obrigado pela resposta.CERBERO
Fiz teste e retornou erro... nº-2147467259 - A previsão é invalida
aonde estou errando...?
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "MinhaStoredProcedure"
cmd.CommandType = adCmdStoredProc
cmd.CommandTimeout = 15
'Parà ¢metro retornado pela procedure
sParmName = "Mensagem"
Set ADOPrm = cmd.CreateParameter(sParmName, adVarChar, adParamOutput, 255, 0)
cmd.Parameters.Append ADOPrm
cmd.Parameters(sParmName).Value = -1
'Parà ¢metro retornado pela procedure
sParmName = "Venda_ID"
Set ADOPrm = cmd.CreateParameter(sParmName, adInteger, adParamOutput, , 0)
cmd.Parameters.Append ADOPrm
cmd.Parameters(sParmName).Value = -1
'Parà ¢metro enviado para a procedure
sParmName = "Convenio"
Set prSQL = cmd.CreateParameter(sParmName , adInteger, adParamInput)
cmd.Parameters.Append prSQL
cmd.Parameters(strSQL).Value = CInt(txtConvenio.Text)
set rsSQL = cmd.Execute
Fiz teste e retornou erro... nº-2147467259 - A previsão é invalida
aonde estou errando...?
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "MinhaStoredProcedure"
cmd.CommandType = adCmdStoredProc
cmd.CommandTimeout = 15
'Parà ¢metro retornado pela procedure
sParmName = "Mensagem"
Set ADOPrm = cmd.CreateParameter(sParmName, adVarChar, adParamOutput, 255, 0)
cmd.Parameters.Append ADOPrm
cmd.Parameters(sParmName).Value = -1
'Parà ¢metro retornado pela procedure
sParmName = "Venda_ID"
Set ADOPrm = cmd.CreateParameter(sParmName, adInteger, adParamOutput, , 0)
cmd.Parameters.Append ADOPrm
cmd.Parameters(sParmName).Value = -1
'Parà ¢metro enviado para a procedure
sParmName = "Convenio"
Set prSQL = cmd.CreateParameter(sParmName , adInteger, adParamInput)
cmd.Parameters.Append prSQL
cmd.Parameters(strSQL).Value = CInt(txtConvenio.Text)
set rsSQL = cmd.Execute
Dei uma olhada no MSDN e parece que sua conexão é que está estranha...
Por acaso sua base de dados é Access 2000 e você está tentando utilizar Microsoft.Jet.OLEDB.3.51? (perceba a versão do Jet)
Qual a linha que ele indica erro?
Por acaso sua base de dados é Access 2000 e você está tentando utilizar Microsoft.Jet.OLEDB.3.51? (perceba a versão do Jet)
Qual a linha que ele indica erro?
A linha q retorna o erro é:
set rsSQL = cmd.Execute
estou usando SQL Server 2000
set rsSQL = cmd.Execute
estou usando SQL Server 2000
Tópico encerrado , respostas não são mais permitidas