ORACLE con ADO Recorsets

Eyes
09 de Junio del 2004
Hola a todos...

Quien podría ayudarme? tengo en Oracle lo siguiente:

CREATE OR REPLACE PACKAGE Prueba As
TYPE tc_Prueba IS REF CURSOR;

FUNCTION Buscar(aDato IN VARCHAR2)
RETURN tc_Prueba;

END Prueba;

CREATE OR REPLACE PACKAGE BODY Prueba As
FUNCTION Buscar(aDato IN VARCHAR2)
RETURN tc_Prueba
IS
v_Registros tc_Prueba;
BEGIN
OPEN v_Registros FOR SELECT *
FROM MyTable
WHERE ID = aDato;
RETURN(v_Registros);
END Buscar;

Con esto no hay problema alguno, lo ejecuto desde SQL*PLUS o desde VB y me devuelve los registro que debe retornar, PERO en VB no puedo recorrer el RECORSET hacia atrás, es decir me narca error cuando intento ejecutar el metodo "MovePrevious",...

El código en VB de la llamada al Stored Procedure es:

Dim cmdComando As New ADODB.Command
Dim pCriterio As New ADODB.Parameter
Dim rsResult As New ADODB.Recordset

Set pCriterio = cmdComando.CreateParameter("pCriterio", adBSTR, adParamInput, , "'A'")

cmdComando.ActiveConnection = Oracon
cmdComando.Properties("PLSQLRSet") = True
cmdComando.Parameters.Append pCriterio
cmdComando.CommandType = adCmdStoredProc
cmdComando.CommandText = "Buscar"

rsResult.CursorType = adOpenDynamic
Set rsResult = cmdComando.Execute

cmdComando.Properties("PLSQLRSet") = False

....

'despues de validar el BOF y el EOF y seg´´un la tecla de recorrido o el botón que seleccionen se hace

rsResult.MoveNext
o
rsResult.MovePrevious

'En este falla
....


Lo que he visto que pasa cuando regresa el REFCURSOR a VB le cambia el valor a:

"rsResult.CursorType", y lo pone en FORWARD_ONLY cuando antes de consultarlo se le dice que sea dinámico....

¿Alguien sabe que esta pasando o por que sucede esto? ¿Hay otra forma de regresar un conjunto de registros desde Oracle o como puedo recorrer el recorset hacia atrás?...

Espero que me puedan ayudar o si requieren algo más, estoy a sus órdenes...

Saludos
Eyes, Only For You