![]() |
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:
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 |
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"; |
Cita:
Seguramente quitando el "contratos."
|
No, no puedo quitar contratos porque es el nombre de una tabla; mi consulta es la siguiente:
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. |
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 |
Cita:
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. |
Cita:
|
Pon esto que te comentó Casimiro y cuentas como te fue, manteniendo el alias en la consulta SQL si quieres:
No es quitar el alias de la consulta SQL sino de la linea anterior. |
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 |
La franja horaria es GMT +2. Ahora son las 04:59:20. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi