Debitor mit Bermerkungsfeld drucken

23. August 2007 10:48

Hallo, bin gerade dabei einen eigenen Bericht zu erstellen, mit der Tabelle Cost Center und Cust. Ledger Entry.
Ausgegeben werden sollen die offene Posten pro Debitor. Funktioniert soweit auch gut.
Nun möchte unser Controlling auch die Bemerkung von der Tabelle Comment Line von dem jeweiligen Debitor auf dem Bericht haben.
Nur leider weiss ich nicht es funktioniert.
Kann mir jemand helfen?
gruß Bernhard

23. August 2007 11:38

Die Tabelle "Comment Line" beinhaltet die Debitorennummer, über die du die Relation herstellen kannst.

Über einen separaten Body in den Sctions zur "Comment Line", kannst du dann den entsprechenden Text zur Laufzeit mit einbinden.

Eine nette Möglichkeit währe noch, über ein Boolen auf der Requestform zu steuern ob der Text eingeblendet werden soll oder nicht.
Über den Trigger zum neue Body zur Comment Line kann dann mit CurrReport.VISIBLE(TRUE oder FALSE) der Text ein und ausgeblendet werden.

23. August 2007 11:42

Hallo Kuki, vielen Dank für die schnelle Antwort,
bin leider nicht so tief in der Programmierlogik drin, wie kann ich die Relation herstellen

23. August 2007 12:01

Der Report hat während der Laufzeit den oder die Debitoren im Zugriff.
Also hat er immer die Debitorennummer.
Über eine Recordvariabele auf die Tabelle Customer(18) und über ein Setrange Filter bekommst du alle zugehörigen Bemerkungszeilen zum Debitoren.

Da die Bemerkundszeilen unter Umständen über mehrere Zeilen verteilt sind, musst du mit einer Schleife auf die Texte zugreifen

Das Ganze könnte so aussehen:

Deklaration der Recordvariabelen:
Name DataType Subtype Length
Customer_record Record Customer

Das Coding könnte so aussehen:
Code:
Customer_record.SETRANGE(Customer_record."No.");
if Customer_record.FINDFIRST THEN BEGIN
  REPEAT
    // HIer kommt die Zuweisung oder was auch immer
   // du damit anfangen möchtest rein.
  UNTIL Customer_record.NEXT = 0;
END;


Viel Spaß :-)


[Edit: Programmcode mittels [code]-Tag als solchen erkenntlich gemacht. Gruß, Timo.]

23. August 2007 12:17

Zwei kleine Anmerkungen zu Marc's Vorschlag:
  1. Verwende FINDFIRST nur, wenn du wirklich nur den ersten Datensatz benötigst, ansonsten verwende FINDSET!
  2. Die Bemerkungszeilen liegen nicht in der Tabelle 18, sondern in der Tabelle 97 (Filter auf "Table Name"::Customer und "No."=Cust."No.").

