Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 5
Ir a la página Anterior  1, 2, 3, 4, 5  Siguiente
 
Truncar Campo Float A Dos Decimales
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: Truncar Campo Float A Dos Decimales 
 
Si, estoy de acuerdo, lo mejor seria echarle un vistazo al código y a la base de datos, me refiero a su estructura.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Truncar Campo Float A Dos Decimales 
 
tincho escribió:  
Si, estoy de acuerdo, lo mejor seria echarle un vistazo al código y a la base de datos, me refiero a su estructura.


Gracias, se que puede estar solucionado por la base de datos, pero yo siempre investigo. Para el foro yo lo doy por finalizado pero como yo tengo todo disponible, si voy a investigarlo por mi cuenta, por lo menos hasta quedar completamente convencido. Además es parte de mi diversión, saber el porque de las cosas respecto al código.

Saludos.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Truncar Campo Float A Dos Decimales 
 
Más datos. He puesto una novedad sobre este tema.

https://foro.gambas-es.org/viewtopic.php?p=44965#p44965

¿Que opináis al respecto?

Solo para saber si es normal, gracias.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Truncar Campo Float A Dos Decimales 
 
gambafeliz escribió:  
tincho escribió:  
gambafeliz escribió:  
Tengo una base de datos SQLite3

Bienvenido.
En las bases de datos Sqlite3 yo suelo poner REAL y no Float y todo va bien.
Creo que te encuentras ante algún error de diseño de la base de datos.
Saludos.


Hola

Seguramente es así, es que es mi primera incursión en SQLite3, además de Gambas3 y es un proyecto que lo empecé en PHP y procede de un archivo CSV donde yo lo exporto a SQLite3, los campos ya venían en Float y lo que hice es simplemente dejarlos así. he instalado DB Browser for SQLite y el campo no es Float y si es REAL como me habías dicho.

Como ya te has fijado por la historieta todo es un perfecto desarrollo basado en un novato en todos estos campos.
Como ya no me acordaba, en su día lo hice bien, pero como lo estoy comenzando nuevamente pero en gambas pues no lo miré y di por valido lo que en la Zona de Conexiones de Gambas3 tiene y ahí me decía en la estructura de la tabla que era Float y no REAL.

Ahora con esta nueva información que opinais. De momento Gambas3 informa mal de la estructura del campo o quizás es su forma de representarlo.

Oye gracias lo miraré para adaptarlo y seguiré preguntando sobre muchas mas cosas y espero que me ayudes en el futuro. Por cierto me encantó Gambas3, mi enhorabuena a los desarrolladores y demás personas que hacen que sea posible.


Sqlite no es una base de datos de tipos de datos fijos y rígidos. Funciona con lo que llaman afinidad de datos:
https://translate.google.es/transla...Fdatatype3.html

Subrayo la frase:
"Cualquier columna en una base de datos SQLite versión 3, excepto una columna INTEGER PRIMARY KEY , puede usarse para almacenar un valor de cualquier clase de almacenamiento."
A estas conversiones que la propia sqlite realiza debemos sumar la conversión de sus tipos a los de gambas
http://www.gambaswiki.org/wiki/doc/db-type-mapping

Por eso es importante ver la estructura de la BBDD y el código que la manipula para saber qué está pasando.

Por último, no me parece correcto el enfoque de no subir ni tu base de datos ni tu código y pretender que adivinemos qué es lo que te está fallando. Entiendo ese pudor que se tiene al principio de mostrar código... pero la única forma de progresar de verdad es el trabajo en grupo.

Saludos
 




===================
No podemos regresar
 
última edición por shordi el Sabado, 06 Julio 2019, 17:31; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Truncar Campo Float A Dos Decimales 
 
gambafeliz escribió:  
tincho escribió:  
Si, estoy de acuerdo, lo mejor seria echarle un vistazo al código y a la base de datos, me refiero a su estructura.

Gracias, se que puede estar solucionado por la base de datos, pero yo siempre investigo. Para el foro yo lo doy por finalizado pero como yo tengo todo disponible, si voy a investigarlo por mi cuenta, por lo menos hasta quedar completamente convencido. Además es parte de mi diversión, saber el porque de las cosas respecto al código.
Saludos.

Bueno, una respuesta un poco entre rara y rebuscada, lo que entiendo es que no querés compartir el código por alguna razón.
Mira, no pasa nada si no podes compartir el código debido a que es del trabajo o algo así, pero:
  • Haces una pregunta con poca información y cuando intentamos ayudarte respondes estas cosas extrañas.
  • El foro no es solo para aclarar las dudas de un usuario, en este caso tu, es para que todo el mundo aprenda de las preguntas y respuestas que se formulan, de ahí que hacer buenas preguntas, bien fundamentadas y con ejemplos hace que los que intentan dar una respuesta tengan elementos de análisis.
  • Este medio es para propiciar una dinámica virtuosa en la que todos aprendemos.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Truncar Campo Float A Dos Decimales 
 
