FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Oracle con ADO
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Oracle con ADO
Posted: Mon Oct 01, 2007 05:18 PM

Hola a todos.

Estoy haciendo unas primeras pruebas con Oracle XE 10g, en concreto pasar una DBF de clientes a una tabla Oracle con la nueva herramienta ADORDD.

En un principio me est谩 funcionando y una vez pasados los datos le hago un Browse y me muestra la tabla Oracle. 隆Que maravilla, tengo que hacer el cambio de todas las bases de datos de mi aplicaci贸n (m谩s de 150) y parece que no va a suponer el tremendo esfuerzo que me imaginaba!

De momento tengo una pega (ya me saldr谩n otras): Los campos que contienen una 脩 (supongo que para las letras acentuadas pasar谩 lo mismo) no me los graba y me salta un error. He estado mirando y en el registro de Windows Oracle tiene el valor NLS_LANG = SPANISH_SPAIN.WE8MSWIN1252

El error que salta no creo que sea muy descriptivo:
Error 41954080/16389 E_FAIL: COUNT from Errorsys, line 0
Pero se que el problema est谩 en las 脩 porque si las quito de los registros se lo traga sin problemas.

驴 Por donde empiezo a mirar ? Soy nuevo en ADO y en ORACLE

Saludos

Posts: 113
Joined: Wed Jan 10, 2007 08:43 PM
Oracle con ADO
Posted: Wed Oct 03, 2007 02:53 AM

Sebasti谩n por favor postea el c贸digo que utilizas para el traspaso.
Yo estoy utilizando ado en oracle 10g express edition sin problemas. Me toma todo, 脩, acentos, TODO!!!!
Tengo adem谩s unas funciones que cree para conectarme al motor y controlar cuando se realiza la conexi贸n.
Adem谩s el como agregar los datos sin tener que utilizar sentencias SQL. Directamente usando ADO.
Incluso tengo una rutina que agrega datos a una tabla .dbf temporal y luego los pasa a la tabla que necesito en oracle sin problemas.
Hace dos d铆as hice una presentaci贸n de un m贸dulo de punto venta y caja a un cliente en sus instalaciones utilizando una conexi贸n ADSL de 512mb donde el cliente hacia nuestro server que es p煤blico en forma excelente.
Saludos
David Lagos S.
Coquimbo - Chile

David Lagos S.
Coquimbo-Chile
www.wificafe.cl
webmaster@wificafe.cl
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Oracle con ADO
Posted: Wed Oct 03, 2007 06:31 AM
Hola David, de momento solo estoy haciendo pruebas, el siguiente c贸digo me marca el error al llegar a un registro que contiene 脩. En la tabla Oracle, que solo tiene dos campos, el campo codigo de ese registro se queda grabado, sin embargo el campo nombre que es el que contiene la 脩 se queda en blanco:




#include "FiveWin.ch"
#include "adordd.ch"


function Main()

USE clientes VIA 'ADORDD' TABLE "clientes" ORACLE FROM '127.0.0.1' USER 'SEBAS' PASSWORD 'mandarina' shared alias oraclientes
sele oraclientes

#define adIndex 0x100000
MsgInfo( HB_AdoRddGetRecordset():Supports( adIndex ) )


REQUEST DBFCDX
RddSetDefault('dbfcdx')
use clientes new VIA 'DBFCDX' alias gdfclientes

sele gdfclientes
set order to 1
go top
do whil !eof()
if !empty(codigo) .and. !empty(nombre)
ccliente := codigo
cnombre := nombre
sele oraclientes
append blank
if rlock()
replace codigo with ccliente, nombre with cnombre
unlock
endif
endif
sele gdfclientes
skip
enddo

sele oraclientes

Browse()

USE

return nil


En la declaraci贸n USE he intentado poner CODEDEPAGE 850 pero sigue sin funcionar

El MsgInfo() es para ver si mi conexi贸n ADO soporta indices y me devuelve .F. 驴Entiendo que no se pueden usar indices con ORACLE?

Gracias por tu atenci贸n.
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Oracle con ADO
Posted: Wed Oct 03, 2007 08:05 AM

Sebastian,

> 驴Entiendo que no se pueden usar indices con ORACLE?

La limitaci贸n es de ADO no de Oracle, posiblemente.

Lo solucionas usando sentencias SQL que implican el uso de indices (ORDER BY, etc.)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 113
Joined: Wed Jan 10, 2007 08:43 PM
Oracle con ADO
Posted: Thu Oct 04, 2007 02:11 AM

