Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2009
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Formato numero

Saludos compañeros!!

Tengo un detalle a la hora de mostrar los campos en pantalla, trabajo con Tquery y como base de datos MySQL, necesito que los campos mostrados en pantalla se muestren como tipo moneda (Ej. 1,000.00), he conseguido mostrar los datos con los decimales con la funcion VAR:=format('%0.2f', [VAR1]), pero con esto solo consigo formatear a 2 decimales (1000.00), he provado con la funcion n VAR:=format('%0.2fn, [VAR1]), y me da los datos formateados con coma (1,000.00), el problema aqui es cuando tomo el dato para realizar una operacion ya que me provoca un error de flotante no valido,
Que puedo hacer para que solo muestre los datos formateados en pantalla y no me de error al realizar mas operaciones.

Los datos los debo formatear en Dbgrid, dbedit y edit, ¿Alguien tendra una sugerencia?

Gracias de antemano!!
Responder Con Cita
  #2  
Antiguo 20-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola odrack,
¿Tienes los campos de forma persistentes?

Si es así selecciona el campo y pon la propiedad currency en true. De este modo fuerzas a que el campo se lo trate como moneda.

Además, deberías hacer uso de la propiedad DisplayFormat y allí indicar el formato de visualización. Revisa la ayuda sobre esta propiedad.
Esta propiedad sólo es a efectos de visualización, internamente el campo seguirá con el valor de modo que no se ve alterado el valor original. Por ejemplo se puede tener guardado un entero (digamos que es 20) y hacer uso de esta propiedad para hacer que se muestre así: [20].

Si no tienes los campos persistentes, y/o la consulta se realiza en tiempo de ejecución, puedes cambiar estás propiedades asignandolo en tiempo de ejecución.

Algo como:
Código Delphi [-]
TFloatField(MiQuer1.FieldByName(NombreCampo)).Propiedad := ....

Esto debes hacerlo una vez que abres la consulta.

Si no se me entiende te agradecería que lo digas y vemos el modo de ayudarte.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 20-03-2009
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Gracias Delphuis!!

Los campos si los tengo de formapersistente, he buscado la propiedad currency pero no me aparece, asi como tampoco tengo la opcion de displayformat, anteriormente habia leido sobre esto pero no conseguinada, agrege los campos en el query busque la propiedad displayformat y no me ha aparecido.

La version que utilizo para programar es codgear delphi 2007, influye algo??

saludos
Responder Con Cita
  #4  
Antiguo 20-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por odrack Ver Mensaje
Gracias Delphuis!!

Los campos si los tengo de formapersistente, he buscado la propiedad currency pero no me aparece, asi como tampoco tengo la opcion de displayformat, anteriormente habia leido sobre esto pero no conseguinada, agrege los campos en el query busque la propiedad displayformat y no me ha aparecido.

La version que utilizo para programar es codgear delphi 2007, influye algo??

saludos
Voy a hacer una pregunta tonta pero me parece que es necesaria... ¿Los campos son enteros, o flotantes? Es decir son campos que descienden de TIntegerField o TFloatField?

No creo que tenga que ver el hecho de que sea D2007. Las propiedades deberían estar...

Si tus campos son textos (Char(), Varchar() en tu base de datos) es de esperar que no estén. Pero si son campos integer, numeric, decimal, etc debería crearte los campos persistentes adecuados y éstos tienen estas propiedades.

Sería algo extraño...

Si nos puedes comentar más al respecto tal vez podríamos ver por donde está el problema.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 20-03-2009
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Saludos!!

Creo que has respondido mi pregunta, la mayor parte de los campos en la base de datos los tengo en Char incluyendo los campos de cantidades, al llamar los campos y al hacer operaciones los convierto en datos de tipo floatante y regreso el resultado a string nuevamente.

Habra alguna solución para mostrar datos en pantalla de tipo numerico con comas y cecimales sin que me afecte la operacion??

Gracias Delphius!!
Responder Con Cita
  #6  
Antiguo 20-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por odrack Ver Mensaje
Saludos!!

Creo que has respondido mi pregunta, la mayor parte de los campos en la base de datos los tengo en Char incluyendo los campos de cantidades, al llamar los campos y al hacer operaciones los convierto en datos de tipo floatante y regreso el resultado a string nuevamente.

Habra alguna solución para mostrar datos en pantalla de tipo numerico con comas y cecimales sin que me afecte la operacion??

Gracias Delphius!!
Bueno, lo ideal y lógico sería que cambiases el tipo de dato en tu base de datos.
Ya que esto te evita estar haciendo esas innecesarias conversiones que lo único que hacen es complicar la lógica de tu aplicativo.

Ahora bien, hacer esto implica eliminar los campos persistentes y volver a crearlos. Y tal vez algunas que otras modificaciones en tu código.

Si por alguna cuestión no puedes cambiar el tipo, lo que puedes hacer es emplear los eventos onGetText y OnSetText de tus campos.

Este evento se puede aprovechar para cambiar el texto a mostrar y a guardar. Si te fijas ambos eventos tienen un parámetro Text. Es éste Text el que se debe y puede aprovechar para alterar el texto a mostrar y/o a guardar:

Código Delphi [-]
procedure TForm1.IBTable1MONEDAGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin

end;

procedure TForm1.IBTable1MONEDASetText(Sender: TField; const Text: String);
begin

end;

En mi ejemplo uso un IBTable, y un campo llamado MONEDAS.


Revisa la ayuda para más información.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 20-03-2009
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Nuevamente gracias delphius!!

Solo tengo una duda, los datos de ongettext y onsettext tambien me sirven para un TQuery??, ya que no he logrado ver esas propiedades en los eventos

Saludos!!
Responder Con Cita
  #8  
Antiguo 20-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por odrack Ver Mensaje
Nuevamente gracias delphius!!

Solo tengo una duda, los datos de ongettext y onsettext tambien me sirven para un TQuery??, ya que no he logrado ver esas propiedades en los eventos

Saludos!!
A ver si nos entendemos,

OnGetText y OnSetText son dos eventos disponibles para los objetos TField y descendientes de éste, es decir que se aplican a los campos. Es independiente del dataset que se emplee.

¿Que propiedades?
Selecciona el campo persistente, ve a la solapa eventos... allí está el evento. Ya, lo que hagas allí dentro es otra cosa...

Por favor, se más detallista de como estás haciendo esto. Cuanto más nos puedas explicar y comentar de los pasos que estás haciendo más fácil será ayudarte.
No estoy a tu lado, no puedo ver donde tienes el problema.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 20-03-2009
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
No me explique bien,

Lo que trato de decir es lo siguiente, tengo una forma que contiene un button, dbgrid, dbedit, Tquery y un Datasource.

Con el boton hago la consulta de mi base de datos

Query1.close;
query1....
....

Con esto obtengo los datos en el dbgrid y en dbedit.text

Los eventos ongettext y onsettext los he buscado en Tquery, Dbgrid y en los dbedit, pero no los veo para poder crear el procedimiento que mencionas

Código Delphi [-]
procedure TForm1.IBTable1MONEDAGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin

end;

Mi pregunta era que si en los eventos de Tquery o dbgrid se encontraban OnGetText y OnSetText.

Espero haberme explicado, por que creo que ya me confundi un poco!
Responder Con Cita
  #10  
Antiguo 20-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
¡Y yo ya no se como decirte que esos eventos no pertenecen al dataset (en tu caso TQuery) sino a los campos persistentes!

Si buscas en los foros sobre OnGetText y OnSetText vas a encontrar algunos ejemplos.
Por otro lado, si no lo hiciste aún, recomiendo la lectura del libro La Cara Oculta de Delphi 4. No tiene desperdicio.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
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
Poner el numero de pagina con formato 2/2 en quick report raco Impresión 6 04-06-2011 01:20:22
Formato de numero en QReport DarkSide Impresión 6 01-09-2006 22:42:14
dar formato un numero sin que se redonde.... uper Varios 2 25-07-2005 18:06:22
formato de un número aip Conexión con bases de datos 2 20-08-2004 20:19:51
Cual es la mejor manera para darle formato a un numero ctronx Varios 4 21-07-2004 19:27:33


La franja horaria es GMT +2. Ahora son las 00:40:21.


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