shordi escribió:  
gambafeliz escribió:  
tincho escribió:  
[quote user="gambafeliz" post="44956"]Tengo una base de datos SQLite3[/quote]
Bienvenido.
En las bases de datos Sqlite3 yo suelo poner REAL y no Float y todo va bien.
Creo que te encuentras ante algún error de diseño de la base de datos.
Saludos.


Hola

Seguramente es así, es que es mi primera incursión en SQLite3, además de Gambas3 y es un proyecto que lo empecé en PHP y procede de un archivo CSV donde yo lo exporto a SQLite3, los campos ya venían en Float y lo que hice es simplemente dejarlos así. he instalado DB Browser for SQLite y el campo no es Float y si es REAL como me habías dicho.

Como ya te has fijado por la historieta todo es un perfecto desarrollo basado en un novato en todos estos campos.
Como ya no me acordaba, en su día lo hice bien, pero como lo estoy comenzando nuevamente pero en gambas pues no lo miré y di por valido lo que en la Zona de Conexiones de Gambas3 tiene y ahí me decía en la estructura de la tabla que era Float y no REAL.

Ahora con esta nueva información que opinais. De momento Gambas3 informa mal de la estructura del campo o quizás es su forma de representarlo.

Oye gracias lo miraré para adaptarlo y seguiré preguntando sobre muchas mas cosas y espero que me ayudes en el futuro. Por cierto me encantó Gambas3, mi enhorabuena a los desarrolladores y demás personas que hacen que sea posible.


Sqlite no es una base de datos de tipos de datos fijos y rígidos. Funciona con lo que llaman afinidad de datos:
https://translate.google.es/transla...Fdatatype3.html

Subrayo la frase:
"Cualquier columna en una base de datos SQLite versión 3, excepto una columna INTEGER PRIMARY KEY , puede usarse para almacenar un valor de cualquier clase de almacenamiento."
A estas conversiones que la propia sqlite realiza debemos sumar la conversión de sus tipos a los de gambas
http://www.gambaswiki.org/wiki/doc/db-type-mapping

Por eso es importante ver la estructura de la BBDD y el código que la manipula para saber qué está pasando.

Por último, no me parece correcto el enfoque de no subir ni tu base de datos ni tu código y pretender que adivinemos qué es lo que te está fallando. Entiendo ese pudor que se tiene al principio de mostrar código... pero la única forma de progresar de verdad es el trabajo en grupo.

Saludos


Gracias por las respuestas a ambos, pero con perdón no hace falta dramatizar por Dios, no tengo ningún doble sentido, quizás desconocimiento en como trasmitir la información, recordad que no es lo mismo escribir que hablar, quizás en una terracita con una buena bebida y algo calentito o del tiempo para comer y buenas vistas a lo mejor podríamos dialogar con más perspectiva. Pero bueno.

Bueno jóvenes os doy lo que creo que han pedido, espero acertar sin causar alboroto. Gracias.

Esta es el create de la tabla Gastos:
CREATE TABLE "Gastos" ( "Descripción" TEXT, "Importe" REAL, "Cargos" REAL, "Lanzamiento" TEXT, "Vencimiento" TEXT, "Realizado" TEXT, "Categoría" TEXT, "Subcategoría" TEXT, "Tarjeta" TEXT, "Cuenta" TEXT, "Observaciones" TEXT )

El código era muy simple:

' Esto es lo que hago ahora, pero antes el Round estaba en el Resultado
Resultado = Conn.Exec("SELECT Descripción, Round(Importe, 2) As Importe, Round(Cargos, 2) As Cargos, Lanzamiento, Realizado From Gastos WHERE Realizado BETWEEN '" & ano & "/" & Format(mes, "00") & "/01' AND '" & ano & "/" & Format(mes, "00") & "/" & Format(fec.ultimoDiaMes(), "00") & "' ORDER BY Realizado ASC; ")
  Gridviewdatos.Rows.Count = Resultado.Count
  For c = 0 To Resultado.Count - 1
    Gridviewdatos[c, 0].Text = Resultado["Descripción"]
    Gridviewdatos[c, 1].Text = Format(Resultado["Importe"], "-0.00 €") ' Yo ponía aquí, Round(Resultado["Importe"], -2) que es lo que me dijisteis, no es así.
    Gridviewdatos[c, 2].Text = Format(Resultado["Cargos"], "-0.00 €")
   Resultado.MoveNext
  Next
  Gridviewdatos.Refresh  

Espero no tener que poner mas código ya que con esto ya deberían saber seguirlo. O lo doy por echo.

Y sino me comentan lo que necesitan quizás dándome mas aclaraciones y yo lo hago, es que a veces si no me dicen más directamente lo que quieren yo ni me entero.

Conexión Gambas3.png
Descripción:  
Tamaño: 32.34 KB
Visto: 48 veces

Conexión Gambas3.png

Conexión Gambas3.png
Descripción:  
Tamaño: 32.34 KB
Visto: 48 veces

Conexión Gambas3.png

Conexión Gambas3.png
Descripción:  
Tamaño: 32.34 KB
Visto: 48 veces

Conexión Gambas3.png


 



 
última edición por gambafeliz el Sabado, 06 Julio 2019, 22:24; editado 4 veces 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Truncar Campo Float A Dos Decimales 
 
