[gelöst]Schleifen durchlauf

20. April 2010 08:32

hallo zusammen, ich hab da mal ne Frage ;)

Ich habe ein Code erstellt, das beim Drücken eines Buttons folgenden Code durchläuft.
Ist eig so gut wie fertig, (funktioniert auch). Meine Frage ist aber:

Wie muss ich meinen code umstellen, dass er meine Funktion "GetPartners" und "GetAlliances" nur einmal durchläuft???
sry programmier nicht lange... *rotwerd*
ps: ich weiß, dass es vor meiner repeat schleife reinkommt, weiß aber nicht, wie ich es umstellen muss :'(

wär cool wenn mir jemand helfen könnte

Code:

PartnerAlliancesLoc.RESET;
CLEAR(PartnerAlliancesListLoc);

Counter := 0;
i := 0;

"Sales&ReceivablesSetupLoc".GET;


//IF FORM.RUNMODAL(FORM::"Partner Alliances",PartnerAlliancesLoc) = ACTION::LookupOK THEN BEGIN
PartnerAlliancesListLoc.LOOKUPMODE := TRUE;
IF PartnerAlliancesListLoc.RUNMODAL = ACTION::LookupOK THEN BEGIN
  PartnerAlliancesLoc.SETVIEW(PartnerAlliancesListLoc.GetFilters);
  MARKEDONLY(FALSE);
  CLEARMARKS;

  Window.OPEN( 'Anzahl berechne  #1#### \' + 'Gesamtanzahl #2####' +  '\Gefilterte Debitoren #3####');
  Window.UPDATE(2, COUNT);

  IF Rec.FINDSET(FALSE,FALSE) THEN BEGIN
 //   --> hier muss die GetAlliances und GetPartners rein

    REPEAT
      Counter := Counter + 1;
      Window.UPDATE(1, Counter);
      IF PartnerAlliancesLoc.FINDSET(FALSE,FALSE) THEN BEGIN
        REPEAT
          IF ((GetAlliances("No.") = PartnerAlliancesLoc."Alliance Code") AND
            (GetPartners("No.")  = PartnerAlliancesLoc.Partnercode)) THEN BEGIN
            MARK(TRUE);
            i := i +1;
          END ELSE BEGIN
            IF ((PartnerAlliancesLoc."Alliance Code" = "Sales&ReceivablesSetupLoc"."Without Alliance Code" ) AND
              (PartnerAlliancesLoc.Partnercode = "Sales&ReceivablesSetupLoc"."Without Partner Code")) THEN BEGIN
              IF ((GetAlliances("No.") = '') AND (GetPartners("No.") = '')) THEN BEGIN
                MARK(TRUE);
                i := i + 1;
              END;
            END;
          END;
        UNTIL PartnerAlliancesLoc.NEXT = 0;
      END;
      Window.UPDATE(3, i );
    UNTIL NEXT = 0;
    MARKEDONLY(TRUE);
  END;
END;
Window.CLOSE;
Zuletzt geändert von escabrosa am 20. April 2010 09:50, insgesamt 1-mal geändert.

Re: Schleifen durchlauf

20. April 2010 08:46

Hi,
für Fragen muss man sich doch nicht schämen :)
Ich würde zwei Variablen anlegen und diese vor der Schleife mit den beiden GET-Funktionen befüllen.
Code:
partnercode_loc := GetPartners("No.");

Und in deiner Schleife tauscht du dann die Funktionsaufrufe durch die Variablen aus.

Re: Schleifen durchlauf

20. April 2010 09:12

hallo Daniel,

vielen Dank für deine Antwort... :)

D.h. (wenn ich es richtig verstanden habe :D) dass ich zwei neue lokale variable erstelle.

z.b GetPartner_loc und GetAllianceLoc und weiße sie den Funktionen zu?
z.B.:GetPartnerLoc := GetPartners("No.") und GetAllianceLoc =GetAlliances("No.") und füge diese vor der Repeate schleife ein????

Vielen Dank ... *rotwerd* :P

Re: Schleifen durchlauf

20. April 2010 09:20

Genau so war es gemeint. :wink:

Re: Schleifen durchlauf

20. April 2010 09:46

danke Daniel :o*