You've already forked lazarus-ccr
TvPlanIt: Deletion of a resource deletes also the associated events, contacts and tasks. Tested with all database datastores. Update datastore sample projects.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8947 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -64,6 +64,10 @@ type
|
||||
procedure SetReadOnly(const Value: boolean);
|
||||
|
||||
{ internal methods }
|
||||
procedure InternalPurgeContacts(Res: TVpResource); override;
|
||||
procedure InternalPurgeEvents(Res: TVpResource); override;
|
||||
procedure InternalPurgeTasks(Res: TVpResource); override;
|
||||
|
||||
procedure LoadContact(AContact: TVpContact); virtual;
|
||||
procedure LoadTask(ATask: TVpTask); virtual;
|
||||
procedure SetFilterCriteria(ATable: TDataset; AUseDateTime: Boolean;
|
||||
@ -96,9 +100,6 @@ type
|
||||
procedure PostResources; override;
|
||||
|
||||
procedure PurgeResource(Res: TVpResource); override;
|
||||
procedure PurgeEvents(Res: TVpResource); override;
|
||||
procedure PurgeContacts(Res: TVpResource); override;
|
||||
procedure PurgeTasks(Res: TVpResource); override;
|
||||
|
||||
procedure SetResourceByName(Value: string); override;
|
||||
procedure CreateFieldDefs(const TableName: string; FieldDefs: TFieldDefs); virtual;
|
||||
@ -1879,7 +1880,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{ - Added}
|
||||
procedure TVpCustomDBDataStore.PurgeResource(Res: TVpResource);
|
||||
begin
|
||||
Res.Deleted := true;
|
||||
@ -1887,27 +1887,64 @@ begin
|
||||
Load;
|
||||
end;
|
||||
|
||||
procedure TVpCustomDBDataStore.PurgeEvents(Res: TVpResource);
|
||||
{ Deletes all events from the database which are assigned to the specified
|
||||
resource. Does this by iterating over the dataset.
|
||||
Override if the descendant class provides a more efficient method. }
|
||||
procedure TVpCustomDBDataStore.InternalPurgeEvents(Res: TVpResource);
|
||||
var
|
||||
resIDField: TField;
|
||||
begin
|
||||
{ Purging the events from the database is done by the descendant !!.01}
|
||||
{ classes !!.01}
|
||||
inherited;
|
||||
Assert(Res <> nil);
|
||||
|
||||
EventsTable.Open;
|
||||
EventsTable.First;
|
||||
resIDField := EventsTable.FieldByName('ResourceID');
|
||||
while not EventsTable.EOF do
|
||||
begin
|
||||
if resIDField.AsInteger = Res.ResourceID then
|
||||
EventsTable.Delete
|
||||
else
|
||||
EventsTable.Next;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TVpCustomDBDataStore.PurgeContacts(Res: TVpResource);
|
||||
{ Deletes all contacts from the database which are assigned to the specified
|
||||
resource. Does this by iterating over the dataset. Override if the descendant
|
||||
class provides a more efficient method. }
|
||||
procedure TVpCustomDBDataStore.InternalPurgeContacts(Res: TVpResource);
|
||||
var
|
||||
resIDField: TField;
|
||||
begin
|
||||
{ Purging the contacts from the database is done by the descendant !!.01}
|
||||
{ classes !!.01}
|
||||
inherited;
|
||||
ContactsTable.Open;
|
||||
ContactsTable.First;
|
||||
resIDField := ContactsTable.FieldByName('ResourceID');
|
||||
while not ContactsTable.EOF do
|
||||
begin
|
||||
if resIDField.AsInteger = Res.ResourceID then
|
||||
ContactsTable.Delete
|
||||
else
|
||||
ContactsTable.Next;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TVpCustomDBDataStore.PurgeTasks(Res: TVpResource);
|
||||
{ Deletes all tasks from the database which are assigned to the specified
|
||||
resource. Does this by iterating over the dataset. Override if the descendant
|
||||
class provides a more efficient method. }
|
||||
procedure TVpCustomDBDataStore.InternalPurgeTasks(Res: TVpResource);
|
||||
var
|
||||
resIDField: TField;
|
||||
begin
|
||||
{ Purging the tasks from the database is done by the descendant !!.01}
|
||||
{ classes !!.01}
|
||||
inherited;
|
||||
TasksTable.Open;
|
||||
TasksTable.First;
|
||||
resIDField := TasksTable.FieldByName('ResourceID');
|
||||
while not TasksTable.EOF do
|
||||
begin
|
||||
if resIDField.AsInteger = Res.ResourceID then
|
||||
TasksTable.Delete
|
||||
else
|
||||
TasksTable.Next;
|
||||
end;
|
||||
end;
|
||||
{ - End}
|
||||
|
||||
procedure TVpCustomDBDataStore.SetResourceByName(Value: string);
|
||||
var
|
||||
|
Reference in New Issue
Block a user