Erstelle dir einfach unterhalb deines Customer DataItems (eins nach rechts eingerückt ein DataItem auf Tabelle 97 (Comment Line) und verknüpfe es mit deinem Customer DataItem (wie unter 2. beschrieben).
Nun kannst du in den Body-Sections deines DataItems das Feld Comment (und eventuell auch Date) einblenden, schon werden dir alle Bemerkungen zu dem jeweiligen Debitoren angedruckt.

Willst du die komfortable Lösung mit einem Häkchen auf der Requestform einbauen, so fragst du im deinem DataItem "Comment Line" im OnPreDataItem ab, ob Bemerkungen gedruckt werden sollen:
Code:
If NOT BemerkungenDrucken THEN
  CurrReport.BREAK;

23. August 2007 13:23

Hallo,
vielen Dank für die Antworten, habe es gleich versucht und funktioniert.
Zwei Fragen noch:
- Kann ich das Bemerkungsfeld auch in die Zeile von Cust. Ledger Entry Body bekommen? Denn so sieht der Bericht ein wenig abgehackt aus.
- Bei einem Debitor ist die Bemerkungsspalte so groß das es einen Seitenumbruch veranlasst. Auf der neuen Seite wird auch ein neuer Debitor angezeigt und so vermischt sich das Bermerkungsfeld mit dem neu angezeigtem Debitor. Kann der Seitenumbruch eingestellt.
(Kompliziert geschrieben, hoffe aber Ihr versteht mich)

Gruß Bernhard

23. August 2007 14:41

Ich gehe mal davon aus, dass du ungefähr folgenden Aufbau in deinem Report hast:
Code:
Customer
+ Cust. Ledger Entry
+ Comment Line

(+ bedeutet, das DataItem ist eingerückt)

Du kannst die "Comment Line" sowohl oberhalb als auch unterhalb der "Cust. Ledger Entry" einfügen, wichtig ist nur, dass es gegenüber dem DataItem Customer um eine Ebene eingerückt ist und auf der gleichen Ebene steht wie "Cust. Ledger Entry".

Die Bemerkungen innerhalb von "Cust. Ledger Entry" anzudrucken ist etwas sinnlos, da du ja die Bemerkungen des Customer drucken möchtest und nicht (eventuelle) Bemerkungen zu den einzelnen "Cust. Ledger Entries" (sofern es die bei euch geben sollte.
Somit sollte der Aufbau ungefähr dem entsprechen, was ich gerade skizziert habe.

Du kannst für jeden Debitoren eine neue Seite beginnen lassen, indem du auf dem DataItem "Customer" das Property "NewPagePerRecord" auf Yes setzt.
Dies verhindert zwar nicht, dass die Bemerkungen (unter anderem) auf der nächsten Seite erscheinen, stellt aber sicher, dass der nächste Debitor auf jeden Fall auf einer neuen Seite anfängt.

Re: Debitor mit Bermerkungsfeld drucken

5. Dezember 2014 14:59

Hallo,

zu diesem Thread hätte ich eine Frage. Ich versuche gerade zum Angebot (Report 204) bestimmte Verkaufsbemerkungszeilen (Sales Comment Line, table 44, Comment No = 'BF' (dieses Feld ist eine Erweiterung von uns)) mit aus zu geben. Ich habe dafür eine Recordvariable "SalesComment" für die Tabelle 44 "Sales Comment Line" und eine Textvariable "SalesCommentBF" angelegt.

Der Code (OnPreDataItem) lautet:

Code:
SalesComment.RESET;
SalesComment.SETCURRENTKEY("Comment No");
SalesComment.SETFILTER("Comment No", '="BF"')
IF SalesComment.FIND('-') THEN BEGIN
i:=0
CLEAR(SalesCommentBF);
REPEAT
i:=i+1;
SalesCommentBF[i]:=SalesComment.Comment;
UNTIL (SalesComment.NEXT=0) OR (i=3);
END;


Beim Speichern des Codes bekomme ich immer die Fehlermeldung "Syntaxfehler" und der Cursor spring in die Zeile "IF SalesComment.FIND('-') THEN BEGIN". Was könnte ich hier falsch gemacht haben?

Re: Debitor mit Bermerkungsfeld drucken

5. Dezember 2014 15:08

Hinter dem i:=0 fehlt ein Semikolon.

Re: Debitor mit Bermerkungsfeld drucken

5. Dezember 2014 15:59

Natalie hat geschrieben:Hinter dem i:=0 fehlt ein Semikolon.


Hallo Natalie,

Danke, ja, das Semikolon fehlte (auch noch am Ende des SETFILTER). Leider bekomme ich immer noch die Fehlermeldung "Syntaxfehler" und der Cursor springt in die Zeile "i:=i+1;"

Re: Debitor mit Bermerkungsfeld drucken

5. Dezember 2014 16:13

Beim Filter auf BF fehlt auch ein ';'

Re: Debitor mit Bermerkungsfeld drucken

5. Dezember 2014 16:42

Markus Merkl hat geschrieben:Beim Filter auf BF fehlt auch ein ';'

hab ich auch schon gesetzt, leider ohne Erfolg

Re: Debitor mit Bermerkungsfeld drucken

5. Dezember 2014 16:46

Versuch doch mal:
Code:
SalesComment.SETFILTER("Comment No", '%1','BF');


oder
Code:
SalesComment.SETRANGE("Comment No", 'BF');


Gruß, Fiddi

Re: Debitor mit Bermerkungsfeld drucken

5. Dezember 2014 21:10

super, jetzt klappt alles. Hier mein

Code:
SalesComment.RESET;
SalesComment.SETCURRENTKEY("Document Type", "No.");
SalesComment.SETFILTER("Comment No", '%1','BF');
SalesComment.SETFILTER("No.", SalesHeader."No.");
IF SalesComment.FIND('-') THEN BEGIN
i:=0;
CLEAR(SalesCommentBF);
REPEAT
i:=i+1;
SalesCommentBF[i]:=SalesComment.Comment;
UNTIL (SalesComment.NEXT=0) OR (i=3);
END;


Und jetzt einen schönen Abend