[gelöst]Filter kopieren

15. April 2010 16:55

Hallo,

ich habe ein kleines Problem mit meinen Filter.

Ich habe ein Form, in dem gefilterte Datensätze angezeigt werden. Diese Datensätze sollen alle über eine Funktion mit einem Klick freigegeben werden.

ich habe es mir so gedacht:

Code:
IF CONFIRM(Text001) THEN BEGIN
  IF FINDFIRST THEN BEGIN
   REPEAT
     greWorkTime.COPYFILTERS(Rec);
     IF greWorkTime.FINDFIRST THEN BEGIN
      greWorkTime."Document closed" := TRUE;
      greWorkTime."Approval Status Responsible" := greWorkTime."Approval Status Responsible"::Released;
      greWorkTime."Approval Date Responsible" := TODAY;
      greWorkTime.MODIFY;
     END;
   UNTIL NEXT = 0;
  END;
END;


Nur leider funktioniert es so nicht :-(
Hat jmd. eine Idee, wieso?

Danke!
lg
Zuletzt geändert von rom am 19. April 2010 09:15, insgesamt 1-mal geändert.

Re: Filter kopieren

15. April 2010 19:33

Hallo rom,

dein Programmcode ist äusserst ungünstig aufgebaut.
  1. verwendest du FINDFIRST in Verbindung mit einer Schleife -> Perfomance-Killer!
    :greenarrow: FINDSET verwenden
  2. läufst du in einer Schleife über alle Datensätze, überträgst die Filter und arbeitest anschließend nur einen einzigen Datensatz aus dem Result-Set ab
Ich würde es eher so schreiben:
Code:
IF CONFIRM(Text001) THEN BEGIN
  greWorkTime.COPYFILTERS(Rec);
  IF greWorkTime.FINDSET(TRUE) THEN
    REPEAT
      greWorkTime."Document closed" := TRUE;
      greWorkTime."Approval Status Responsible" := greWorkTime."Approval Status Responsible"::Released;
      greWorkTime."Approval Date Responsible" := TODAY;
      greWorkTime.MODIFY;
    UNTIL NEXT = 0;
END;

Re: [gelöst]Filter kopieren

19. April 2010 09:16

Hallo Timo,

danke für die Infos und Tipps, hat super geklappt :-)

lg