Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   qreport QrDbText propiedad Mask (https://www.clubdelphi.com/foros/showthread.php?t=82811)

shoulder 16-04-2013 17:29:55

qreport QrDbText propiedad Mask
 
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.
Cita:

Empezado por shoulder (Mensaje 458693)
... 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.
Código Delphi [-]
  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

Cita:

Empezado por Al González (Mensaje 458705)
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

Cita:

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

Cita:

Empezado por shoulder (Mensaje 458726)
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:
Código Delphi [-]
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.

Cita:

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


La franja horaria es GMT +2. Ahora son las 11:20:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi