(gelöst) =code.GetData()

15. Juli 2010 07:19

Hallo zusammen,

seit ein paar Tagen versuche ich mich nun mit ersten Gehversuchen am Reportdesign.
Zum Versuch habe ich mir den Report der Einkaufsanfrage 404 genommen und hänge nun an dem Problem, das im Header nur codes und keine fields verwendet werden können. Wie kann ich ermitteln was sich hinter den Zeilen wie z.B. =code.GetData(15,2) verbirgt?
Wenn möglich bitte eine genaue Erklärung da ich Neuling bin. Vielen Dank!

Verschiedene Foren und Blog Einträge die ich bereits gefunden habe, haben mir leider nicht weiter geholfen.


Was genau macht die Funktion unter Berichte, .... im Web Developer? Wie kann ich hier erkennen welcher Zahlenkombination benötigt wird?

Public Function GetData(Num as Integer, Group as integer) as Object
if Group = 1 then
Return Cstr(Choose(Num, Split(Cstr(Data1),Chr(177))))
End If

if Group = 2 then
Return Cstr(Choose(Num, Split(Cstr(Data2),Chr(177))))
End If
End Function

MfG
Fuige
Zuletzt geändert von fuige am 27. Oktober 2010 17:53, insgesamt 1-mal geändert.

Re: =code.GetData()

15. Juli 2010 08:28

Hast du schon die Forenhilfe zu GetData bemüht?
Schau mal: viewtopic.php?f=40&t=6628

Re: =code.GetData()

15. Juli 2010 08:34

Hi!

Den Beitrag hatte ich bereits gefunden. Komme damit aber nicht wirklich zurecht.
Was ich halt nicht verstehe ist, mit welcher Zahlenkombi z.B. =code.GetData(15,2) ich auf welchen Eintrag zugreife. Für was steht die 15 und für was die 2????

Gruß
Fuige

Re: =code.GetData()

15. Juli 2010 08:50

fuige hat geschrieben:Für was steht die 15 und für was die 2????

Willkür :-), gesetzt durch SetData.
Natalie hat geschrieben:Aber wo???
Ah, direkt darüber, in diesen roten Boxen ganz oben im Seitenkopf, z.B.:
Code:
=Code.SetData(ReportItems!CustAddr.Value,1)

In diesem Beispiel wird also die 1 gesetzt.
Da muss man sich wohl oder übel durch die SetDatas duchfriemeln und vielleicht in eine Extra-Datei schreiben und daneben halten - der Übersichtlichkeit wegen.

Schau mal in den letzten Beitrag (mit Link) des Beitrages, den ich eben genannt hatte - dort wirds auch noch einmal erklärt bzw. mit Screenshots verdeutlicht.

Re: =code.GetData()

15. Juli 2010 09:53

Diesen Blog Eintrag hatte ich auch bereits gelesen. Leider auch ohne es wirklich zu verstehen.
So langsam lichtet sich aber das Dunkel. Bräuchte aber noch ne Menge Hilfe da viele Fragen bzgl. wo und wie hinterlegen.

Im Anhang mal zwei Screenshots.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: =code.GetData()

15. Juli 2010 11:33

Jipi! Bin weiter gekommen.
Nun ist die nächste Frage, wie bekomme ich SalesPurchPerson_Phone No. dem Dataset zugeordnet, um es im Layout verwenden zu können?

Ich war der Meinung das alle Felder die ich im Section Designer hinterlegt habe zur Verfügung stehen. Das Telefonnummern Feld ist ebenfalls hinterlegt, steht im Layout aber nicht als Auswahlfeld zur Verfügung. ???

Re: =code.GetData()

15. Juli 2010 12:01

Guck im Section Designer (also klassicher Report) nach, was in der dazu gehörigen Textbox als Eigenschaft DataSetFieldName hinterlegt ist - danach musst du im RTC-Report suchen oder aber in der Textbox einen besseren Namen für DataSetFieldName vergeben.

Re: =code.GetData()

15. Juli 2010 15:24

