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?
0
Answers
Kijk eens naar de on-line help van STRPOS en wijzig de IF in:
IF STRPOS("Purchase Line".Element,'.20.') > 0 THEN BEGIN
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.
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.
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?
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.
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
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;