Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Generar XML y validar si el dato es numerico (https://www.clubdelphi.com/foros/showthread.php?t=88541)

alejozd 19-06-2015 23:02:54

Generar XML y validar si el dato es numerico
 
Hola, trabajo con Delphi 2010, estoy generando los datos de una factura en XML, algunos de los nodos son texto y otros son numeros.
Cuando hago el SQL para traer la informacion de la factura, en algunos casos tiene descuento y en otros no.
Cuando no tiene descuento yo deberia poner como texto del atributo lo siguiente
Código Delphi [-]
e01Node.Attributes['DescuentoTotal']  := '0.00'
pero si retorna valor entonces lleva el resultado del SQL
Código Delphi [-]
e01Node.Attributes['DescuentoTotal']  := FormatCurr('############.##' ,QryFAMAVR_DESCUENTO.AsCurrency);
e01Node es el nodo, lo que no quiero es hacer la validacion si el retorno de datos es 0 para ponerle manualmente el '0.00'.
Lei sobre el componente IXMLnode y al parecer uno puede validar directamente si el campo va a quedar vacio osea '' que el coloque algo por defecto.

Antes estaba solo la linea:
Código Delphi [-]
e01Node.Attributes['DescuentoTotal']  := FormatCurr('############.##' ,QryFAMAVR_DESCUENTO.AsCurrency);
y cuando trae valor esta bien, pero si el valor retornado es cero al generar el XML me deja vacio el nodo


Gracias por su tiempo.

ecfisa 19-06-2015 23:27:16

Hola alejozd.

Intenta con este formato:
Código Delphi [-]
  e01Node.Attributes['DescuentoTotal']  := FormatCurr('###########0.##', QryFAMAVR_DESCUENTO.AsCurrency);

Saludos :)

alejozd 20-06-2015 00:16:49

Gracias por la pronta respuesta ecfisa,
colocando el 0 en el formatCurr me retorna solo el 0 , y necesito el 0.00 , la cuestión es cuando si retorna un valor y dejo el siguiente código:

e01Node.Attributes['DescuentoTotal'] := FormatCurr('###########0.00' ,QryFAMAVR_DESCUENTO.AsCurrency);

no me tomaría los decimales sino que colocaría el valor.00 es decir, retorna 578.12 y con este formatCurr me quedaría 578.00

¿Alguna otra idea?

Gracias!!!

ecfisa 20-06-2015 00:57:52

Hola alejozd.

Con la máscara: '###########0.##',
Código:

    0 devuelve: 0
578.12 devuelve: 578.12

Con la máscara: '###########0.00',
Código:

    0 devuelve:  0.00
578.12 devuelve: 578.12

Pero de ningún modo, alguna de las máscaras anteriores devolverá 578 si el valor pasado es 578.12

Aqui tenes explicado el efecto del uso de los diferentes caracteres de control: FormatCurr

Saludos :)

nlsgarcia 20-06-2015 00:59:44

alejozd,

Cita:

Empezado por alejozd
...'###########0.##' en el FormatCurr me retorna solo el 0 y necesito el 0.00...'###########0.00' no me tomaría los decimales...

:rolleyes:

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
   N1, N2, N3 : Currency;
   S  : String;
   MsgUsr : String;

begin

   N1 := 578.12;
   N2 := 578.00;
   N3 := 0;

   S := FormatCurr('###########0.00', N1);
   MsgUsr := Format('N1 = %s',[S]);
   MessageDlg(MsgUsr,mtInformation,[mbOK],0);

   S := FormatCurr('###########0.00', N2);
   MsgUsr := Format('N2 = %s',[S]);
   MessageDlg(MsgUsr,mtInformation,[mbOK],0);

   S := FormatCurr('###########0.00', N3);
   MsgUsr := Format('N3 = %s',[S]);
   MessageDlg(MsgUsr,mtInformation,[mbOK],0);

end;

end.
El código anterior en Delphi 2010 sobre Windows 7 Professional x32, Muestra un ejemplo de la función FormatCurr en el cual se mantiene el formato definido en la función, como se muestra en la siguiente imagen:



Revisa esta información:
Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 05:33:14.

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