git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
371 lines
9.3 KiB
ObjectPascal
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.
|