{
===============================================================================
  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: 01-10-2001
  Versión actual: 1.0.2
  Fecha versión actual: 12-05-2002
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
    07-04-2002    Cambio de todos los procedimientos en los que se utiliza
                  una transaccion nueva, por una unica transacción.

    12-05-2002    Adaptación al grid 'TdxDBGrid'.
===============================================================================
}

unit TablaProvincias;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBTables, DB, IBCustomDataSet, IBSQL, BaseDatos, IBDatabase, dxDBGrid,
  dbgrids;


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 Grid: TdxDBGrid);
  end;

var
  dmTablaProvincias : TdmTablaProvincias;

implementation

{$R *.DFM}
uses
  IBStoredProc, Mensajes, IB, Excepciones, dxDBCtrl;

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');
    Add('order by DESCRIPCION');
  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 Grid: TdxDBGrid);
var
  Columna : TdxDBTreeListColumn;
begin
  with Grid do begin
    DestroyColumns;
    {Columna DESCRIPCION}
    Columna := CreateColumn(TdxDBTreeListColumn);
    Columna.FieldName := 'DESCRIPCION';
    Columna.Caption := 'Nombre de la provincia';
  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.
