Consulta usando parámetros

Tengo problemas con el recordset
Este me devuelve -1
Dim Mensaje As String
Dim i As Integer
Dim Cmd As ADODB.Command
Dim Prm As ADODB.Parameter
Dim RsContr As ADODB.Recordset
Set Cmd = New ADODB.Command
Set Prm = New ADODB.Parameter
Cmd.ActiveConnection = basSQLConnection.sqlconnection
Cmd.CommandText = "spw_BuscaContribuyentexCodigo"
Cmd.CommandType = adCmdStoredProc
Set Prm = Cmd.CreateParameter("Codigo", adVarChar, adParamInput, 11, strCodigo)
Cmd.Parameters.Append Prm
Set Prm = Cmd.CreateParameter("Mensaje", adVarChar, adParamOutput, 200)
Cmd.Parameters.Append Prm
Set RsContr = New ADODB.Recordset
With RsContr
.CursorLocation = adUseClient
.CursorType = adOpenStatic
End With
Set RsContr = Cmd.Execute()
Cmd.Execute
If Cmd.Parameters("Mensaje").Value <> "EXITO" Then
MsgBox Cmd.Parameters("Mensaje").Value, vbInformation, "Sistema de Mercados"
Set BuscarComerciantexCodigo = RsContr
Else
Set BuscarComerciantexCodigo = RsContr
End If
pero si te das cuenta tengo que hacer
Set RsContr = Cmd.Execute()
Cmd. Execute
Es decir ejecutar
2 veces el cmd.execute
Set RsContr = Cmd.Execute()
Cmd. Execute
Por que si no, si solo ejecuto
Set RsContr = Cmd.Execute()
el parametro mensaje se hace vacio
bueno el problema real es que si obtengo
los datos en el recorset el problema es que la propiedad recordcount me devuelve siempre -1 y cuando lo quiero asignar a un flexgrid diganmos set flexgrid.datasource=rscontr no me lo permite porque me arroja un error
supongo que es por la propiedad recordcound a pesar de tener datos el recordset
¿Crees qué podría ser la cadena de caneccion?
Si has hecho algo de esto enviame un ejemplo estaré muy agradecido

1 respuesta

Respuesta
Pregunta tonta ¿Estas haciendo esto en VB6 o en VB.NET? Porque me parece que estas mezclando cosas de uno y de otro.
A mi siempre me funciono utilizar el Open("senrtencia sql") de los recordsets de ADO.
Tu estas utilizando un Command, ahí si no se como ayudarte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas