Nuevamente ADO+Oracle [SOLUCIONADO]

Post Reply
User avatar
metaldrummer
Posts: 113
Joined: Wed Jan 10, 2007 8:43 pm
Location: Coquimbo-Chile
Contact:

Nuevamente ADO+Oracle [SOLUCIONADO]

Post by metaldrummer »

Hola Nuevamente:
Según el código que expongo a continuación:

Code: Select all

FUNCTION Sql2( cComando)
   LOCAL lOK:=.T., oCon, oDatos, aResultados:=Array(3)
   oCon:=toleauto():new("adodb.connection")
   //oCon:=CreateObject("adodb.connection")
   //oCon:ConnectionString:=cStringConexionLocal
   oCon:ConnectionString:="Provider=OraOLEDB.Oracle;Data Source=192.168.0.8:1521/servicio;User ID=miusuario;Password=mipassword;"
   oCon:Open()

   //oDatos:=CreateObject("adodb.recordset")
   oDatos:=toleauto():new("adodb.recordset")
   oDatos:LockType := adLockOptimistic
   oDatos:CursorType := adOpenKeyset
   oDatos:ActiveConnection(oCon)
   oDatos:Source := cComando
   TRY
      oDatos:Open()
   CATCH oError
      MsgStop( "Línea 148: Error al abrir el recordset", "¡Error Crítico!")
      lOK:=.F.
      oCon:=NIL
   END
   aResultados[1]:=lOk
   IF lOk
      aResultados[2]:=oCon
      aResultados[3]:=oDatos
   ENDIF
RETURN aResultados
Tengo instalado el OleDB Provider de Oracle (nativo), string de conexión funciona ya que he verificado el estado de la conexión y se abre. Lamentablemente al momento de realizar el oDatos:Open() falla y no logra ejecutar la sentencia SQL.
Hay alguna manera de realizar esto a través del adodb.command?. Lo importante es que debo de alguna manera pasar el

Code: Select all

oDatos:LockType := adLockOptimistic
oDatos:CursorType := adOpenKeyset
para que oDatos:RecordCount no regrese -1.
Ayuda por favor ya que veo que todo está bien hecho e igual falla.
Saludos
David Lagos S.
Coquimbo-Chile
Last edited by metaldrummer on Thu Aug 16, 2007 3:54 pm, edited 1 time in total.
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

Que valores tienen las constantes adLockOptimistic y adOpenKeySet ?
Saludos
R.F.
User avatar
metaldrummer
Posts: 113
Joined: Wed Jan 10, 2007 8:43 pm
Location: Coquimbo-Chile
Contact:

Post by metaldrummer »

Gracias René por tu interés.
Ya resolví el problema. Sencillamente tenía que copiar todas las dll's que instala el oledb provider de oracle a la misma carpeta donde reside mi .exe
¿Porqué?, lo desconozco. Quizás el instalador del provider no las registra adecuadamente, etc.
Un detalle muy importante:
Si no expecifico:

Code: Select all

oDatos:CursorLocation  := adUseClient
Sencillamente oDatos:RecordCount devuelve igual -1.
Esto también sucede en MySql con el cliente ODBC 3.51

Haciendo eso, pasó inmediatamente.
Saludos
Nos vemos en octubre por acá.
David Lagos S.
Coquimbo-Chile
Post Reply