Error con Oracle y vfp

87 views
Skip to first unread message

Alejandro Diaz

unread,
Feb 1, 2018, 10:38:03 AM2/1/18
to Comunidad de Visual Foxpro en Español
Hola Foro, tengo un inconveniente recientemente en la empresa nos migramos a windows 10, y tengo un sistema desarrollado en Visual Fox Pro 9 que utiliza como base de datos Oracle y algunas tablas en dbf, el problema es que las tablas que están en oracle a la hora de consultar los datos de tipo FLOAT me los aproxima y me los devuelve como que fueran INT, pero en las tablas dbf's si funciona como debería.
Le tengo establecido que utilice 6 decimales, pero siempre me sigue aproximando los datos contenidos en oracle, en mi empresa se maneja dinero por lo cual no puede aproximar ya que tiene que ser exacto, si alguien me pudiera ayudar estaría eternamente agradecido.
Abajo dejo los métodos que utiliza para conectarse a la BD y un ejemplo de como consulta los datos.

este es el browse que le hice desde fox pareciera que trae los valores como son

Esto es la consulta desde el sqldeveloper de oracle


ahora cuando me posiciono sobre la casilla que contiene el 221.29 desde el browse de fox, me quita el .29 y me aproxima a 221  y lo mismo pasa cuando se esta ejecutando el programa todos los valores los devuelve sin decimales, y como mencione antes mi empresa maneja prestamos por lo cual los cálculos deben ser exactos.


De antemano muy agradecido por su ayuda

**. en windows 8, 7 funciona correctamente**

procedimiento para establecer conexion
Procedure DBConnect
Lparameters LpDBName,LpUser,LpPass

        lcStringConn =     "Driver={Oracle en Oracle10g}"+ ;
                          ";Dbq="+LpDBName + ;
                         ";Uid="+LpUser + ;
                        ";Pwd="+LpPass
          SQLSetprop(0,"DispLogin",3)
          ConOra=Sqlstringconnect(lcStringConn)

           If ConOra > 0
                Return .t.        
            Else
                =Aerror(laError)
                 Messagebox("Error de conexión"+Chr(13)+"Descripcion:"+laError[2],0+16,gSistema)
                 Clear Events
              Endif
EndProc 

Conectar a la BD
Do DBConnect with 'pinfom','nomi001','usuanomi'

Consulta a la BD
vBus1 = SQLExec(conOra,"Select * From prestamos_infom_cabecera ","cCabe")

Nilton Kristian Torres Linares

unread,
Feb 1, 2018, 10:58:27 AM2/1/18
to Comunidad de Visual Foxpro en Español
Antes de hacer el select a la tabla prestamos_infom_cabecera realiza este alter.

lsSql="ALTER SESSION SET NLS_NUMERIC_CHARACTERS='.,'"
=SQLEXEC(conOra,lsSql)

Saludos.

Alejandro Diaz

unread,
Feb 1, 2018, 11:31:50 AM2/1/18
to Comunidad de Visual Foxpro en Español
Muchísimas Gracias!!!!!!!!!!!!!!!!
Reply all
Reply to author
Forward
0 new messages