Sebastian:
Dame un correo donde enviarte un ejemplo.
La idea es que te olvides del concepto de .dbf
Yo por lo menos trabajo con ADO duro y puro y no tengo problemas.
Saludos
David

David Lagos S.
Coquimbo-Chile
www.wificafe.cl
webmaster@wificafe.cl
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Oracle con ADO
Posted: Thu Oct 04, 2007 06:52 AM
metaldrummer wrote:Sebastian:
Dame un correo donde enviarte un ejemplo.
La idea es que te olvides del concepto de .dbf
Yo por lo menos trabajo con ADO duro y puro y no tengo problemas.
Saludos
David


David:

Estoy evaluando el tiempo que me llevar铆a pasar una aplicaci贸n de dbfs a Oracle, por exigencia del cliente, a la vez que de FW16 a FWH (esto 煤ltimo ya he pasado parte porque tiene varios ejecutables). Es una aplicaci贸n muy gorda, unas 150 dbfs, m谩s de 300.000 l铆nea de c贸digo, 5 Dlls de recursos, lenguaje Script propio (basado en TScript que creo no est谩 disponible para Harbour), etc.

As铆 que agradezco todas las ayudas, mi email es:
sebas@moralzarzal.com

Saludos
Posts: 113
Joined: Wed Jan 10, 2007 08:43 PM
Oracle con ADO
Posted: Tue Oct 09, 2007 03:34 PM

Sebasti谩n favor mira tu correo.
Saludos

David Lagos S.
Coquimbo-Chile
www.wificafe.cl
webmaster@wificafe.cl
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Oracle con ADO
Posted: Tue Oct 09, 2007 04:00 PM
metaldrummer wrote:Sebasti谩n favor mira tu correo.
Saludos


Gracias David. Ahora mismo le hecho un vistazo.

Saludos
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Oracle con ADO
Posted: Thu Oct 18, 2007 03:53 AM
metaldrummer wrote:Sebastian:
Dame un correo donde enviarte un ejemplo.
La idea es que te olvides del concepto de .dbf
Yo por lo menos trabajo con ADO duro y puro y no tengo problemas.
Saludos
David


David, podrias enviarme el ejemplo a mi correo:

soporte@lebsoft.es

Muchas gracias
Un saludo



Manuel
Posts: 18
Joined: Mon Jan 29, 2007 01:29 AM
Oracle con ADO
Posted: Tue Jan 08, 2008 05:58 PM
metaldrummer wrote:Sebastian:
Dame un correo donde enviarte un ejemplo.
La idea es que te olvides del concepto de .dbf
Yo por lo menos trabajo con ADO duro y puro y no tengo problemas.
Saludos
David


Hola,

Yo tambien uso ADO, pero la conexion a la base la hago por medio de un ODBC previamente configurado:

oCnx200:=TAdoConn():New()

IF !oCnx200:Open( "ORACLE CBS", "CBS", "pedro234" )
Msginfo('No hay conexi贸n con el Servidor de Oracle...')
Return( .f. )
ENDIF

Como hago la conexi贸n sin usar ODBC.

Saludos,
Mario A. D谩valos
M茅xico, D.F.
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Oracle con ADO
Posted: Tue Jan 08, 2008 08:43 PM
MarioDava wrote:
Yo tambien uso ADO, pero la conexion a la base la hago por medio de un ODBC previamente configurado:Como hago la conexi贸n sin usar ODBC.


La conexi贸n por ADO es mucho mas r谩pida y directa. Esta es una forma de conectar son Oracle (recuerda iniciar previamente la BD):

Local cProv := "MSDAORA.1"
Local cHost := "127.0.0.1" // tambien puedes poner el nombre de la BD
Local cUser := "hr"
local cPass := "hr"
local oCon := TOLEAuto():New('ADODB.Connection')

// realiza la conexion con la Base de Datos
TRY
oCon:Open("Provider=" + cProv + ";" + ;
"Data Source= " + cHost + ";" + ;
"User ID=" + cUser + ";" + ;
"Password=" + cPass + ";" )
CATCH
MSGSTOP ("Provider: " + cProv + CRLF + ;
"Host: " + cHost + CRLF + ;
"Usuario: " + cUser + CRLF + ;
"Clave: " + cPass, "Error de Conexi贸n")

RETURN nil
END
Un saludo



