ProGestion/Modulos/Obras final/Reglas/uBizObraFinal.pas.bak
2007-06-21 16:12:43 +00:00

91 lines
2.2 KiB
ObjectPascal

unit uBizObraRelacionada;
interface
uses uDADataTable, uBizObra;
const
BIZ_OBRARELACIONADA = 'IBizObraRelacionada';
type
IBizObraRelacionada = interface(IBizObra)
['{4C76F690-F6DF-4EEA-938B-160F5A80ACD6}']
end;
TBizObraRelacionada = class(TBizObraDataTableRules, IBizObraRelacionada)
end;
function GetItem(CodigoObra : Integer) : IBizObraRelacionada;
function GetItems: IBizObraRelacionada;
function GetItemsSeleccionados(ASource : IBizObraRelacionada): IBizObraRelacionada;
implementation
uses SysUtils, uDBSelectionList, uDAInterfaces, uDataModuleObras;
function GetItem(CodigoObra : Integer) : IBizObraRelacionada;
begin
Result := GetItems;
with Result.DataTable do
begin
if Active then Active := False;
Where.Clear;
Where.AddText('OBRAS.CODIGO' + ' = ' + IntToStr(CodigoObra));
Active := True;
end;
end;
function GetItems: IBizObraRelacionada;
begin
Result := (dmObras.GetDataTableItems(BIZ_OBRARELACIONADA) as IBizObraRelacionada);
end;
function GetItemsSeleccionados(ASource : IBizObraRelacionada): IBizObraRelacionada;
var
aObj : ISelectedRowList;
dtObra : IBizObraRelacionada;
i : integer;
Cadena: Variant;
begin
if Supports(ASource, ISelectedRowList, aObj) then
begin
if (aObj.SelectedRows.Count = 1) then
begin
ASource.DataTable.GotoBookmark(aObj.SelectedRows[0]);
Result := GetItem(ASource.CODIGO);
Exit;
end
else
dtObra := GetItems;
end
else
raise Exception.Create('Interface no soportada (GetItemsSeleccionados)');
//Si esta abierta cerramos para poner el where
if dtObra.DataTable.Active then
dtObra.DataTable.Active := False;
with dtObra.DataTable.Where do
begin
Cadena := '';
for i := 0 to aObj.SelectedRows.Count - 1 do
begin
ASource.DataTable.GotoBookmark(aObj.SelectedRows[i]);
if Cadena <> '' then Cadena:= Cadena + ', ';
Cadena:= Cadena + IntToStr(ASource.CODIGO);
end;
Clear;
Cadena := '(' + Cadena + ')';
AddCondition('CODIGO', cIn, Cadena);
end;
Result := dtObra;
end;
initialization
RegisterDataTableRules(BIZ_OBRARELACIONADA, TBizObraRelacionada);
finalization
end.