{
===============================================================================
  Copyright (©) 2001. Rodax Software.
===============================================================================
  Los contenidos de este fichero son propiedad de Rodax Software titular del
  copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
  en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
  acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
  bajo el que se suministra.
  -----------------------------------------------------------------------------
  Web:  www.rodax-software.com
===============================================================================
  Fecha primera versión: 12-10-2002
  Versión actual: 1.0.2
  Fecha versión actual: 01-05-2004
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------

    19-11-2003    p268. Cambiar sql para validar que el intervalo se realice por
                  nombre alfabetico en lugar por codigo.

    01-05-2004    p274. Migración a FastReport.
===============================================================================
}

unit InformeListadoClientes;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  InformeBase, FR_IBXDB, FR_Shape, FR_Class, FR_DSet, FR_DBSet, Db,
  IBCustomDataSet, IBQuery;

type
  TdmInformeListadoClientes = class(TdmInformeBase)
    TablaClientes: TIBQuery;
    dsTablaClientes: TfrDBDataSet;
  private
    FClienteIni: Variant;
    FClienteFin: Variant;
    procedure InformeGetParametersText(Memo : TStringList);
  protected
    procedure PrepararConsultas; override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property NombreIni : Variant read FClienteIni write FClienteIni;
    property NombreFin : Variant read FClienteFin write FClienteFin;
  end;

var
  dmInformeListadoClientes: TdmInformeListadoClientes;

implementation

{$R *.DFM}

{ TdmInformeListadoClientes }
uses
Literales;

constructor TdmInformeListadoClientes.Create(AOwner: TComponent);
begin
  inherited;
  FClienteIni := NULL;
  FClienteFin := NULL;
  FNombreInforme := 'ListadoClientes.frf';
  OnGetParametersText := InformeGetParametersText;
end;

procedure TdmInformeListadoClientes.InformeGetParametersText(
  Memo: TStringList);
begin
  with Memo do
  begin
    if (not VarIsNull(FClienteIni)) and (not VarIsNull(FClienteFin)) then
      Add(SysUtils.Format(msgInfIntervaloCli, [FClienteIni, FClienteFin]))
    else
      Add(msgInfIntervaloTodosCli)
  end;
end;

procedure TdmInformeListadoClientes.PrepararConsultas;
begin
  with TablaClientes do
  begin
    Database := FBaseDatos;
    Transaction := FTransaccion;
    SQL.Clear;
    SQL.Add('select CODIGO, NIFCIF, NOMBRE, TELEFONO1, FAX, CORREO');
    SQL.Add('from CLIENTES ');
    if (not VarIsNull(FClienteIni)) and (not VarIsNull(FClienteFin)) then
    begin
      SQL.Add('where upper(NOMBRE) between upper(:NOMBREINI) and upper(:NOMBREFIN)');
      ParamByName('NOMBREINI').AsString := FClienteIni;
      ParamByName('NOMBREFIN').AsString := FClienteFin;
    end;
    SQL.Add('order by NOMBRE, CODIGO');
    Prepare;
  end;
end;

end.
