guizans   30-11-2025, 19:35
#1
En el proyecto que estoy haciendo, los resultado mostrados no me cuadran con los almacenados en la base de datos de SQLite3, así que he hecho pruebas y el resultado es cuanto menos que desconcertante. 

Aquí el código en Gambas:

Código:
Public Sub Main()
 
  Dim conexion As Connection
  Dim resultado As Result
 
  conexion = New Connection
  conexion.Host = File.Dir("/home/mi/.local/share/lineas/")
  conexion.Name = File.Name("lineas.db")
  conexion.Type = "sqlite3"
 
  conexion.Open()
   
  resultado = conexion.Exec("SELECT intervalo, porcentajeCarga FROM LineaEstacions LEFT OUTER JOIN Estacions WHERE idLinea=2 AND Estacions.ID=idEstacions")
  resultado.MoveFirst
 
  While resultado.Available
    Print resultado["intervalo"]
    Print resultado["porcentajeCarga"]
    resultado.MoveNext
  Wend
 
End

Y el resultado de esta consulta sencilla es el siguiente:
Cita:0 %
-228735570
0 %
1
0 %
1
0 %
1

El número negativo que aparece no se de donde sale, y cambia en cada ejecución.
Ahora en Python usando la misma base de datos y la misma consulta:
Código:
import sqlite3

bd = sqlite3.connect("lineas.db")
cursor = bd.cursor()

sentencia = "SELECT intervalo, porcentajeCarga FROM LineaEstacions LEFT OUTER JOIN Estacions WHERE idLinea=2 AND Estacions.ID=idEstacions"
cursor.execute(sentencia)

a = cursor.fetchall()

for intervalo,porcentajeCarga in a:
  print(intervalo)
  print(porcentajeCarga)
 El cual arroja lo siguiente:
Cita:0 %
00:00:00
0 %
00:00:00
0 %
00:00:00
0 %
00:00:0

Lo cual corresponde con lo almacenado en la base de datos. 
Y usando el programa DB Browser usando la misma consulta de la misma tabla el resultado es el mismo que en Python.
En la tabla, intervalo es de tipo INTEGER  TEXT y porcentajeCarga es de tipo TEXT. Estoy usando Gambas 3.20.2 en Debian.

¿Será un bug de esta versión? Es que es increíble.

Un saludo.
Última modificación: 02-12-2025, 23:00 por guizans.
Shordi   01-12-2025, 08:53
#2
Pasa la estructura de la BD. Con eso podemos ver y reproducir el asunto.
Saludos

No podemos regresar
guizans   01-12-2025, 22:08
#3
Te paso la base de datos que no contiene casi nada, y es pequeña (no me deja adjuntarla, así que te paso un enlace)

Base de datos.

 A ver si ves lo que puede pasar. Voy a actualizar Gambas a la última versión y veo si sigue el problema.

Acabo de actualizar y el problema sigue siendo el mismo o peor.

Un saludo.

Edit: En Java también da el resultado esperado.
Última modificación: 01-12-2025, 22:52 por guizans.
Rufs   02-12-2025, 16:41
#4
Olá!!

Para obter no formato desejado, precisa alterar o campo na tabela de "INTEGER para TEXT".
Caso não queira alterar a tabela, manipular o código com:

resultado = conexion.Exec("SELECT intervalo, CAST(porcentajeCarga AS TEXT) AS porcentajeCarga FROM LineaEstacions LEFT OUTER JOIN Estacions ON Estacions.ID=idEstacions WHERE idLinea=2")
guizans   02-12-2025, 22:57
#5
Gracias Rufs.

Pues tienes razón, en un campo tenía que ser de tipo TEXT pero por alguna metedura de pata por mi parte lo declaré de como INTEGER y de ahí el resultado. Una vez cambiado el campo todo es correcto.

Lo curioso es que en Python y Java el resultado fuese correcto a pesar de tener mal el campo, por eso no sospeché nunca de la base de datos.

Lo dicho, muchas gracias.

Un saludo.
Shordi   03-12-2025, 09:58
#6
Como te dije, pasando la estructura se puede ayudar. Yo no he llegado a tiempo porque el enlace que pasaste de la BD no sigue vivo.

Saludos

No podemos regresar
guizans   04-12-2025, 22:49
#7
Gracias Shordi.

El enlace lo borré ya que está solucionado. Parece mentira como una chorrada me estaba desquiciando. Para la próxima ya se que lo primero es mirar los tipos de datos.

Un saludo.
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2026 MyBB Group.
Made with by Curves UI.