Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Oracle (https://www.clubdelphi.com/foros/forumdisplay.php?f=22)
-   -   importar de dbf a oracle. deberia ser facil... (https://www.clubdelphi.com/foros/showthread.php?t=8088)

pepe2000 07-03-2004 22:05:01

importar de dbf a oracle. deberia ser facil...
 
Hola a todos.
En un mismo formulario, he puesto una conexion a DBF y otra a ORACLE. Al momento de pasar datos de una tabla a la otra, aparece un error que pertenece a Oracle.
Probando me he dado cuenta que esto sucede en el caso de campos numericos.
RESUMO:
Alguien puede decirme como paso datos numericos de un DBF a Oracle?
Muchas gracias

jachguate 08-03-2004 05:35:48

Seria excelente ver cómo los estas pasando, para sacar algo en claro.

Asi, en frio he de decirte que basta con:

TablaOracleCampo.AsFloat := TablaDBFCampo.AsFloat;

Hasta luego.

;)

jachguate 08-03-2004 05:42:46

y por supuesto el error de oracle... es imprescindible!

pepe2000 08-03-2004 15:21:27

aqui esta:
 
el error es:
raised exception class EDBEngineerror with message 'General SQL error.
[Oracle][ODBC][Ora]ORA-01722: numero no válido'. Process stopped.
¿será por el uso de ODBC?. porque importando desde Access a Oracle con:
INSERT INTO T1 SELECT * FROM T2 salía el mismo error (ORA-01722).
Gracias.

marto 08-03-2004 16:10:19

Es posible que en algun registro tengas valores NULL en alguno de tus campos numéricos? Si es así quizá sería bueno traducir los NUL a 0.

jachguate 08-03-2004 17:21:57

Cita:

ORA-01722

ORA-01722invalid number

Cause:The attempted conversion of a character string to a number failed because the character string was not a valid numeric literal. Only numeric fields or character fields containing numeric data may be used in arithmetic functions or expressions. Only numeric fields may be added to or subtracted from dates.

Action:Check the character strings in the function or expression; make sure they contain only numbers, a sign, a decimal point, and the character "E" or "e", then retry the operation.
Seguramente le estas enviando números "formateados" o con una coma como separador de decimales (solamente te reconocerá el punto). Es mejor trabajar directamente con números y no enviar cadenas que contienen números, para evitar estos problemas. De cualquier forma podes enviar una cadena siempre que sigas las recomendaciones de la cita anterior.

El problema no tiene nada que ver con valores NULL, que son perfectamente soportados por Oracle.

Hasta luego.

;)

pepe2000 08-03-2004 18:48:29

nada...
 
he probrado a hacer una tabla DBF, luego otra en ACCESS (con un campo numerico), Luego aplico el siguiente codigo:
Código:

tablaDBF.First;
while not tablaDBF.Eof do begin
  tablaORACLE.append;
  TablaORACLEcampo.asfloat:=TablaDBF.asfloat;
  TablaORACLE.Post;
  TablaDBF.Next
end;

y devuelve el error ORA-01722.
Sé que se trata de campos numericos porque cuando trato de hacer el mismo codigo con strings no tiene problemas.
Espero que me ayuden.
Muchas gracias

jachguate 08-03-2004 20:50:10

Quizas sea problema del controlador ODBC que estas usando, que no sabe "platicar" con Oracle y le pasa textos inadecuados. Porque no intentas conectarte directamente a oracle con el BDE, usando el driver Oracle, veras como se arregla el problema y además, te quitas al molesto ODBC del medio.

Hasta luego.

;)

marto 08-03-2004 21:01:09

Cita:

Empezado por jachguate
El problema no tiene nada que ver con valores NULL, que son perfectamente soportados por Oracle.

Eso depende de como le pases los valores. Evidentemente, oracle soporta valores NULL, pero no todas las bases de datos los representan de la misma manera. Además, depende de como esté asignando los valores. Por ejemplo, montado SQL al vuelo podría dar errores.

jachguate 08-03-2004 21:14:52

Claro marto, a lo que me refería es que el Ora-01722 no tiene nada que ver con valores NULL, salvo claro que intentara insertarse la cadena 'NULL' en un valor numérico, pero por lo ya mencionado, no creo que sea el caso.

Hasta luego. ;)

pepe2000 08-03-2004 22:35:00

bueno
 
bueno muchas gracias de todas maneras.
Haré otras pruebas y les comento como quedó todo esto.


La franja horaria es GMT +2. Ahora son las 06:32:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi