{
===============================================================================
  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: 08-03-2003
  Versión actual: 1.0.2
  Fecha versión actual: 11-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.

    11-05-2004    p274. Migración a FastReport.
===============================================================================
}
unit InformeListadoProveedores;

interface

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

type
  TdmInformeListadoProveedores = class(TdmInformeBase)
    TablaProveedores: TIBQuery;
    dsTablaProveedores: TfrDBDataSet;
  private
    FProveedorIni: Variant;
    FProveedorFin: Variant;
    procedure InformeGetParametersText(Memo : TStringList);
  protected
    procedure PrepararConsultas; override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property NombreIni : Variant read FProveedorIni write FProveedorIni;
    property NombreFin : Variant read FProveedorFin write FProveedorFin;
  end;

var
  dmInformeListadoProveedores: TdmInformeListadoProveedores;

implementation

{$R *.DFM}

{ TdmInformeListadoProveedores }

uses
Literales;

constructor TdmInformeListadoProveedores.Create(AOwner: TComponent);
begin
  inherited;
  FProveedorIni := NULL;
  FProveedorFin := NULL;
  FNombreInforme := 'ListadoProveedores.frf';
  OnGetParametersText := InformeGetParametersText;
end;

procedure TdmInformeListadoProveedores.InformeGetParametersText(
  Memo: TStringList);
begin
  with Memo do
  begin
    if (not VarIsNull(FProveedorIni)) and (not VarIsNull(FProveedorFin)) then
      Add(SysUtils.Format(msgInfIntervaloPro, [FProveedorIni, FProveedorFin]))
    else
      Add(msgInfIntervaloTodosPro)
  end;
end;

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

end.
