Re: Filterbedingungen

7. Dezember 2011 12:06

Ich bin dir wirklich sehr sehr dankbar für dein Bemühen und glaube manchmal kann ich dich mit meinen Fragen in den Wahnsinn treiben :-)

Immer wenn ich denke ich bin fertig, kommt eine Kleinigkeit dazu, die mich wieder ins grübeln versetzt...

Deinen Tip mit Or hatte ich bereits auch schon probiert, es erscheint
Eine Typkonvertierung kann nicht durchgeführt werden, da eine der Seiten einen ungültigen Typ hat.

Text OR Code

EDIT: Ich hatte die Klammern vergessen.
HIermit klappt es jetzt im OnAfterGetRecord:
Code:
IF ("Item Category Code" = 'KL') OR
   ("Item Category Code" = 'MH') OR
   ("Item Category Code" = 'NT') THEN
Item.SETFILTER("Product Group Code",'KL01|KL03|MH03..MH06|NT04|NT06');


Kannst du nicht so nett sein und mir die Schleife noch verraten?

Re: Filterbedingungen

7. Dezember 2011 12:50

Irgendwas hatte ich eben zum nachträglichen Filtern auf das DataItem geschrieben, meine ich :wink:

Die Schleife müsste so klappen:
Code:
PurchasePrice.SetRange("Item No.",DeineItemNo);
if PurchasePrice.findset then begin
  LastVendorNo:=PurchasePrice."Vendor No.";
  AnzahlLieferanten:=1;
  repeat
    if PurchasePrice."Vendor No."<>LastVendorNo then begin
      AnzahlLieferanten+=1;
      LastVendorNo:=PurchasePrice."Vendor No.";
    end;
  until PurchasePrice.next=0;
end;

Hab's aber nicht getestet.

Ich kann dir nur mal wieder dringend raten, dich damit auseinander zu setzen, was der Code macht. Da hilft einem der C/Side Reference Guide auch oft weiter.

In einem anderen Beitrag hat dir Natalie einen Link zum Thema Trigger geschickt, und sie hat auch einiges anderes Hilfreiches geschrieben.

Bitte lies dir das doch mal durch.

Re: Filterbedingungen

7. Dezember 2011 12:51

McClane hat geschrieben:deine Oder-Abfrage machst du mit einem OR :wink: Also
Code:
If "Item Category Code"='XY' OR "Item Category Code"='XYZ' then ...

oder alternativ mit
Code:
IF "Item Category Code" IN ['KL','MH','NT'] THEN

Re: Filterbedingungen

7. Dezember 2011 13:42

Mittlerweile habe ich da schon einiges an Code im OnAfterGetRecord, wow.

@ McClane: Ich habe jetzt mal deinen Code eingebunden. Das ganze sieht nun wie folgt aus:
Code:
IF ("Item Category Code" = 'KL') OR  //oder IF "Item Category Code" IN ['KL','MH','NT'] THEN...
   ("Item Category Code" = 'MH') OR
   ("Item Category Code" = 'SB') OR
   ("Item Category Code" = 'NT') THEN
Item.SETFILTER("Product Group Code",'SB01..SB05|KL01|KL03|MH03..MH06|NT04|NT06');

CLEAR(LieferantenCode);

PurchasePrice.SETRANGE("Item No.",Item."No.");
IF PurchasePrice.FINDSET THEN BEGIN
  LieferantenCode:=PurchasePrice."Vendor No.";
  AnzahlLieferanten:=1;
  REPEAT
    IF PurchasePrice."Vendor No."<>LieferantenCode THEN BEGIN
      AnzahlLieferanten+=1;
      LieferantenCode:=PurchasePrice."Vendor No.";
    END;
  UNTIL PurchasePrice.NEXT=0;
END;

IF ItemCode <> Item."Item Category Code" THEN BEGIN
CLEAR(AnzahlArtikel);
CLEAR(AnzahlMultiLieferantenArtikel);
ItemCode := Item."Item Category Code";
END;

ItemLedgerEntry.SETRANGE("Entry Type",ItemLedgerEntry."Entry Type"::Purchase);
ItemLedgerEntry.SETRANGE("Item No.","No.");
IF ItemLedgerEntry.ISEMPTY THEN
  CurrReport.SKIP;

{
CLEAR(LieferantenCode);

IF LieferantenCode <> PurchasePrice."Vendor No." THEN BEGIN
AnzahlLieferanten += 1;
LieferantenCode := PurchasePrice."Vendor No.";
END;
}

IF AnzahlLieferanten >= 2 THEN BEGIN
  AnzahlMultiLieferantenArtikel +=1;
  AnzahlMultiLieferantenArtikelG +=1;
  END;

IF AnzahlLieferanten >= 1 THEN BEGIN
  AnzahlArtikelmind1Lieferant +=1;
  AnzahlLieferanten := 0;
END;

GesamtArtikel += 1;
AnzahlArtikel += 1;


Kannst du damit etwas anfangen? Leider wird immer noch für alle Artikel die Lieferantenanzahl mit 0 ausgegeben, kannst du da was im Code erkennen? Für mich wird das langsam wirklich hart.

Re: Filterbedingungen

7. Dezember 2011 13:52

Die Variable "AnzahlLieferanten"? Na guck doch mal, was so gegen Ende damit passiert ...

Re: Filterbedingungen

7. Dezember 2011 14:15

OHHHH Mann, na logo, argghhhh.

Danke!