Comunidad Gambas-es
gb.db2: columnas calculadas o martilladas - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Bases de Datos (https://gambas-es.org/forum-6.html)
+--- Tema: gb.db2: columnas calculadas o martilladas (/thread-1916.html)



gb.db2: columnas calculadas o martilladas - omoreno - 05-04-2025

Se tiene la siguiente consulta:

Código:
$Res = $con.Exec("SELECT campo1, campo2, 'ABC' AS 'Dato' FROM xyz")

Con la nueva versión del componte gb.gb2 me he encontrado con estos resultados en su colección Fields:

Fields en SQLite: campo1, campo2, Dato
Fields en  MariaDB: xyz.campo1, xyz.campo2, .Dato

Luego si quería los datos del result con el código:

C1 = $Res[“campo1”]
C2 = $Res[“campo2”]
Dabc = $Res[“Dato”]

En sqlite, todo bien pero en las base de datos relacionales…. ERROR!!!
Todas mis consultas que tuvieran un campo calculado o “martillado” generaban error por que sistema decía que no existen esas columnas…
Pues para las relacionales tuve que colocar el punto

Dabc = $Res[“.Dato”]

¿Esto es  un Bug o la nueva forma de acceder a los campos de las tablas en base de datos relacionales con el nuevo componente gb.db2?

Gracias por sus posibles respuestas.


RE: gb.db2: columnas calculadas o martilladas - Shordi - 05-04-2025

A mí si me funciona bien. ¿Qué versión de gambas usas?


RE: gb.db2: columnas calculadas o martilladas - omoreno - 06-04-2025

(05-04-2025, 20:41)Shordi escribió: A mí si me funciona bien. ¿Qué versión de gambas usas?

Estoy usando Gambas 3.20.2.


[Imagen: GU54hJyl.png]

Observa Cli_NomActivo viene de un CASE END en la consulta SQL a MariaDB.

Código:
  SqlQuery = "SELECT "
  "Cli_Id,                "
  "Cli_Nombre,            "
  "Cli_Direccion,          "
  "Cli_Telefono,          "
  "Cli_Contacto,          "
  "Cli_Activo,            "
  "(CASE Cli_Activo        "
  "  WHEN 0 THEN 'INACTIVO' "
  "  WHEN 1 THEN 'ACTIVO'  "
  "  ELSE '???'            "
  "END) AS Cli_NomActivo    "
  "FROM CLIENTES          "



RE: gb.db2: columnas calculadas o martilladas - Shordi - 06-04-2025

Ah... Nunca he usado ese formato de consultas. Desde siempre he tratado ese tipo de cosas en el código de gambas, no en el SQL. Tengo que probarlo... Eso de que gambas no haga caso a las cláusulas as de SQL es un peñazo. Yo he tenido problemas con eso de usar los nombres de campo como cabeceras de columna y cosas así. No queda bien la pareja tabla.campo en una cabecera. Tengo una funcioncita que elimina el nombre de la tabla seleccionando todo lo que hay después del primer punto (porque a veces hay campos que tienen puntos en el nombre). Si haces algo así te valdrá... pero no deja de ser una chapuza.

Saludos


RE: gb.db2: columnas calculadas o martilladas - omoreno - 06-04-2025

(06-04-2025, 11:17)Shordi escribió: Ah... Nunca he usado ese formato de consultas. Desde siempre he tratado ese tipo de cosas en el código de gambas, no en el SQL. Tengo que probarlo...  Eso de que gambas no haga caso a las cláusulas as de SQL es un peñazo. Yo he tenido problemas con eso de usar los nombres de campo como cabeceras de columna y cosas así. No queda bien la pareja tabla.campo en una cabecera. Tengo una funcioncita que elimina el nombre de la tabla seleccionando todo lo que hay después del primer punto (porque a veces hay campos que tienen puntos en el nombre). Si haces algo así te valdrá... pero no deja de ser una chapuza.

Saludos

Ya lo reporte en el BugTracker, esperemos a ver la respuesta o la próxima versión reparada.

Saludos.


RE: gb.db2: columnas calculadas o martilladas - guizans - 23-04-2025

Hola.

Acabo de probar la versión 3.20.2 en Debian y el progama que estoy haciendo, que usa SQLite3, no funciona con gb.db.sqlite2, me lanza también un error de que no existe el campo en la base de datos. Y me da una pereza enorme tener que cambiar todo, así que de momento uso gb.db.sqlite aunque esté marcado como obsoleto, esperando que salga una nueva versión que corriga este fallo, o lo que sea.

Un saludo.