PROCEDURE COM PARAMETRO E RETORNO

BRUNO 31/03/2005 10:48:09
#75984
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 !!!
USUARIO.EXCLUIDOS 31/03/2005 12:09:31
#76006
Resposta escolhida
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
BRUNO 31/03/2005 17:30:29
#76052
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

USUARIO.EXCLUIDOS 01/04/2005 07:05:44
#76085
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?
BRUNO 01/04/2005 14:59:31
#76211
A linha q retorna o erro é:

set rsSQL = cmd.Execute

estou usando SQL Server 2000
Tópico encerrado , respostas não são mais permitidas