FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Nuevamente ADO+Oracle [SOLUCIONADO]
Posts: 113
Joined: Wed Jan 10, 2007 08:43 PM
Nuevamente ADO+Oracle [SOLUCIONADO]
Posted: Thu Aug 16, 2007 01:55 PM
Hola Nuevamente:
Según el código que expongo a continuación:
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
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
David Lagos S.
Coquimbo-Chile
www.wificafe.cl
webmaster@wificafe.cl
Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
Nuevamente ADO+Oracle [SOLUCIONADO]
Posted: Thu Aug 16, 2007 02:47 PM

Que valores tienen las constantes adLockOptimistic y adOpenKeySet ?

Saludos

R.F.
Posts: 113
Joined: Wed Jan 10, 2007 08:43 PM
Nuevamente ADO+Oracle [SOLUCIONADO]
Posted: Thu Aug 16, 2007 03:52 PM
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:
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
David Lagos S.
Coquimbo-Chile
www.wificafe.cl
webmaster@wificafe.cl

Continue the discussion