G'day folks,

I want to delete certain records from multiple linked tables.
The criteria (defined in sFILTER) is e.g. "ClientType = 2"

What I did is, I created the following SQL and delete records in a loop.
The thing is, that the loop seems to work quite well, it counts down
(indicated by the recordCount value, but:
- it deletes not all the records with the specified criteria, and
- it also deletes a few records outside of the specified criteria,
- sometimes it runs through the loop and after all it did not delete any
records at all, but while running in the loop they seem to disappear
otherwise it wouldn't come out of the loop.

What's wrong?

Please find the code below:

          disableControls;
          query.clear;
          query.add('SELECT c.ID, c.ClientType, p.ID');
          query.add('FROM RE_Client c, RE_Property p');
          query.add('WHERE (c.ID = p.ID) and (c.' + sFilter + ')');

          OpenAllTables;
          while recordCount > 0 do
          begin
            try tblClientMaster     .delete except
                on e:exception do
                begin
                  showMessage('Failed deleting!' + cCR + e.message);
                  exit;
                end;
            end;
            lbl_City.caption := intToStr(recordCount);  // show progress
            application.processMessages;
          end;

Note that the other tables are linked up to the ClientMaster table with the
table properties MasterSource and MasterFields

Is this the right way to do a delete on multiple tables?
Can I do this in one go with the SQL "DELETE" statement, if so HOW do I
specify the other tables?

Thanks a lot for any help.

John.

---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED] 
with body of "unsubscribe delphi"

Reply via email to