In den Sections habe ich unter DataSetFieldName die Bezeichnung SalesPurchPerson.Name eingegeben.
Im DataSet des Layout kann ich diese aber nirgends finden. Gibt es noch irgendetwas was ich einstellen muss, um den Eintrag aus dem DataSet selektieren zu können?

Vielen, vielen Dank für Deine Geduld!!!!

Re: =code.GetData()

15. Juli 2010 16:44

fuige hat geschrieben:In den Sections habe ich unter DataSetFieldName die Bezeichnung SalesPurchPerson.Name eingegeben.

Nimm mal einen Namen ohne Punkt. Der Standard ersetzt die an dieser Stelle nicht ohne Grund durch Unterstriche.

Re: =code.GetData()

16. Juli 2010 07:09

Guten Morgen!

Das Abändern auf einen Unterstrich brachte leider keinerlei Veränderung.
Was ich seltsam finde, ist das bei SourceExpr wenn ich den Eintrag über ... selektiere keine "" vor und hinter dem Namen erscheinen. Bei allen anderen Feldern werden diese automatisch gesetzt. (Siehe Anhang)

Mein zweites Problem ist, das im RTC die Spaltenüberschriften nicht angezeigt werden. Hier muss ich soweit ich's verstanden habe diese doch nur aus dem Dataset ins entsprechende Feld ziehen. ???? (Siehe Anhang)


Wünsche allen einen schönen und sonnigen Freitag!


Gruß
Fuige
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: =code.GetData()

16. Juli 2010 08:24

fuige hat geschrieben:Was ich seltsam finde, ist das bei SourceExpr wenn ich den Eintrag über ... selektiere keine "" vor und hinter dem Namen erscheinen. Bei allen anderen Feldern werden diese automatisch gesetzt. (Siehe Anhang)

" " werden nur dann benötigt, wenn eine Variable oder ein Feldname ein Leerzeichen oder bestimmte Sonderzeichen enthält. Das Programm würde sonst dies nicht als eine Einheit sehen können.
SalesPurchPurson ist ein durchgängiges Wort -> Keine ""
Name ist ein durchgängiges Wort -> Keine ""
Anders würde es also schon bei Feld Name 2 aussehen: SalesPurchPurson."Name 2".

Mein zweites Problem ist, das im RTC die Spaltenüberschriften nicht angezeigt werden. Hier muss ich soweit ich's verstanden habe diese doch nur aus dem Dataset ins entsprechende Feld ziehen. ???? (Siehe Anhang)

Hm, sieht auf den ersten Blick alles richtig aus. Was ist mit den anderen Überschriften der gleichen Secton - werden auch die nicht angezeigt?

Re: =code.GetData()

16. Juli 2010 08:36

Hi!

Im C´lassic Client werden alle Überschriften angezeigt. Im RTC keine einzige.
Ich hab auch mal ganz andere Daten ins Feld der ersten Spaltenüberschrift gezogen. Wird aber ebenfalls nix angezeigt.

Re: =code.GetData()

16. Juli 2010 10:06

Das mit der Namensanzeige habe ich nun hinbekommen, war ein Fehler von mir, da ich in den Propperties ein paar Dreher drin hatte wie z.B. Caption und CaptionML bei SalesPurchPerson_Name ausgefüllt.
SalesPurchPerson_Name wird nun zur Auswahl im DataSet angezeigt.

Das Problem mit den Spaltenüberschriften konnte ich aber bisher noch nicht lösen.
Jemand ne Idee worans liegen kann?

Re: =code.GetData()

16. Juli 2010 10:09

Vergleiche bitte, ob du im RTC-Layout wirklich das Feld in den Kopfbereich gezogen hast, das im CC-Layout im Label (also das Überschriftselement) als DataSetFieldName eintragen ist.

Re: =code.GetData()

16. Juli 2010 10:22

Stimmt an beiden Stellen vollkommen überein. Nochmal alles geprüft.

Wie es scheint werden die benötigten Daten nicht ermittelt. Ziehe ich aus dem DataSet z.B. CompanyAddr_1_.Value in die Tabelle, so wird etwas ausgegeben.

Wie kann ich prüfen ob Daten ermittelt werden?

