7. September 2017 11:06
Hallo,
ich versuch mich gerade in der Anpassung des Reports 405 Einkaufsbestellung. Ich möchte gerne die ersten 4 Zeilen aus den Bemerkungen ("Purch. Comment Line") in den Report übergeben. Folgende Variablen habe ich dazu angelegt:
- PurchComm - Record - Purch. Comment Line
- PurchCommData - Text - 80
mit "FINDFIRST" bekomme ich die 1. Zeile der Bemerkung. Aber wie kann ich die 2., 3. und 4. Zeile ansprechen?
7. September 2017 20:38
Mit einem Zähler (Integer Variable). Ganz grob so in etwa:
- Code:
PurchCommData := '';
Zaehler := 1;
PurchCommentLine.setrange(Document Type, ...
PurchCommentLine.setrange(No., ...
if PurchCommentLine.findset then
repeat
if Zaehler > 1 then PurchCommData[Zaehler] += '\';
PurchCommData[Zaehler] += PurchCommentLine.Comment;
Zaehler += 1;
until (PurchCommentLine.next = 0) or (Zaehler = 4);
8. September 2017 20:35
Hallo,
die Daten hast Du dann zwar, aber... die sind dann noch nicht im ResultSet. Am einfachsten ist es wohl ein DataItem auf die Bemerkungen zu machen, mit MaxIterations=4. Und Dann als Column in diesem DataItem den Text auszugeben.
LG Jens
9. September 2017 22:11
Hallo,
Entschuldigung aber das mit dem DataItem und dem Array finde ich ein wenig "OldSchool"- NAV CC- Reporting.
RDLC und NAV-C/AL bieten so schönen Möglichkeiten, das ganze erheblich zu verienfachen:
- Code:
PROCEDURE GetPurchComment@5109000(VAR pPurchHeader@115109000 : Record 38;pRDLCFieldIsHTML@115109003 : Boolean) CommentString : Text;
VAR
lCommentLine@115109001 : Record 43;
lNewLine@115109002 : Text[4];
lLineCounter@115109004 : Integer;
BEGIN
IF pRDLCFieldIsHTML THEN
lNewLine :='<br>'
ELSE BEGIN
lNewLine :=' ';
lNewLine[1] := 13;
lNewLine[2] := 10;
END;
lCommentLine.SETRANGE("Document Type",pPurchHeader."Document Type");
lCommentLine.SETRANGE("No.",pPurchHeader."No.");
IF lCommentLine.FINDSET THEN
REPEAT
IF CommentString <>'' THEN
CommentString += lNewLine;
CommentString += lCommentLine.Comment;
lLineCounter +=1;
UNTIL (lCommentLine.NEXT = 0) OR (lLineCounter >=4);
END;
Das Ergebnis der Funktion übergibst du an eine Textvariable oder direkt im "Purchase Header" ans RDLC. Im Reportdesigner gibst du die Bemerkung in einem Textfeld aus.
Gruß Fiddi
10. September 2017 16:54
Wennn OldSchool heisst, dass man praktisch keinen Code schreiben muss (ausser die Struktur im Designer anlegen und verlinken), im Gegensasatz zu einer extra Funktion, bin ich für OldSchool.
LG Jens
10. September 2017 19:36
Dafür wird es im Designer aber aufwändiger, und wenn du mit HTML arbeiten, oder den Text frei positionieren möchtest, dann ist das schon wieder gar nicht mehr so einfach.
Die Funktion ist eigentlich ein Basis um jegliche Form von Texten an irgend einer Stelle im Beleg auszugeben.
EDIT:Besonders Interessant ist das bei Adressen. Man benötigt nur noch EIN Textfeld, das an den RDLC- Report übergeben wird, und im RDLC auch nur noch EIN Textfeld, mit dem man evtl. mit variabler Größe Platz auf dem Beleg schaffen kann, außerdem stimmen die Abstände zwischen den Textzeilen im RDLC ohne komplizierte Feldschubserei.
Gruß Fiddi
11. September 2017 08:33
+1 für fiddis Lösung...
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.