Holen eines kompletten Datensatzes in Variable

20. Februar 2008 10:27

Hallo!!!

Ich habe eine Aufgabe und weiss noch nicht so recht, wie ich sie lösen soll...

Ich habe den Report 121. Er besteht aus den Informationen zweier Tabellen:
- Cust Ledg. Entry und
- Detailed Cust Ledg. Entry

Nun möchte ich gerne die Beschreibung des Teils des Reports, welcher aus Detailed Cust Ledg. Entry aus der Cust Ledg. Entry nehmen, da in der Detailed Cust Ledg. Entry keine aussagekräftigen Beschreibungen stehen.

Ich muss also das Feld Description mit der Belegnummer verknüpfen und wahrscheinlich in eine Variable schreiben. Danach muss ich den Text ausgeben, aber wie mache ich das. Ich habe versucht das mit dem GET Befehl zu realisieren, aber leider Wirft er mir da Fehler raus...

Vielleicht habe ich den Befehl auch in den falschen Trigger geschrieben?!

Danke für Eure Hilfe
Marc

20. Februar 2008 14:19

Ich muss also das Feld Description mit der Belegnummer verknüpfen und wahrscheinlich in eine Variable schreiben. Danach muss ich den Text ausgeben, aber wie mache ich das. Ich habe versucht das mit dem GET Befehl zu realisieren, aber leider Wirft er mir da Fehler raus...


Der Befehl GET funktioniert nur auf dem Primärschlüssel. Wahrscheinlich wurde versucht es so zu lesen: CustLEdgEntry.GET(DetailedCustledgEntry."Document No."). Der Primärschlüssel von Postentabellen ist "Entry No.", insofern müsste das Get auf die "Entry No." ausgeführt werden. In den Dateilierten Deb. Posten gibt es eine Verknüpfung zur Debitorenposten-Tabelle.

20. Februar 2008 14:52

MrBurns hat geschrieben:
Ich muss also das Feld Description mit der Belegnummer verknüpfen und wahrscheinlich in eine Variable schreiben. Danach muss ich den Text ausgeben, aber wie mache ich das. Ich habe versucht das mit dem GET Befehl zu realisieren, aber leider Wirft er mir da Fehler raus...


Der Befehl GET funktioniert nur auf dem Primärschlüssel. Wahrscheinlich wurde versucht es so zu lesen: CustLEdgEntry.GET(DetailedCustledgEntry."Document No."). Der Primärschlüssel von Postentabellen ist "Entry No.", insofern müsste das Get auf die "Entry No." ausgeführt werden. In den Dateilierten Deb. Posten gibt es eine Verknüpfung zur Debitorenposten-Tabelle.
CustLEdgEntry.GET(DetailedCustledgEntry."Document No."). Der Primärschlüssel von Postentabellen ist "Entry No.", insofern müsste das Get auf die "Entry No."


Für mich zur Erklärung:
CustLEdgEntry = Variable1 vom Typ Record
Get = der Befehl
DetailedCustledgEntry = Variable2 vom Typ Record
Dokument No. = das Feld was in Variable 2 geschrieben wird

D.h. ich hole mir den Datensatz komplett in die Variable 1 un den genauen Wert in Variable 2? Aber woher weiss er in welchen Datensatz er gucken muss, also in Cust. Ledger Entry und nicht in Customer o.ä.??

Danke für die Hilfe!
Marc

20. Februar 2008 15:38

Hallo Marc,

ehrlich gesagt, verstehe ich nicht so recht, was Du möchtest.
Geht es um eine Anpassung im Report 121, mit der Du einfach die bisherige Beschreibung (aus CustLedgEntry) durch eine andere ersetzen möchtest?
Beschreibe doch bitte nochmal genauer, um welche Anpassung es geht.

20. Februar 2008 15:40

Ein GET müsste so aussehen: CustLedgEntry.GET(DetCustTedgEntry."Cust. Ledger Entry No."), d.h. u.U. müsste eine neue Variable vom Typ Record Subtype Customer Ledger Entry deklariert werden und in der neuen Variable kann man auf das Feld "Document No." zugreifen.

Eine Alternative Implemetierung wäre sich im äußeren DataItem CustLedgEntry sich die Document No. zu merken in einer globalen Variable und diese dann in der Section des inneren DataItems auszugeben.

20. Februar 2008 17:23

Hi,

also, ich habe nun die 2 Variablen erstellt jeweils im Typ Record und als Subtype Cust Ledger Entry. Dann habe ich den Befehl unter Detailed Cust Ledg. Entry OnPostDataItem() eingetragen.

Beim durchlauf sagt er mir nun er könne keine Typenkonvertierung des Ausdrucks Code in einen Integer Wert vornehmen (!!) Habe gar keinen Integer Wert...
Verstehe ich nicht.........

Danke dennoch und Gruss
Marc

20. Februar 2008 17:38

Der Trigger "OnPostDataItem" ist vermutlich zu spät. Aber wie gesagt, ich verstehe Deine Anforderung nicht.

Vielleicht kannst Du doch noch mal genauer die gestellte Aufgabe beschreiben? An welcher Stelle im Report (ggf. mit Hardcopy aus SectionDesigner) soll die gewünschte Beschreibung angedruckt werden?

20. Februar 2008 17:56

Hi,

also, ich möchte an der eingekreisten Stelle den Text der Descrption aus der Tabelle "Cust. Ledger Entry" haben, der zur "Dokument No." passt, die neben dem Entry Type steht.
Gar nicht so einfach zu beschreiben! Bisher habe ich nur Felder hinzugefügt, die in einer Tabelle waren....

Hoffe ich konnte mich klar ausdrücken... :-?

Lieben Gruss
Marc
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

20. Februar 2008 18:57

OK.
Grundsätzlich beziehen sich wohl alle DetailedCustLedgEntry auf den "darüber stehenden" CustLedgEntry, da die beiden DataItems mit dem Property DataItemLink = "Cust. Ledger Entry No.=FIELD(Entry No.),Posting Date=FIELD(Date Filter)" verknüpft sind.
Um nun die passende Beschreibung zu bekommen, muss man wohl prüfen, welche Postenart der einzelne DetailedCustLedgEntry hat, um aus dem passenden CustLedgEntry die Beschreibung zu holen.

Diese Ermittlung geschieht im OnAfterGetRecord() des DataItems "Detailed Cust. Ledg. Entry":
Definiere dazu eine globale Textvariable für die Ausgabe des Ergebnisses und eine lokale Recordvariable (in genannten Trigger) vom Typ CustLedgEntry.

Anhand des Beispielcodes siehst Du, wie für die verschiedene Postenarten die Beschreibung ermittelt werden kann.

Code:
CASE "Entry Type" OF
  "Entry Type"::"Initial Entry":
    NeueGlobaleTextVariable := CustLedgEntry3.Description;
  "Entry Type"::Application:
    BEGIN
      LokCustLedgEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.");
      NeueGlobaleTextVariable := LokCustLedgEntry.Description;
    END;
  ELSE
END;


Was bei weiteren Postenarten zu beachten ist, kann ich leider auf die schnelle nicht sagen.

Die globale Textvariable kannst Du dann an der gewünschten Stelle (siehe Dein Hardcopy) als SourceExpr verwenden.