Re: =code.GetData()

16. Juli 2010 10:28

Dann denke ich, dass der RTC-Group-Header (deine Captions stehen nämlich nicht im Table-Header) komplett auf Visible = No steht.
Markiere die gesamte Zeile (auf die überdachte 1 links klicken) und schau mal in den Eigenschaften nach.

Re: =code.GetData()

16. Juli 2010 10:53

Könntest Du mir evtl. etwas genauer erklären wo ich nachsehen soll?
Alles was ich finde steht unter Visibility Hidden=False.
Im Anhang nochmal ein Bildschen zum besseren Verständnis und zum erklären.

Die CompanyAddr_2 wird ausgegeben. Überschrift der Spalte 1 nicht.


Nochmal vielen, vielen Dank für Deine Ausdauer!!!!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: =code.GetData()

16. Juli 2010 11:07

Deine PDFs widersprechen sich - welche Überschrifts-Zeile im RTC wird denn nun nicht angezeigt?

Re: =code.GetData()

16. Juli 2010 11:22

Sorry!

Die grüne Zeie habe ich zum testen eingesetzt. Die orangene war bereits im Ausgangsreport angelegt und soll später auch verwendet werden.
Die CompanyAdrr.... in der grünen Zeile wird nun gedruckt. Alles andere, sowohl in der grünen als auch in der orangen Zeile wird nicht ausgegeben.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: =code.GetData()

16. Juli 2010 11:52

So wirds schon deutlicher :-)

Also erst mal ein Wort zu Symbolen in jeder Zeile ganz links, von unten angefangen:
Der kasten aus drei horizontalen Strichen bedeutet: Hier werden Zeileninhalte einer Tabelle ausgegeben. Vergleichbar mit der Body-Section im CC.
Dort, wo überdachte Zahlen stehen, sind Gruppen-Header gemeint (CC: Group-Header-Section).
Das, was links wie eine kleine Tabelle aussieht, ist der "Gesamt-Header" (CC: Header-Section).

Ruf den RTC-Report in der Seitenvorschau auf.
Arbeitest du mit SP1?
  • Klicke dann oben rechts auf das Fragezeichen, dort auf "Info zu diesem Bericht".
  • Wenn nicht, drücke Strg+Shift+Alt+F12.

Nun siehst du, wie die Quelltabelle für den RTC-Report aussieht. Wenn du dir z.B. die Spalte "CompanyAddr_2_" ansiehst, ist das Feld in der ersten Zeile vermutlich leer. Deswegen wird es auch nicht angedruckt: First(dein Feld) liefert halt nichts.
Vermutlich gilt das Gleiche für die orangene Zeile.

Re: =code.GetData()

19. Juli 2010 07:14

Guten Morgen!

Kann mich erst jetzt wieder weiter mit der Problematik befassen.

Wieso liefert denn dann aber der Classic Client die Informationen? Muss ich noch ein wenig Code schreiben? und wenn ja, könntest Du mir sagen was und wo? Bin wie bereits gesagt erst ganz am Anfang mich mit NAV Reports zu befassen.

Vielen Dank!

Gruß
Fuige

Re: =code.GetData()

19. Juli 2010 09:29

fuige hat geschrieben:Wieso liefert denn dann aber der Classic Client die Informationen? Muss ich noch ein wenig Code schreiben? und wenn ja, könntest Du mir sagen was und wo? Bin wie bereits gesagt erst ganz am Anfang mich mit NAV Reports zu befassen.

Bitte befasse dich zunächst mit meinem letzten Beitrag. Er gibt uns Hinweise über die Datenstruktur, die der CC dem RTC-Client übergibt.

Re: =code.GetData()

20. Juli 2010 07:20

Hallo!

Vielen Dank für die Erklärung bzgl. Header, Gruppen Header, Datenbankfeldern, usw.
Dennoch ist mir immer noch nicht klar, wie ich bei der oprangen Zeile, die ein Gruppen Header ist die Caption Werte der Sections anzeigen lassen kann. Einfach einen Text "TEST" im Layout hineinschreiben ist sicherlich nicht die zu bevorzugende Lösung.
Da es sich bei =Fields!Purchase_Line___No__Caption.Value um ein Datenbank Feld handelt, ist mir nun klar weshalb es weiter oben nicht ausgegeben werden kann. Siehe rosanes Feld. Hier funktionierts!

