Report - 2 filteringen op 1 tabel mbv tijdelijke tabel

EstherBEstherB Member Posts: 4
edited 2011-05-11 in NAV Dutch speaking only
Ik probeer een dubbele filtering op dezelfde tabel uit te voeren mbv een tijdelijke tabel.

Even ter verduidelijking: aan de hand van een ingegeven einddatum probeer ik uit de artikelposten de posten te halen die voor deze datum nog niet volledig geboekt zijn en degenen die volledig geboekt zijn, maar een last invoice date hebben die voor de ingegeven datum ligt.

Ik probeer dit op de volgende manier in het report

DataItem Name
Item Ledger Entry <Item Ledger Entry>
Item Ledger Entry Item Ledger Entry2
Integer <Integer>
--
Item Ledger Entry - OnPreDataItem()
"Item Ledger Entry".RESET;
"Item Ledger Entry".SETFILTER("Posting Date", '<= %1', EndDate);
"Item Ledger Entry".SETFILTER("Entry Type", '%1', "Entry Type"::Sale);
"Item Ledger Entry".SETRANGE("Completely Invoiced",FALSE);

ItemLedgerEntryTemp := "Item Ledger Entry";
ItemLedgerEntryTemp.INSERT;
---
Item Ledger Entry2 - OnPreDataItem()
"Item Ledger Entry2".RESET;
"Item Ledger Entry2".SETFILTER("Posting Date", '<=%1', EndDate);
"Item Ledger Entry2".SETFILTER("Entry Type", '%1', "Entry Type"::Sale);
"Item Ledger Entry2".SETRANGE("Completely Invoiced",TRUE);
"Item Ledger Entry2".SETFILTER("Last Invoice Date", '<=%1', EndDate);

ItemLedgerEntryTemp := "Item Ledger Entry2";
ItemLedgerEntryTemp.INSERT;
----
Integer - OnPreDataItem()
ItemLedgerEntryTemp.SETCURRENTKEY("Source Type","Source No.","Entry Type","Item No.","Variant Code","Posting Date");
Integer.SETRANGE(Number,1, ItemLedgerEntryTemp.COUNT);

Integer - OnAfterGetRecord()
CustName := '';
IF Customer.GET(ItemLedgerEntryTemp."Source No.") THEN
  CustName := Customer.Name;

OrderNo := '';
IF SalesShipmentLine.GET(ItemLedgerEntryTemp."Document No.", ItemLedgerEntryTemp."Document Line No.") THEN
  OrderNo := SalesShipmentLine."Order No.";
  IF OrderNo = '' THEN
    IF ReturnReceiptLine.GET(ItemLedgerEntryTemp."Document No.", ItemLedgerEntryTemp."Document Line No.") THEN
    OrderNo := ReturnReceiptLine."Return Order No.";

Wanneer ik dit uitvoer krijg ik alleen telkens de foutmelding Artikelpost Volgnummer '0' is reeds aanwezig, volgens mij doordat hij bij de Item Ledger Entry2, de ItemLedgerEntryTemp, weer opnieuw probeert te vullen. Maar ik weet dit niet zeker, en zou niet weten hoe ik dit kan oplossen.

Iemand een idee?

Answers

  • Luc_VanDyckLuc_VanDyck Member, Moderator, Administrator Posts: 3,633
    Ik neem aan dat de ItemLedgerEntryTemp := ... en ItemLedgerEntryTemp.INSERT; statements in de OnAfterGetRecord-trigger van de eerste twee dataitems staan?

    In de Integer-dataitem moet je nog code toevoegen in de OnAfterGetRecord-trigger om de ItemLedgerEntryTemp-tabel te doorlopen:
    IF Number = 1 THEN
      ItemLedgerEntryTemp.FINDFIRST
    ELSE
      ItemLedgerEntryTemp.NEXT;
    
    Als je de debugger aanzet en je voert je rapport uit, op welke regel krijg je dan de foutmelding?
    No support using PM or e-mail - Please use this forum. BC TechDays 2024: 13 & 14 June 2024, Antwerp (Belgium)
  • EstherBEstherB Member Posts: 4
    Ik neem aan dat de ItemLedgerEntryTemp := ... en ItemLedgerEntryTemp.INSERT; statements in de OnAfterGetRecord-trigger van de eerste twee dataitems staan?

    Dat had ik eerst wel, maar doordat ik bij de debugger zag dat hij helemaal niet de OnAfterGetRecord doorliep had ik ze maar in de OnPreDataItem gezet. Dit heb ik nu weer aangepast.
    In de Integer-dataitem moet je nog code toevoegen in de OnAfterGetRecord-trigger om de ItemLedgerEntryTemp-tabel te doorlopen:
    IF Number = 1 THEN
      ItemLedgerEntryTemp.FINDFIRST
    ELSE
      ItemLedgerEntryTemp.NEXT;
    
    Als je de debugger aanzet en je voert je rapport uit, op welke regel krijg je dan de foutmelding?

    Met de toevoeging van bovenstaande code, komt er nu eerst geen foutmelding meer \:D/
    Nu nog checken of er ook de gewenste data uitkomt [-o<
    Bedankt voor de hulp :!:
Sign In or Register to comment.