git-svn-id: https://192.168.0.254/svn/Proyectos.EstudioCarnicero_ProGestion/trunk@4 1b8572a8-2d6b-b84e-8c90-20ed86fa4eca
91 lines
2.2 KiB
ObjectPascal
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.
|
|
|