Für ein Verständnis ist es so, das ich in den Sections mit Caption und CaptionML die Bezeichnungen anlege und über DataSetFieldName diese ins Layout übernehmen kann. Leider nicht. Liegt das daran, das es sich um den GruppenHeader handelt wo ich es einfügen möchte?

Komme bisher leider noch immer nicht wirklich weiter.

Über Infos zu diesem Bericht wird wie Du schon vermutet hast, nicht immer ein Wert für die benötigten Felder übergeben. Weshalb nur bei Zeile 3 und 4 etwas übergeben wird kann ich bisher aber nicht wirklich nachvollziehen.

Könntest Du mir bitte nochmal etwas weiterhelfen? Danke!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: =code.GetData()

20. Juli 2010 09:53

fuige hat geschrieben:Für ein Verständnis ist es so, das ich in den Sections mit Caption und CaptionML die Bezeichnungen anlege und über DataSetFieldName diese ins Layout übernehmen kann.

Stimmt genau.
Leider nicht. Liegt das daran, das es sich um den GruppenHeader handelt wo ich es einfügen möchte?
Jein. Wenn du ja einen Blick in das Dataset wirfst, wirst du sehen, dass das Feld nicht in allen Zeilen gefüllt ist. Speziell im ersten Datensatz ist das Feld leer, aber genau das verwendest du mittels First(Fields!...).

Über Infos zu diesem Bericht wird wie Du schon vermutet hast, nicht immer ein Wert für die benötigten Felder übergeben. Weshalb nur bei Zeile 3 und 4 etwas übergeben wird kann ich bisher aber nicht wirklich nachvollziehen.

Ganz einfach:
Die Schwierigkeit besteht für NAV darin, dass für ALLES, egal ob allg. Reportsinfos (wie z.B. die Reportüberschrift), Kopf- oder Zeilendaten, also im Grunde genommen auch Daten, die gar nicht zusammen gehören)an genau eine einzige Tabelle an den RTC übergeben werden. Diese Tabelle muss zwangsläufig für alles ein Feld bereit halten.
Die Sections im CC werden nun von oben nach unten abgearbeitet.
Obs genau so funktioniert, weiß ich nicht, aber ungefährt wirds stimmen: Für jede Section wird in RTC-Tabelle ein neuer Datensatz angelegt.
Es wird zunächst die Header-Section mit den Report-Infos gedruckt: Dabei werden nur die hierfür relevanten Felder der RTC-Tabelle gefüllt. Alle anderen bleiben leer.
Der CC gelangt nun vielleicht zu der Header-Section, die die Feldüberschriften enthält: Neuer RTC-Datensatz, nur gefüllt mit den Überschriften. Rest leer.
Dann kommt vielleicht eine Body-Section -> nur Body-Daten landen im neuen Datensatz.
usw.
Schau dir noch einmal die Tabelle komplett an, dann kannst du dieses Muster erkennen.

Der Trick besteht jetzt darin, im RTC-Report Filter auf das Tabellen-Control zu setzen. Habs leider nicht vor Augen, wie genau du die Maske hierfür aufrufst. Es ist aber nicht das Eigenschaftsfenster rechts in deinen Screenshots gemeint.
Dort, wo du Zeilendaten andrucken möchtest, musst du einen Filter setzen, der besagt: "Wo Zeileninformationen drin" (also Kopfdaten usw. ausfiltern).
Vorschlag: Wo Purch__Line_No__Caption <> leer.
Dann liefert auch First(Fields!...Value) wieder einen Spaltenüberschrift im RTC-Report.

Re: =code.GetData()

21. Juli 2010 10:29

Guten Morgen!

Ich versteh's einfach nicht. Im Anhang ein Screenshot bzgl. des Filters auf die Tabelle.
Ist das die Stelle die Du meintest?

Gruß
Fuige
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.