This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/BaseDatos/TablaPropiedades.pas
2007-06-26 08:08:27 +00:00

371 lines
9.3 KiB
ObjectPascal

{
===============================================================================
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: 07-12-2002
Versión actual: 1.0.1
Fecha versión actual: 18-06-2003
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
18-06-2003 La descripción de la propiedad no se guarda en la tabla en
mayúsculas si no tal y como lo ha escrito el usuario.
===============================================================================
}
unit TablaPropiedades;
interface
uses
//Generales
SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB,
//Particulares
//Aplicacion
Framework, StrFunc, Entidades, Constantes, BaseDatos;
type
TDatosPropiedad = class(TObjeto)
protected
procedure AssignTo(Dest: TPersistent); override;
public
NumPropiedad : Integer;
Seccion : String;
CodigoPropiedad : Integer;
Valor : String;
end;
TListaPropiedades = class(TListaObjetos)
private
function GetPropiedad(Index: Integer): TDatosPropiedad;
public
property Items[Index: Integer] : TDatosPropiedad read GetPropiedad;
end;
TdmTablaPropiedades = class(TDataModule)
private
procedure IniciarSQL;
public
sqlInsertar : TStrings;
sqlModificar : TStrings;
sqlConsultar : TStrings;
sqlEliminar : TStrings;
sqlGrid : TStrings;
sqlListaPropiedades : TStrings;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
procedure InicializarGridPropiedades(var vGrid: TcxGridDBTableView);
function darPropiedades: TStrings; overload;
function darContadorPropiedad: Integer;
procedure darPropiedades(var PropiedadCodigo, CodigoPropiedad: TStringList); overload;
function darPropiedadRelacionada(Codigo : String): Integer;
procedure asignarNullCopiaPropiedad(Codigo : Integer);
procedure asignarCopiaPropiedad(Codigo: Integer; Copia : Integer);
end;
var
dmTablaPropiedades : TdmTablaPropiedades;
implementation
{$R *.DFM}
constructor TdmTablaPropiedades.Create (AOwner : TComponent);
begin
inherited;
sqlGrid := TStringList.Create;
sqlInsertar := TStringList.Create;
sqlModificar := TStringList.Create;
sqlConsultar := TStringList.Create;
sqlEliminar := TStringList.Create;
sqlListaPropiedades := TStringList.Create;
IniciarSQL;
end;
destructor TdmTablaPropiedades.Destroy;
begin
sqlGrid.Free;
sqlInsertar.Free;
sqlModificar.Free;
sqlConsultar.Free;
sqlEliminar.Free;
sqlListaPropiedades.Free;
inherited;
end;
procedure TdmTablaPropiedades.IniciarSQL;
begin
with sqlInsertar do
begin
Add('insert into PROPIEDADES (CODIGO, DESCRIPCION, COPIA) ');
Add('values (:CODIGO, :DESCRIPCION, :COPIA)');
end;
with sqlModificar do
begin
Add('update PROPIEDADES set ');
Add('DESCRIPCION = :DESCRIPCION, ');
Add('COPIA = :COPIA ');
Add('where CODIGO = :CODIGO');
end;
with sqlEliminar do
begin
Add('delete from PROPIEDADES ');
Add('where CODIGO = :CODIGO');
end;
with sqlConsultar do
begin
Add('select CODIGO, DESCRIPCION, COPIA ');
Add('from PROPIEDADES ');
end;
with sqlListaPropiedades do
begin
Add('select * from PROPIEDADES ');
Add('order by DESCRIPCION ');
end;
end;
procedure TdmTablaPropiedades.InicializarGridPropiedades(var vGrid: TcxGridDBTableView);
var
Columna : TcxGridDBColumn;
begin
with vGrid do begin
OptionsView.Footer := True;
{Columna CODIGO}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'CODIGO';
Columna.Caption := 'Código de la propiedad';
Columna.Options.Filtering := False;
Columna.Visible := False;
{Columna DESCRIPCION}
Columna := CreateColumn;
Columna.DataBinding.FieldName := 'DESCRIPCION';
Columna.Caption := 'Lista de propiedades';
Columna.Options.Filtering := False;
Columna.SortOrder := soAscending;
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
try
try
BeginUpdate;
Column := Columna;
FieldName := Columna.DataBinding.FieldName;
Format := 'Total: 0 propiedades';
Kind := skCount;
finally
EndUpdate;
end;
except
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
end;
end;
end;
function TdmTablaPropiedades.darPropiedades: TStrings;
var
oSQL : TIBSQL;
Lista : TStringList;
begin
oSQL := TIBSQL.Create(Self);
Lista := TStringList.Create;
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select DESCRIPCION from PROPIEDADES order by DESCRIPCION');
try
Prepare;
ExecQuery;
while not EOF do begin
Lista.Append(Fields[0].AsString);
Next;
end;
Result := Lista;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
{ TDatosPropiedad }
procedure TDatosPropiedad.AssignTo(Dest: TPersistent);
begin
if not (Dest is TDatosPropiedad) then
AssignError(Dest);
(Dest as TDatosPropiedad).CodigoPropiedad := CodigoPropiedad;
(Dest as TDatosPropiedad).Valor := Valor;
end;
function TdmTablaPropiedades.darContadorPropiedad: Integer;
var
oSQL : TIBSQL;
begin
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select MAX(CODIGO) from PROPIEDADES');
try
Prepare;
ExecQuery;
Result := (Fields[0].AsInteger + 1);
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaPropiedades.darPropiedades(var PropiedadCodigo, CodigoPropiedad: TStringList);
var
oSQL : TIBSQL;
begin
if (PropiedadCodigo = nil) or (CodigoPropiedad = nil) then
Exit;
//Limpiamos los valores que tubieran antes (por si acaso)
PropiedadCodigo.Clear;
CodigoPropiedad.Clear;
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select CODIGO, DESCRIPCION from PROPIEDADES ');
SQL.Add('order by CODIGO');
try
Prepare;
ExecQuery;
while not EOF do
begin
PropiedadCodigo.Values[FieldByName('DESCRIPCION').AsString] := FieldByName('CODIGO').AsString;
CodigoPropiedad.Values[FieldByName('CODIGO').AsString] := FieldByName('DESCRIPCION').AsString;
Next;
end;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
function TdmTablaPropiedades.darPropiedadRelacionada(Codigo : String): Integer;
var
oSQL : TIBSQL;
begin
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('select COPIA from PROPIEDADES ');
SQL.Add('where CODIGO = :CODIGO');
try
ParamByName('CODIGO').AsString := Codigo;
Prepare;
ExecQuery;
// Compruebo si se han recuperado datos
if (RecordCount > 0) then
begin
if (esCadenaVacia(Fields[0].AsString))
then Result := -1
else Result := Fields[0].AsInteger;
end
else Result := -1;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaPropiedades.asignarNullCopiaPropiedad(Codigo: Integer);
var
oSQL : TIBSQL;
begin
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('update PROPIEDADES ');
SQL.Add('set COPIA = NULL ');
SQL.Add('where CODIGO = :CODIGO');
try
ParamByName('CODIGO').AsInteger := Codigo;
Prepare;
ExecQuery;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
procedure TdmTablaPropiedades.AsignarCopiaPropiedad(Codigo: Integer; Copia: Integer);
var
oSQL : TIBSQL;
begin
oSQL := TIBSQL.Create(Self);
with oSQL do
begin
Database := dmBaseDatos.BD;
Transaction := dmBaseDatos.Transaccion;
SQL.Add('update PROPIEDADES ');
SQL.Add('set COPIA = :COPIA ');
SQL.Add('where CODIGO = :CODIGO');
try
ParamByName('COPIA').AsInteger := Copia;
ParamByName('CODIGO').AsInteger := Codigo;
Prepare;
ExecQuery;
finally
Close;
Transaction := NIL;
Free;
end;
end;
end;
{ TListaPropiedades }
function TListaPropiedades.GetPropiedad(Index: Integer): TDatosPropiedad;
begin
Result := TDatosPropiedad(FLista.Items[Index]);
end;
end.