{
===============================================================================
  Copyright (©) 2002. 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: 03-11-2002
  Versión actual: 1.0.0
  Fecha versión actual: 03-11-2002
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
===============================================================================
}

unit TablaProvincias;

interface

uses
  //Generales
  SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB,
  //Particulares
  IBCustomDataSet, Variants,

  //Aplicacion
  Framework, StrFunc, Entidades, Constantes, BaseDatos;


type
  TdmTablaProvincias = class(TDataModule)
  private
    procedure IniciarSQL;
  public
    TablaProvincias : TIBDataSet;
    sqlGrid : TStrings;
    function darCodigoProvincia(Descripcion : String) : Variant;
    function darNombreProvincia (Codigo : Variant) : string;
    constructor Create (AOwner : TComponent); override;
    destructor Destroy; override;
    procedure InicializarGridProvincias(var vGrid: TcxGridDBTableView);
  end;

var
  dmTablaProvincias : TdmTablaProvincias;

implementation

{$R *.DFM}

constructor TdmTablaProvincias.Create (AOwner : TComponent);
begin
  inherited;
  sqlGrid := TStringList.Create;
  IniciarSQL;
end;

destructor TdmTablaProvincias.Destroy;
begin
  sqlGrid.Free;
  inherited;
end;

procedure TdmTablaProvincias.IniciarSQL;
begin
  with sqlGrid do
  begin
    Add('select DESCRIPCION, CODIGO');
    Add('from PROVINCIAS');
  end;
end;

function TdmTablaProvincias.darCodigoProvincia(Descripcion: String): Variant;
var
  oSQL : TIBSQL;
  Codigo : String;
begin
  oSQL := TIBSQL.Create(Self);
  Codigo := '';

  with oSQL do
  begin
    Database := dmBaseDatos.BD;
    Transaction := dmBaseDatos.Transaccion;
    SQL.Add('select CODIGO from PROVINCIAS ');
    SQL.Add('where DESCRIPCION = :DESCRIPCION');

  try
    ParamByName('DESCRIPCION').AsString := AnsiUpperCase(Descripcion);
    Prepare;
    ExecQuery;
    Codigo := Fields[0].AsString;
    if (Codigo = '') then
      Result := NULL
    else
      Result := Codigo;
  finally
    Close;
    Transaction := NIL;
    Free;
  end;
  end;
end;

procedure TdmTablaProvincias.InicializarGridProvincias(var vGrid: TcxGridDBTableView);
var
  Columna : TcxGridDBColumn;
begin
  with vGrid do begin
    {Columna DESCRIPCION}
    Columna := CreateColumn;
    Columna.DataBinding.FieldName := 'DESCRIPCION';
    Columna.Caption := 'Nombre de la provincia';
    Columna.Options.Filtering := False;
    Columna.SortOrder := soAscending;
  end;
end;

function TdmTablaProvincias.darNombreProvincia(Codigo: Variant): string;
var
  oSQL : TIBSQL;
  Descripcion : String;
begin
  Descripcion := '';
  oSQL := TIBSQL.Create(Self);

  with oSQL do
  begin
    Database := dmBaseDatos.BD;
    Transaction := dmBaseDatos.Transaccion;
    SQL.Add('select DESCRIPCION');
    SQL.Add('from PROVINCIAS');
    SQL.Add('where CODIGO = :CODIGO');

  try
    ParamByName('CODIGO').AsString := Codigo;
    Prepare;
    ExecQuery;
    Descripcion := Fields[0].AsString;
    Result := Descripcion;
  except
    Close;
    Transaction := NIL;
    Free;
  end;
  end;
end;

end.
