Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

forzar a guardar dos decimales

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: forzar a guardar dos decimales Responder citando

Tengo un campo definido como:
Código:
DECIMAL(10,2)

Tambien he probado con:
Código:
NUMERIC(10,2)

lo utilizo para guardar el precio de una factura, el caso es que cuando guardo por ejemplo 1200,50 euros quiero que me guarde exactamente esa cantidad y no 1200,5.
Tambien quiero que cuando se introduzca 1200 guarde 1200,00 y no 1200, es decir, forzarle a guardar siempre 2 decimales.

Lo necesito porque luego cuando imprimo una factura unas cifras me aparecen con ningun decimal, otras con dos decimales... y queda feo porque no queda alineado.

Alguna sugerencia?
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola,

utiliza FormatFloat. Mira en la ayuda de builder, es muy sencillo, y puedes formatear el numero decimal como quieras.
un ejemplo..

double x=23.5;
AnsiString cad=FormatFloat("0.00",x)

Cad tendria 23.50 ya que has obligado a que tenga dos decimales.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Eso ya lo he utilizado para mostrar ese campo en un TEdit.
El problema es que tengo un QuickReport que tiene campos tipo TQRDBText y me leen información directamente de la base de datos.
Es decir le tengo asignado:
Código:
DataSet=<UNA_TABLA>
DataField=<CAMPO_DE_ESA_TABLA_DONDE_GUARDO_EL_PRECIO>

Como en la base de datos tiene guardado 23,5 en vez de 23,50, en mi QuickReport me aparece 23,5 y no se cómo puedo hacer para que me aparezca con dos decimales siempre.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Si has creado campos, puedes configurar su propiedad DisplayFormat a 0.00 para especificar los decimales, esto se reflejará en cualquier componente que use este campo.

Si solo lo deseas especificar en el QuickReport, y como indicas haces uso del componente TQRDBText, en este configura su propiedad Mask a 0.00, si lo que deseas es cambiar radicalmente lo que se va ha mostrar, mejor trabajas con el evento OnPrint del TQRDBText y redefines lo que se va ha mostrar. Por Ejemplo:
Código:
 void __fastcall TAT_PadronPrediosExpPredios::qrdbEtapaPrint(TObject *sender,
      AnsiString &Value)
{
  if ( Value == "0" )//Si se iba a imprimir "0"
      Value = "-";//Hago que Imprima "-"
  if ( Value == "" )//y si estaba vacío
      Value = "Vacío";// escribo la palabra "Vacío"
}
//No importa a que tipo de campo este relacionado el TQRDBText siempre se pasará el valor del campo como una cadena en Value

Te recomiendo revisar todas las propiedades y eventos que utilizan las tabla/querys, y los objetos campos. Muchas validaciones y/o formatos simplemente se dan configurando la respectiva propiedad o evento, lo cual va a hacer tu desarrollo más fácil.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.