Code besser machen

10. Oktober 2021 09:07

Hi
kann man so einen Code besser machen.
Es sollen 365 Tage, welche das Datenfelder in einer Tabelle sind, befüllt werden.
Wie könnte ich diese IF i in eine Funktion auslagern, damit der Code einfacher wird.


Code:
FOR i := 1 TO 50 DO BEGIN     
      Decklagenverfuegbarkeit.RESET;
      Decklagenverfuegbarkeit.SETCURRENTKEY("PPL DL-Startdatum");     
      Decklagenverfuegbarkeit.SETRANGE("PPL DL-Startdatum",Tag);     
      IF Decklagenverfuegbarkeit.FINDLAST THEN BEGIN     
        VerfTag := Decklagenverfuegbarkeit."DL-Verf. mit Erw. Zugang";               
      END;
      IF i = 1 THEN
        ArtikelverfTage.VerfgTag1 := VerfTag;
      IF i = 2 THEN
        ArtikelverfTage.VerfgTag2 := VerfTag;
      IF i = 3 THEN
        ArtikelverfTage.VerfgTag3 := VerfTag;
      IF i = 4 THEN
        ArtikelverfTage.VerfgTag4 := VerfTag;
      IF i = 5 THEN
        ArtikelverfTage.VerfgTag5 := VerfTag;
      IF i = 6 THEN
        ArtikelverfTage.VerfgTag6 := VerfTag;
      IF i = 7 THEN
        ArtikelverfTage.VerfgTag7 := VerfTag;
      IF i = 8 THEN
        ArtikelverfTage.VerfgTag8 := VerfTag;
      IF i = 9 THEN
        ArtikelverfTage.VerfgTag9 := VerfTag;
      IF i = 10 THEN
        ArtikelverfTage.VerfgTag10 := VerfTag;

      IF i = 11 THEN
        ArtikelverfTage.VerfgTag11 := VerfTag;


Besten Dank
stony

Re: Code besser machen

11. Oktober 2021 08:17

Wenn die Felder ArtikelverfTage.VerfgTag1 bis ArtikelverfTage.VerfgTagn eine fortlaufende Feldnummer haben, könntest du mit RecordRef und FieldRef über die RecRef.FieldNo(ErsteFeldNr + i) dynamisch auf das jeweilige Feld zugreifen.

Also mal angenommen, VerfgTag1 beginnt bei Feldnr. 100 und wird fortlaufend (101, 102, ...) durchnummeriert, dann könnte der Programmcode so aussehen:
Code:
RecRef.OPEN(ArtikelverfTage);
FOR i := 1 TO 50 DO BEGIN
  FldRef 
:= RecRef.FieldNo(99 + I);
  FldRef.VALUE := VerfTag;
END;
RecRef.MODIFY;
RecRef.CLOSE;