Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-03-2024
michal michal is offline
Miembro
 
Registrado: feb 2015
Posts: 28
Poder: 0
michal Va por buen camino
Problemas con los campos de una consulta SQL

Hola a todos
Estoy usando C++Builder6 y quiero usar DisplayFormat para que en mi DBGrid, en las celdas cuyos valores son de moneda, me ponga el símbolo de $ y los valores decimales. Estoy usando esto:


Código Delphi [-]
((TNumericField*)ADOQuery1->FieldByName("contratos.monto_cto"))->DisplayFormat = "$ #,##.00";


Y no me funciona, me dice que no encuentra ese campo(a pesar de que la utilizo luego del ADOQuery1->Open(). El tema es que estoy usando varias tablas en mi consulta y al hacer SELECT debo usar cosas como esta "contratos.monto_cto, clientes.nombre_clte". Intenté usar alias, como "contratos.monto_cto AS monto", pero igual no lo encuentra. Sin embargo, si pongo un SELECT * FROM Tabla1, Tabla2..., si funciona. Al igual que si utilizo una consulta simple a una sola tabla.



Cómo pudiera resolver ese problema? Necesito que sea mediante código, porque son muchas consultas, y no deseo usar un TADOQuery para cada una.



Saludos

Última edición por Neftali [Germán.Estévez] fecha: 04-03-2024 a las 16:10:06. Razón: Añadir TAGs
Responder Con Cita
  #2  
Antiguo 04-03-2024
chenech chenech is offline
Miembro
 
Registrado: dic 2013
Posts: 72
Poder: 11
chenech Va por buen camino
A mi me funciona perfecto así y probé con TNumericField y también:

((TFloatField *)(FDMemTable1->FieldByName("TOTAL")))->DisplayFormat = "$ ###,##0.00";

o así:

((TNumericField *)(FDMemTable1->FieldByName("TOTAL")))->DisplayFormat = "$ ###,##0.00";
Responder Con Cita
  #3  
Antiguo 04-03-2024
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por michal Ver Mensaje
((TNumericField*)ADOQuery1->FieldByName("contratos.monto_cto"))->DisplayFormat = "$ #,##.00";

Seguramente quitando el "contratos."
Código Delphi [-]
((TNumericField*)ADOQuery1->FieldByName("monto_cto"))->DisplayFormat = "$ #,##.00";
Responder Con Cita
  #4  
Antiguo 04-03-2024
michal michal is offline
Miembro
 
Registrado: feb 2015
Posts: 28
Poder: 0
michal Va por buen camino
No, no puedo quitar contratos porque es el nombre de una tabla; mi consulta es la siguiente:
Código SQL [-]
SELECT contratos.Id_cto,clientes.nombre_clte,contratos.fecha_cto,contratos.vigencia_cto,contratos.timeRest_  cto,contratos.monto_cto,
contratos.montoRest_cto,contratos.tipoMoneda_cto,contratos.supl_cto FROM contratos, clientes WHERE clientes.Id_clte=contratos.Id_clte AND contratos.timeRest_cto <= 0
Y como dije anteriormente intenté usar ALIAS es la consulta como contratos.timeRest_cto AS timeRest_cto, y no funciona, dce que no lo encuentra. Y necesito hacerlo por código, ya que son muchas consultas y no quiero usar tantos TADOQuerys.

Si sustituyo todos los campos de mi consulta por un "*" sí me funciona, pero aparecen otros campos en el DBGrid que no me interesa mostrar, por eso uso ese tipo de consulta.

Última edición por Casimiro Notevi fecha: 04-03-2024 a las 20:32:58.
Responder Con Cita
  #5  
Antiguo 04-03-2024
chenech chenech is offline
Miembro
 
Registrado: dic 2013
Posts: 72
Poder: 11
chenech Va por buen camino
Si, como comentó Casimiro, que yo no lo había visto en mi respuesta anterior, es el alias, el resultado del nombre de la consulta de un SQL es siempre sin el alias, prueba que no te cuesta nada y verás que funciona.
En el ejemplo que yo te puse la sentencia es VENTAS.TOTAL
Responder Con Cita
  #6  
Antiguo 04-03-2024
michal michal is offline
Miembro
 
Registrado: feb 2015
Posts: 28
Poder: 0
michal Va por buen camino
Cita:
Empezado por chenech Ver Mensaje
A mi me funciona perfecto así y probé con TNumericField y también:

((TFloatField *)(FDMemTable1->FieldByName("TOTAL")))->DisplayFormat = "$ ###,##0.00";

o así:

((TNumericField *)(FDMemTable1->FieldByName("TOTAL")))->DisplayFormat = "$ ###,##0.00";

El problema es que no es un campo de una tabla, sinó una consulta que incluye a varias tablas, es por eso que el nombre del campo es contratos.monto_cto , y no monto_cto solamente. Entonces el problema es que si especifíco el nombre de la tabla junto con el nombre del campo, no me funciona. Solo funciona si quito el nombre de la tabla. Pero así no puede ser.
Responder Con Cita
  #7  
Antiguo 04-03-2024
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por michal Ver Mensaje
El problema es que no es un campo de una tabla, sinó una consulta que incluye a varias tablas, es por eso que el nombre del campo es contratos.monto_cto , y no monto_cto solamente. Entonces el problema es que si especifíco el nombre de la tabla junto con el nombre del campo, no me funciona. Solo funciona si quito el nombre de la tabla. Pero así no puede ser.
¿Por qué no puede ser?
Responder Con Cita
  #8  
Antiguo 04-03-2024
chenech chenech is offline
Miembro
 
Registrado: dic 2013
Posts: 72
Poder: 11
chenech Va por buen camino
Pon esto que te comentó Casimiro y cuentas como te fue, manteniendo el alias en la consulta SQL si quieres:
Código Delphi [-]
((TNumericField*)ADOQuery1->FieldByName("monto_cto"))->DisplayFormat = "$ #,##.00";

No es quitar el alias de la consulta SQL sino de la linea anterior.
Responder Con Cita
  #9  
Antiguo 04-03-2024
michal michal is offline
Miembro
 
Registrado: feb 2015
Posts: 28
Poder: 0
michal Va por buen camino
Tienen Razón, SÍ Funciona, es que yo estaba copiando y pegando y tenia un error en el componente TADOQuery, estaba usando el que no era.


También estaba ofuscado por la idea de que cómo el builder iba a saber el campo a cual tabla pertenecía, y es que esos campos, los monetarios, no se repiten en otras tablas.


Una vez más Gracias a Todos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta por Multiples campos steelha MySQL 2 26-02-2013 15:02:20
TClienDataSet Problemas con Campos Blob y Campos Calculados LEVV Conexión con bases de datos 2 11-05-2012 01:25:43
Consulta en campos Null| pmtzg Conexión con bases de datos 2 26-02-2008 01:38:51
Consulta en campos memo Ferran Tablas planas 8 03-02-2007 12:55:29
Campos de consulta con valores NAN ElDuc SQL 1 12-09-2005 10:28:59


La franja horaria es GMT +2. Ahora son las 16:25:47.


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