4. Januar 2010 12:15
// Soll Customer ausschließen, wo es keine Aufträge gibt
"Sales Header".RESET;
"Sales Header".SETRANGE("Document Type","Sales Header"."Document Type"::Order);
"Sales Header".SETRANGE("Sell-to Customer No.",Customer."No.");
IF NOT "Sales Header".FINDFIRST THEN
 CurrReport.SKIP;
gDeLineAmount := 0;
gboFoundBecken := FALSE;
greSalesLine.RESET;
greSalesLine.SETRANGE("Document Type","Sales Header"."Document Type");
greSalesLine.SETRANGE("Document No.","Sales Header"."No.");
greSalesLine.SETRANGE("Sell-to Customer No.","Sales Header"."Sell-to Customer No.");
IF greSalesLine.FINDFIRST THEN BEGIN
 REPEAT
  gDeLineAmount += greSalesLine."Line Amount";
  greItem.RESET;
  greItem.SETRANGE("No.",greSalesLine."No.");
  IF greItem.FINDFIRST THEN BEGIN
    IF greItem."Product Group Code" = 'BECKEN' THEN BEGIN
      gboFoundBecken := TRUE;
      gReItemVariant.RESET;
      gReItemVariant.SETRANGE("Item No.",greItem."No.");
      gReItemVariant.SETRANGE(Code,greSalesLine."Variant Code");
      IF gReItemVariant.FINDFIRST THEN BEGIN
        gTxDescription := greItem.Description + ' ' + gReItemVariant."Description 2";
        gboFoundBecken := TRUE;
      END ELSE BEGIN
        gTxDescription := greItem.Description;
        gboFoundBecken := TRUE;
      END;
    END ELSE BEGIN
     IF NOT gboFoundBecken THEN
      gTxDescription := Text001;
    END;
  END;
 UNTIL NEXT = 0;
END;
gDeCustAmount += gDeLineAmount;
// Wenn kein Zeilebetrag dann Sales Header ignorieren
IF gDeLineAmount = 0 THEN
  CurrReport.SKIP;
4. Januar 2010 12:28
rom hat geschrieben:Im onPreDataItem vom Sales Header ist folgender Code:
- Code:
 // Soll Customer ausschließen, wo es keine Aufträge gibt
"Sales Header".RESET;
"Sales Header".SETRANGE("Document Type","Sales Header"."Document Type"::Order);
"Sales Header".SETRANGE("Sell-to Customer No.",Customer."No.");
IF NOT "Sales Header".FINDFIRST THEN
CurrReport.SKIP;
Im onAfterGetRecord vom Sales Header habe ich folgenden Code
...IF greSalesLine.FINDFIRST THEN BEGIN
 REPEAT
   UNTIL NEXT = 0;
END;
gDeCustAmount += gDeLineAmount;UNTIL greSalesLine.NEXT = 0;4. Januar 2010 12:40
Natalie hat geschrieben:Mal im "Überflug":
Ich seh da am Ende einen Fehler:
- Code:
 ...IF greSalesLine.FINDFIRST THEN BEGIN
REPEAT
UNTIL NEXT = 0;
END;
gDeCustAmount += gDeLineAmount;
Es muss heißen
- Code:
 UNTIL greSalesLine.NEXT = 0;