Tekst op rapport bij bepaalde gelijkenis veld

Red-EagleRed-Eagle Member Posts: 107
edited 2012-06-22 in NAV Dutch speaking only
Ik wil op een report een stuk tekst weergeven als er aan bepaalde voorwaarde voldaan wordt.

De code is als volgt:

IF "Purchase Line".Element = '%.20.%' THEN BEGIN
Locatie := Text013
END ELSE BEGIN
Locatie := ''
END;


De bedoeling is dus dat locatie text013 wordt als er in elementveld .20. voorkomt

Wat doe ik fout?

Answers

  • Luc_VanDyckLuc_VanDyck Member, Moderator, Administrator Posts: 3,633
    % kan je in een SQL statement gebruiken maar niet in C/AL voor het filteren.

    Kijk eens naar de on-line help van STRPOS en wijzig de IF in:
    IF STRPOS("Purchase Line".Element,'.20.') > 0 THEN BEGIN
    No support using PM or e-mail - Please use this forum. BC TechDays 2024: 13 & 14 June 2024, Antwerp (Belgium)
  • Red-EagleRed-Eagle Member Posts: 107
    Bedankt voor de hulp, heb nu de volgende code gedaan:


    IF STRPOS("Purchase Line".Element,'.20.') > 0 THEN BEGIN
    Locatie := Text013;
    END ELSE BEGIN
    Locatie := '';
    END;


    Helaas is resultaat nog steeds leeg. Wanneer ik gewoon alleen locatie := text013 neem krijg ik wel resultaat, dus dat gedeelte zit in ieder geval goed

    Het element wat in het veld staat is 01.20.0100, maar dit kan ook bijvoorbeeld 02.20.0200 zijn.
  • Luc_VanDyckLuc_VanDyck Member, Moderator, Administrator Posts: 3,633
    STRPOS werkt in ieder geval naar behoren zoals je met deze code zelf kan uittesten:
    codElement := '01.20.0100';
    
    IF STRPOS(codElement,'.20.') > 0 THEN
      MESSAGE('.20. aanwezig')
    ELSE
      MESSAGE('.20. niet aanwezig');
    
    Misschien dat de record-var "Purchase Line" niet correct is?
    Of dat deze code uitgevoerd wordt nadat Locatie al is afgedrukt?

    Moeilijk te zeggen zonder alle code te zien.
    No support using PM or e-mail - Please use this forum. BC TechDays 2024: 13 & 14 June 2024, Antwerp (Belgium)
  • Red-EagleRed-Eagle Member Posts: 107
    Dat begrijp ik. Met de code is ook niks waarschijnlijk. De plek kan natuurlijk wel.

    Dit zijn de dataitems van het rapport:

    DataItem Name
    Purchase Header <Purchase Header>
    Integer CopyLoop
    Integer PageLoop
    Purch. Comment Line <Purch. Comment Line>
    Integer DimensionLoop1
    Purchase Line <Purchase Line>
    Integer RoundLoop
    Integer DimensionLoop2
    Integer VATCounter
    Integer VATCounterLCY
    Integer Total
    Integer Total2
    Integer Total3
    Integer Total4


    Purchase Header - OnAfterGetRecord()
    // Buitenmontage voor krat

    IF STRPOS("Purchase Line".Element,'.20.') > 0 THEN BEGIN
    Locatie := Text013;
    END ELSE BEGIN
    Locatie := '';
    END;

    // Buitenmontage voor krat

    Heb je hier al wat meer aan?
  • Luc_VanDyckLuc_VanDyck Member, Moderator, Administrator Posts: 3,633
    Als Locatie op regelniveau wordt afgedrukt, dan moet je code in de Purchase Line dataitem staan.
    Wordt Locatie afgedrukt op de header, dan moet je nog een FIND doen om een inkoopregelrecord op te halen in de Purchase Header dataitem. Als er dan regels zijn met verschillende Locaties (met en zonder '.20.' in het veld Element) dan heb je wellicht probleem.
    No support using PM or e-mail - Please use this forum. BC TechDays 2024: 13 & 14 June 2024, Antwerp (Belgium)
  • Red-EagleRed-Eagle Member Posts: 107
    Locatie wordt op headerniveau afgedrukt. Van die regelnummers weet ik, maar voor de situatie dat wij dit rapport gebruiken komt dit niet voor.
  • Red-EagleRed-Eagle Member Posts: 107
    Ik heb nu dit van de code gemaakt:


    IF "Purchase Line".FIND('-') THEN BEGIN
    IF STRPOS("Purchase Line".Element,'.20.') > 0 THEN
    Locatie := Text013;
    END ELSE BEGIN
    Locatie := '';
    END;


    maar nu neemt hij altijd text013
  • Luc_VanDyckLuc_VanDyck Member, Moderator, Administrator Posts: 3,633
    Als je geen filters hebt gezet voor de velden "Document Type" en "Document No." dan heeft ie het verkeerde record opgehaald.
    No support using PM or e-mail - Please use this forum. BC TechDays 2024: 13 & 14 June 2024, Antwerp (Belgium)
  • Red-EagleRed-Eagle Member Posts: 107
    Het is gelukt bedankt voor de hulp!!

    Voor de volledigheid even de code die ik heb gebruikt, mocht iemand anders ook zoiets nodig hebben:


    "Purchase Line".SETRANGE("Document No.", "Purchase Header"."No.");
    "Purchase Line".SETRANGE("Document Type", "Purchase Header"."Document Type");
    IF "Purchase Line".FIND('-') THEN BEGIN
    IF STRPOS("Purchase Line".Element,'.20.') > 0 THEN
    Locatie := Text013;
    IF STRPOS("Purchase Line".Element,'.30.') > 0 THEN
    Locatie := Text013;
    END ELSE BEGIN
    Locatie := '';
    END;
Sign In or Register to comment.