La mejor manera de compartir código la tienes en el menú Proyecto->Crear->Archivo Fuente

Creas un proyecto pequeño que contenga lo que quieras compartir (o tu proyecto original si no eres pudoroso) y con esa opción se genera un comprimido de la carpeta del proyecto que adjuntas a tu post. Es lo que he hecho yo en éste post.

Bien, como verás en el adjunto, tu problema es que la base de datos contiene datos erróneos:Lleva incrustada la coma decimal en los campos REAL (o Float, que lo mismo da si leíste lo que te adjunté arriba). Sólo se admiten puntos. (Vuelvo a citar la frase que subrayé en mi respuesta anterior: En SQLITE se pueden meter datos de cualquier tipo en cualquier campo ---salvo los integer primary key---. Eso hace que el peso real del manejo de tales datos caiga en el software que maneje la BBDD, más que en el propio Sqlite ---que también---.)
¿Cómo es que entonces programas como el dbsqlite browser lo muestran bien? Pues porque esos programas hacen lo mismo que gambas, intentan adaptarse lo más posible e interpretan la base de datos. Por eso Benoit proclama que sólo se garantiza que funcione en bases de datos que se puedan manejar desde el IDE.
Asi, si abres la base de datos con el IDE e intentas meter un número con coma decimal en lugar de punto el IDE no te lo permite. Mientras que software externo a gambas sí lo hace.

Sé que ahora mismo lo tienes apañado con la consulta sql... pero el que la BBDD contenga datos "irregulares" te puede ocasionar problemas en cualquier función, cálculo, etc. que hagas en el futuro. Por eso reitero el consejo que ya te dí en una respuesta anterior:
Los datos que te envían pásalos a una bbdd temporal y desde ahí a la definitiva una vez adaptados. Como me dijiste que ya lo hacías, pues añade un "Update tabla set campo=replace(campo,",",".")" y todo arreglado.

Saludos

gambafeliz-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: gambafeliz-0.0.1.tar.gz
Tamaño: 12.73 KB
Descargado: 46 veces
gambafeliz-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: gambafeliz-0.0.1.tar.gz
Tamaño: 12.73 KB
Descargado: 46 veces
gambafeliz-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: gambafeliz-0.0.1.tar.gz
Tamaño: 12.73 KB
Descargado: 46 veces

 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Truncar Campo Float A Dos Decimales 
 
Se me olvidaba: El proyecto que te mando crea una pequeña base de datos en tu home y la borra, si se lo dices, al salir

Contiene una tabla tal como la describes en tu respuesta con dos registros. El primero es correcto, el segundo contiene un campo con coma y otro sin decimales

Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Truncar Campo Float A Dos Decimales 
 
shordi escribió:  
Se me olvidaba: El proyecto que te mando crea una pequeña base de datos en tu home y la borra, si se lo dices, al salir

Contiene una tabla tal como la describes en tu respuesta con dos registros. El primero es correcto, el segundo contiene un campo con coma y otro sin decimales

Saludos.


Permíteme decirte "me maravilla tener el honor de hablar con personas con tal conocimiento como tu" lo digo completamente de verdad. Me encantaría poder explicar esto de tu a tu conversando en vez de escribiendo. Gracias.

El dato que doy al principio del hilo: 5,0642292490119E-321 es lo que recupero desde la tabla Gastos que me devuelve la conexión de Gambas3-IDE pero el dato que tiene en mi Base de datos en la tabla Gastos y en el campo Importe es: "nota, este es uno cualquiera pero todos son 43.58 osea un entero seguido de un punto y dos decimales" (fíjate que todos tienen "." y no ",") como vez entiendo que los datos que contiene la base de datos no parecen que estén mal.

Por favor no quiero discutir voy hacer lo que me dices y lo voy analizar como dios manda. Tienes toda la razón. El que siga R que R es por que me parece y seguro sin razón que hay algún problema pero aunque no lo halla para mi es algo emocionante, no crees

Miro todo y si me permites seguimos conversado. Gracias por estar por aquí.
 



 
última edición por gambafeliz el Domingo, 07 Julio 2019, 11:10; editado 3 veces 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Truncar Campo Float A Dos Decimales 
 
A mandar, como se dice en mi pueblo.
     
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Truncar Un Archivo A Una Determinada Dimen... vuott Aplicaciones/Fragmentos de Código 2 Domingo, 17 Julio 2016, 14:17 Ver último mensaje
vuott
No hay nuevos mensajes Float De 8 Decimales? CanihoJR General 1 Miercoles, 25 Abril 2018, 15:11 Ver último mensaje
razaAztk
No hay nuevos mensajes Problema Con La Variable Float Guizans General 4 Miercoles, 25 Abril 2018, 18:49 Ver último mensaje
jsbsan
No hay nuevos mensajes Convertir String[] A Float gambafeliz General 14 Lunes, 26 Agosto 2019, 09:33 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 2 de 5
Ir a la página Anterior  1, 2, 3, 4, 5  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 2 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron