Eu uso desta forma:
'/////////////////////////////////////////////////////////////////////
Na Stored Procedure:
CREATE PROC DBO.MNBANCO
@CodBco char (03),
@NomBco varchar (30),
@CodUsuSis integer,
@FlagOper char(1)
AS
IF @FlagOper = 'I'
INSERT INTO BANCO
(CodBco,
NomBco,
CodUsuSis,
DatUltAlt)
VALUES
(@CodBco,
@NomBco,
@CodUsuSis,
convert(datetime, getdate(), 103))
ELSE
BEGIN
IF @FlagOper = 'A'
UPDATE BANCO SET
NomBco = @NomBco,
CodUsuSis = @CodUsuSis,
DatUltAlt = convert(datetime, getdate(), 103)
WHERE CodBco = @CodBco
END
GO
'/////////////////////////////////////////////////////////////////////
No Programa para Gravar ou Incluir:
'Obs: A conexão vc usa a sua
Public Conexao As ADODB.Connection
Public Cmd As ADODB.Command
Private Sub GravaBanco()
Conexao.BeginTrans
Set Cmd = New Command
With Cmd
.CommandText = "{call MNBANCO (?,?,?,?)}"
.CommandType = adCmdText
.ActiveConnection = Conexao
.Parameters.Refresh
.Parameters(0).Value = slCodBco
.Parameters(1).Value = slNomBco
.Parameters(2).Value = LgCodUsuSis
.Parameters(3).Value = slFlagOper
End With
Set Rs = Cmd.Execute
Set Rs = Nothing
Set Cmd = Nothing
Conexao.CommitTrans
End sub
Onde: slFlagOper é uma variável onde defino se é "I" para inclusão ou "A" para alteração;
Para ler eu uso um Recordset normal mesmo, usando esta função:
'PROCEDURE PARA EXECUTAR CONSULTAS NO BANCO DE DADOS
Public Sub consulta(sql As String)
Set Rs = Nothing
Set Rs = New ADODB.Recordset ' INSTANCIAR VARIAVEL ASSOCIADA AO BANCO DE DADOS
With Rs
.CursorType = adOpenKeyset 'TIPO DE NAVEGACAO
.LockType = adLockReadOnly 'FAZ A CONSULTA "SOMENTE LEITURA NA TABELA"
.Source = sql 'String de comandos ao Banco de Dados
.ActiveConnection = Conexao ' ATIVA A CONEXAO COM O BANCO DE DADOS
.Open 'ABRE O BANCO DE DADOS
End With
End Sub
e chamo assim:
call consulta("SELECT CodBco, NomBco FROM Banco")
Acho q isto deve te ajudar!!!

Qq coisa me avisa!
"Que a Força esteja com vc..."