[gelöst] Mehrere Tabellen löschen

7. September 2011 16:21

Hallo Forum,

ich möchte gerne mit einem Report den Inhalt mehrerer Tabelle löschen.
Beispiel:
Tabelle 55000 bis 55100
folgende Programmierung habe ich mir überlegt:
Code:
Variable
RR -> RecordRef
i -> Int

FOR i := 55000 TO 55100 DO BEGIN
  RR.OPEN(i);
  RR.DELETEALL;
  RR.CLOSE;
END;

klappt auch ganz gut, aber wenn beispielsweise die Tabelle 55050 fehlt gibts ne Fehlermeldung, dass die Tabelle nicht existiert und es wird abgebrochen.
Wie kann ich also die Existenz einer Tabelle abfragen?
so in der Art:
Code:
if RR.OPEN(i) = true then
...
end;

Für Hilfe bin ich wie immer dankbar!
Zuletzt geändert von svr am 7. September 2011 16:59, insgesamt 1-mal geändert.

Re: Mehrere Tabellen löschen

7. September 2011 16:55

Hallo svr,

dein Ansatz war schon ganz gut, du musst halt nur noch zusätzlich in der Tabelle Object prüfen, ob es ein Objekt vom Typ Table mit der ID gibt:

Code:
Variable
RR -> RecordRef
i -> Int

FOR i := 55000 TO 55100 DO BEGIN
  IF Object.GET(Object.Type::"Table",'',i) THEN BEGIN  // <---- HIER DIE PRÜFUNG
    RR.OPEN(i);
    RR.DELETEALL;
    RR.CLOSE;
  END;
END;

Re: Mehrere Tabellen löschen

7. September 2011 16:59

Hallo Timo,

man muss eben manchmal einfach mal um die Ecke denken :mrgreen:

Danke für den Tipp
Grüße

Re: Mehrere Tabellen löschen

8. September 2011 10:21

Für den Fall, dass in diesem Nummernbereich sehr große Lücken vorhanden sein sollten, könnte man auch folgendermaßen vorgehen:
Code:
Variable
Object -> Record Object
RR -> RecordRef
i -> Int

Object.SETRANGE(Type,Object.Type::Table);
Object.SETRANGE("Company Name",'');
Object.SETRANGE(ID,55000,55100);
IF Object.FIND('-') THEN BEGIN
  REPEAT
    RR.OPEN(Object.ID);
    RR.DELETEALL;
    RR.CLOSE;
  UNTIL Object.NEXT = 0;
END;