Manuel
Posts: 18
Joined: Mon Jan 29, 2007 01:29 AM
Oracle con ADO
Posted: Tue Jan 08, 2008 09:31 PM
Manuel Valdenebro wrote:
MarioDava wrote:
Yo tambien uso ADO, pero la conexion a la base la hago por medio de un ODBC previamente configurado:Como hago la conexi贸n sin usar ODBC.


La conexi贸n por ADO es mucho mas r谩pida y directa. Esta es una forma de conectar son Oracle (recuerda iniciar previamente la BD):

Local cProv := "MSDAORA.1"
Local cHost := "127.0.0.1" // tambien puedes poner el nombre de la BD
Local cUser := "hr"
local cPass := "hr"
local oCon := TOLEAuto():New('ADODB.Connection')

// realiza la conexion con la Base de Datos
TRY
oCon:Open("Provider=" + cProv + ";" + ;
"Data Source= " + cHost + ";" + ;
"User ID=" + cUser + ";" + ;
"Password=" + cPass + ";" )
CATCH
MSGSTOP ("Provider: " + cProv + CRLF + ;
"Host: " + cHost + CRLF + ;
"Usuario: " + cUser + CRLF + ;
"Clave: " + cPass, "Error de Conexi贸n")

RETURN nil
END


Me puedes explicar un poco que es:

Local cProv := "MSDAORA.1"

y porque MSDAORA.1, yo acceso a una base remota de Orcale 10g

Saludos y gracias,
Mario A. D谩valos
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Oracle con ADO
Posted: Wed Jan 09, 2008 05:04 AM
MarioDava wrote:Me puedes explicar un poco que es:
Local cProv := "MSDAORA.1"


MSDAORA.1 es el provider OLE estandar de Microsoft para acceder a una base de datos Oracle, aunque el mismo Oracle tiene otro provider-OLE propio. Si usas la funci贸n siguiente (cortes铆a de Biel), puedes probar si la conexi贸n es correcta, usando el Datalink de Microsoft.

static FUNCTION FDATALINK (oCon)
LOCAL oDataLink := TOleAuto():New("Datalinks"), ;
oConn := oDataLink:PromptNew()

msginfo (oConn:ConnectionString)
oCon:CLOSE()

RETURN nil
Un saludo



Manuel
Posts: 18
Joined: Mon Jan 29, 2007 01:29 AM
Oracle con ADO
Posted: Thu Jan 10, 2008 12:00 AM
Manuel Valdenebro wrote:
MarioDava wrote:Me puedes explicar un poco que es:
Local cProv := "MSDAORA.1"


MSDAORA.1 es el provider OLE estandar de Microsoft para acceder a una base de datos Oracle, aunque el mismo Oracle tiene otro provider-OLE propio. Si usas la funci贸n siguiente (cortes铆a de Biel), puedes probar si la conexi贸n es correcta, usando el Datalink de Microsoft.

static FUNCTION FDATALINK (oCon)
LOCAL oDataLink := TOleAuto():New("Datalinks"), ;
oConn := oDataLink:PromptNew()

msginfo (oConn:ConnectionString)
oCon:CLOSE()

RETURN nil


Gracias Manuel, finalmente pude hacer la conexi贸n a Oracle v铆a ADO, tengo una pregunta que hacerte, has usado en tus querys en la clausula WHERE capos tipo fecha? y si es el caso, te funcionan bien, a mi no?

Antes me conectaba via ODBC y mis querys correian perfecto, ahora las querys que usan fechas no funcionan.

Saludos,
Mario A. D谩valos
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Oracle con ADO
Posted: Thu Jan 10, 2008 06:00 AM
MarioDava wrote:Gracias Manuel, finalmente pude hacer la conexi贸n a Oracle v铆a ADO, tengo una pregunta que hacerte, has usado en tus querys en la clausula WHERE capos tipo fecha? y si es el caso, te funcionan bien, a mi no?


Mario,

Aqu铆 estamos aprendiendo a "porrazos" y con la ayuda de todos. Por eso ser铆a bueno nos comentaras como te has conectado, con que cadena de conexi贸n.

En cuando al problema de las fecha, yo no tengo problemas. La siguiente consulta sobre la tabla EMPLOYEES la realiza correcamente:

select * from employees where LAST_NAME LIKE 'D%' AND hire_date > '01/01/1998'

驴Estas usando comillas dobles 贸 sencillas?
Un saludo



Manuel