PDA

Ver la Versión Completa : qreport QrDbText propiedad Mask


shoulder
16-04-2013, 17:29:55
Hola, estoy intentando definir la propiedad Mask como .0,00

Me solicitan que en el resporte el formato sea 1.235.456,56 y me sale en el formato ,0.00

Gracias

Al González
16-04-2013, 18:01:26
En el panel de control de Windows puedes ajustar la configuración regional. O ¿será que estás en un país que usa el punto para decimales y esta aplicación está destinada a un país que usa la coma para decimales?

Saludos y no temas hacer consultas de más de 140 caracteres. ;)

shoulder
16-04-2013, 18:30:02
Hola, gracias por responder, la configuracion de windows la tengo cambiada punto para separar miles y coma para decimales, cambie la mascara en el qreport el texto, pero no pasa nada.Ya no se que cambiar.

ecfisa
16-04-2013, 19:56:58
Hola shoulder.
... la configuracion de windows la tengo cambiada punto para separar miles y coma para decimales ...
Entonces de este modo tendría que darle el formato que buscas.

QRDBText1.Mask := '0.00,';


Saludos.

Al González
16-04-2013, 21:26:07
Es como dice ecfisa, shoulder. O más comúnmente: ,0.00

En los formatos numéricos de Delphi, la coma significa que debe usar el "separador de miles" (sea éste coma, punto u otro carácter). Y el punto significa que debe usar el "separador decimal" (sea éste punto, coma u otro carácter). El primero se determina por la variable global ThousandSeparator y el segundo se determina por variable global DecimalSeparator.

Esas dos variables se inicializan según la configuración regional de sistema operativo. Pero, para no tener que cambiar esta configuración (ya que se vería afectado el resto de las aplicaciones instaladas), tú mismo puedes modificar esas variables dentro de tu programa Delphi cuando éste comience, asignándole '.' a ThousandSeparator y ',' a DecimalSeparator (conservando el formato ",0.00").

Si no se entiende, no sientas pena de preguntar. El gobierno nos paga muy bien por ayudar en los foros. ;)

Casimiro Notevi
16-04-2013, 21:57:52
El gobierno nos paga muy bien por ayudar en los foros. ;)
Yo vivo de esto, contesto cuatro preguntas y ¡¡¡a cobrar!!! :cool:

shoulder
16-04-2013, 22:08:03
Hola gracias como me explican ustedes funciona, pero aqui viene el problema...quieren que liste con 4 decimales.. por eso uso en el select la instruccion

format((if (b.precios is null,sum(a.stock_actual * a.valor), (sum(a.stock_actual * a.valor) + (b.precios)))) + if (sinoc.preciosinoc is null,0, sinoc.preciosinoc),4)

y en el qreport no me hace caso a la mascara que defina o a los valores por defectos que inicialice me escribe siempre

1,000,000.0000


(sino uso esa instruccion me vienen dos decimales)

Al González
16-04-2013, 22:34:22
¿Ya intentaste poniendo el formato ,0.0000?

shoulder
17-04-2013, 01:51:41
Hola, si intente, pero al poner format dentro del select y como el Mysql tiene por defecto el formato , (miles) y . decimales, no me hace caso a nada la mascara. No se que alterativa inventar.

ecfisa
17-04-2013, 02:45:51
Hola, si intente, pero al poner format dentro del select y como el Mysql tiene por defecto el formato , (miles) y . decimales, no me hace caso a nada la mascara. No se que alterativa inventar.
Hola shoulder.

Tratándose de un TQRDBText, se hace difícil unificar ejemplos y resultados ya que dependen de los datos. Pero creo un modo simple de hacerlo es usando el viejo DBDEMOS que viene con Delphi.

En un form pone: Un TQuickRep, un TQRBand (rbTitle), un TQRDBText, un TTable, un TDataSource y reproducí este ejemplo:

procedure TForm1.FormCreate(Sender: TObject);
begin
DecimalSeparator := ',';
ThousandSeparator := '.';
Table1.DatabaseName := 'DBDEMOS';
Table1.TableName := 'orders.db';
QRDBText1.Mask := ',0.00';
QRDBText1.DataSet := Table1;
QRDBText1.DataField := 'AmountPaid';
Table1.Open;
QuickRep1.Preview
end;

Podras notar que si intercambias los valores de las variables DecimalSeparator y ThousandSeparator donde había puntos habrá comas y viceversa.

Saludos.

shoulder
17-04-2013, 16:02:49
Hola, lo solucione asi, dentro del mysql puse esta sentencia.

SELECT REPLACE(REPLACE(REPLACE(FORMAT("1111.00", 2), ".", "@"), ",", "."), "@", ",")

Theluar
07-05-2013, 19:48:21
tambien puedes definir el formato en el datafield ligado al DBText1 en la propiedad DisplayFormat := ###,###.00 .

Saludos