PDA

Ver la Versión Completa : Configuración regional - Varias opciones


Alexander
05-07-2005, 23:31:31
He revisado casi todos los hilos sobre este tema pero no obtengo un solución.
A ver si estoy en lo correcto:
Cuando coloco las siguientes lineas de código en la creación de mi Main Form, funciona el ingreso de datos:

ThousandSeparator := ',';
DecimalSeparator := '.';
Application.UpDateFormatSettings := False;

Por ese lado ya está solucionado.
También encontre hacer una Unit ej. unPuntoComa

unit unPuntoComa;
interface
Uses SysUtils;
implementation
initialization
ThousandSeparator := ',';
DecimalSeparator := '.';
end.

y colocarla donde se necesite. Como les comento para el ingreso de datos funciona perfecto.
También encontré, ubicar el siguiente código en la inicialización del DataModule, pero de la misma forma solo me funciona para el ingreso de datos.

initialization
ThousandSeparator := ',';
DecimalSeparator := '.';

Ahora, cuando estoy mostrando los datos en una grilla, (QuantumExpressGrid) la muestra convirtiendo el dato String en Float, para darle formato

FormatFloat('#,###.#0 ',StrToFloat(AViewInfo.DisplayValue))

Aqui es donde no he podido hacer que el dato que viene lo convierta a float.
Ejemplo: Guardo el dato 120,000.15 y lo acepta
En la base de datos esta como 120.000,15
Al leerlo, el string es 120.000,15 y no lo permite convertir a 120,100.15 para mostrarlo.
Cual puede ser una solucion definitiva?. He visto que muchas personas tienen el mismo problema.
Alguien tienen una solución.
Por adelantado, muchas gracias por sus comentarios.

Lepe
06-07-2005, 10:44:32
initialization
ThousandSeparator := ',';
DecimalSeparator := '.';


Esto es lo único que tienes que hacer. y ponerlo en la primera ventana o Datamodule que se crea en la aplicación.


Ahora, cuando estoy mostrando los datos en una grilla, (QuantumExpressGrid) la muestra convirtiendo el dato String en Float, para darle formato

FormatFloat('#,###.#0 ',StrToFloat(AViewInfo.DisplayValue))

Aqui es donde no he podido hacer que el dato que viene lo convierta a float.
Ejemplo: Guardo el dato 120,000.15 y lo acepta
En la base de datos esta como 120.000,15
Al leerlo, el string es 120.000,15 y no lo permite convertir a 120,100.15 para mostrarlo.
Cual puede ser una solucion definitiva?. He visto que muchas personas tienen el mismo problema.
Alguien tienen una solución.
Por adelantado, muchas gracias por sus comentarios.

Lo que no comprendo es esto:

En la base de datos esta como 120.000,15


Entonces el campo en la base de datos es de tipo String, no de tipo Float :confused:
Suponiendo que AViewInfo sea el campo en cuestion, no sería más bien AViewInfo.Value??, al coger el valor, no pilla los separadores de millar, y evitas el problema.

Yo el campo lo defino de tipo Float o Currency en la base de datos, y
en la columna del DBGrid, asigno sus propiedades:

DisplayFormat: = ',#0.00';
EditFormat := '#0.00'

Observa que al editar, elimino el separador de miles.

Un saludo

Alexander
06-07-2005, 13:48:42
Tienes toda la razón. Me funciona perfecto.
Coloqué en el DataModule el código

initialization
ThousandSeparator := ',';
DecimalSeparator := '.';

Y cambié la siguiente línea

FormatFloat('#,###.#0 ',StrToFloat(AViewInfo.DisplayValue))

por esta línea de código

FormatFloat('#,###.#0 ',AViewInfo.Value)

Estaba tratanto de convertir el String, no el valor.
Y ya me funciona muy bien.:D Haré el cambio en todo el programa.

Muchas gracias por tomarte el tiempo de ayudarme. SUERTE

Alexander