C/Visual C - Ayuda con DBGrid en Builder

 
Vista:

Ayuda con DBGrid en Builder

Publicado por sanfacio (3 intervenciones) el 29/04/2003 01:27:34
Hola... para aquellos que usen C++ Builder de Borland, quisiera que me orientaran ya que en un componente DBGrid, tengo 3 columnas con los siguientes campos: Cantidad, Descripcion e Importe, y cabe señalar que estan en una tabla de MySQL. Pues bien, el problema es que el campo Importe, es de tipo float, para representar una cantidad monetaria, pero cuando no tiene centavos, no me muestra el .00, es decir, en lugar de 90.00, solo me muestra la parte entera, o sea 90. Por otro lado, en la definicion de la tabla, tengo especificado para el campo Importe una precision de 2 decimales, y aun así no los toma. ¿Podrían por favor decirme que puedo hacer en ese caso? Estoy algo desesperado... y de antemano, muchas gracias de nueva cuenta.
Como nota final, utilizo el Builder 6.0 Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Formateo de campos float en DBGrid de C++ Builder

Publicado por Alejandro (1153 intervenciones) el 19/05/2025 22:22:11
Para asegurarte de que el campo `Importe` en tu componente `DBGrid` de C++ Builder muestre siempre dos decimales (por ejemplo, 90.00 en lugar de 90), puedes seguir estos pasos:

Paso 1: Configurar el formato del campo en el DBGrid



1. Propiedades del DBGrid: Selecciona tu `DBGrid` en el formulario y busca la propiedad `Columns`. Aquí puedes definir cómo se mostrarán las columnas.

2. Formato del campo: Para la columna que representa el campo `Importe`, asegúrate de establecer la propiedad `DisplayFormat`. Esto se puede hacer en el Inspector de Objetos:

- Selecciona la columna correspondiente al campo `Importe`.
- Busca la propiedad `DisplayFormat` y establece su valor a `0.00`. Esto indicará que deseas mostrar siempre dos decimales.

Paso 2: Formatear el campo en el código



Si la configuración anterior no funciona como esperabas, puedes formatear el campo manualmente en el evento `OnGetText` del campo correspondiente. Aquí tienes un ejemplo de cómo hacerlo:

1. Agregar el evento: En el `DBGrid`, selecciona la columna `Importe` y busca el evento `OnGetText`.

2. Implementar el evento: Implementa el evento para formatear el texto. Aquí tienes un ejemplo de código:

1
2
3
4
5
6
7
void __fastcall TForm1::DBGrid1Columns1GetText(TField *Sender, AnsiString &Text, bool DisplayText)
{
    if (Sender->FieldName == "Importe") {
        // Formatear el valor a dos decimales
        Text = FormatFloat("0.00", Sender->AsFloat);
    }
}

Paso 3: Verificar la definición de la tabla



Asegúrate de que la definición de tu tabla en MySQL esté correctamente configurada. El campo `Importe` debe ser de tipo `DECIMAL` o `FLOAT` con una precisión adecuada. Por ejemplo:

1
2
3
4
5
CREATE TABLE tu_tabla (
    Cantidad INT,
    Descripcion VARCHAR(255),
    Importe DECIMAL(10, 2) -- 10 dígitos en total, 2 después del punto decimal
);

Notas adicionales:



- Revisar la conexión a la base de datos: Asegúrate de que la conexión a la base de datos esté configurada correctamente y que los datos se estén recuperando como se espera.
- Pruebas: Realiza pruebas para asegurarte de que los cambios se reflejan correctamente en el `DBGrid`.

¡Buena suerte con tu proyecto, Sanfacio!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar