amigo yo hice... un trabajo con lo que tu quieres...
a ver te paso mi codigo a ver si te ayuda... Saludos
Código vb:
Ver originalPublic Sub RegistrarSP(c As String, d As String)
Dim Cn As New ADODB.Connection
Cn.Provider = "SQLOLEDB"
Cn.ConnectionString = "Data Source=(local);Initial Catalog=demo;Integrated security=sspi"
Cn.Open
Dim cmd As New ADODB.Command
cmd.ActiveConnection = Cn
cmd.CommandText = "sp_regcliente" 'aqui el nombre del Procedimiento Almacenado (PA)
cmd.CommandType = adCmdStoredProc 'tipo PA
cmd.Parameters.Append cmd.CreateParameter("@cod", adVarChar, adParamInput, 30, c) 'el 1er Parametro
cmd.Parameters.Append cmd.CreateParameter("@des", adVarChar, adParamInput, 50, d) '2do Parametro
cmd.Execute
Cn.Close
End Sub
'-----------------------------------------------------------------
' Esta funcion Lista todos los registros de la tabla Cliente
Public Function Listar() As ADODB.Recordset
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Cn.Provider = "SQLOLEDB"
Cn.ConnectionString = "Data Source=(local);Initial Catalog=demo;Integrated security=sspi"
Cn.Open
Cn.CursorLocation = adUseClient
Rs.CursorLocation = adUseClient
Rs.CursorType = adOpenStatic
Rs.LockType = adLockBatchOptimistic
'Rs.Open "select * from cliente", Cn
Dim cmd As New ADODB.Command
cmd.ActiveConnection = Cn
' cmd.CommandText = "select * from cliente"
Set Rs = Cn.Execute("exec sp_Listar")
Set Listar = Rs
'aqui cierro la conexion y mi DataGrid sigue con los datos
'pero no hay ningun efecto si se cambia en el Data Grid
'no recuerdo como se llama este tipo, algo de Recordset en Caliente o en Frio algo asi
Set Rs.ActiveConnection = Nothing
Cn.Close
End Function
'-----------------------------
Public Function Buscar(cli As String) As ADODB.Recordset
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Cn.Provider = "SQLOLEDB"
Cn.ConnectionString = "Data Source=(local);Initial Catalog=demo;Integrated security=sspi"
Cn.Open
Cn.CursorLocation = adUseClient
Rs.CursorLocation = adUseClient
Rs.CursorType = adOpenStatic
Rs.LockType = adLockBatchOptimistic
Set Rs = Cn.Execute("exec sp_Buscar " & cli)
Set Buscar = Rs
Set Rs.ActiveConnection = Nothing
Cn.Close
End Function
Espero te sea util...
pasa de que declaro en cada funcion el ADODB.Connection y el ADODB.Recordset proque lo estaba trabajando desde una Clase pero tu puedes trabajarlo desde un Modulo... Saludos!!!