[Gelöst] - [RTC] - RDLC fehlendes Item auf Seite > 1

14. Juni 2013 17:04

Hi,

nach der Auftragsbestätigung soll ich nun den Angebot Report nach RDLC migrieren, auf Basis der AU kein großes Problem... dachte ich...

Wir haben im Angebot die Option "Angebot ohne Beträge" , welches wir rausgeben als "Anfragebestätigung" , sprich, der Kunde fragt Artikel an, um ein Angebot zu erhalten, über den WebShop soll nach der Anfrage eine "Anfragebestätigung" verschickt werden, ohne Preise.

Im CC Report habe ich im RequestForm die Option "Angebot Ohne Beträge", diese Option habe ich in der Request Page übernommen.

Das Feld lasse ich mir im Textkörper andrucken (zu Kontrollzwecken):

Code:
=Fields!WithoutPrices.Value


Mit dem Feld führe ich die Visibility Prüfung aus für die Artikelzeilen Überschrift:

Code:
=IIF(Fields!ArtikelCaption.Value <> "",IIF(Fields!WithoutPrices.Value
,false,true),true)


Ähnliche Abfrage für die Artikelzeilen, ich habe für die Option "Ohne Beträge" eine extra zeile geschaffen (bei der nur Beschreibung, und Menge vorkommt) , die ganzen Summenfelder werden auch korrekt angezeigt oder versteckt... Soweit gut.

Nun habe ich im Kopf und Fuß noch das Feld mit dem Übertrag. Da wollte ich ganz einfach "Qucik & Dirty" ein weißes Textfeld über den Übertrag legen, und wenn Ohne Beträge angekreuzt ist, soll es gedruckt werden und somit den Übertrag in den hintergrund drängen, ein passenden Ausdruck für die Visibility Eigenschaft habe ich hier nicht gefunden um es mit mein Übertrag Feld zu kombinieren.

Naja, dann ist mir aufegfallen, das mein Code für die erste Seite passt , aber ab Seite 2 hat Fields!WithoutPrices.Value keinen Wert mehr, also weder true noch false, es ist weg, somit greift ab Seite 2 auch nicht mehr meine Visibility Prüfung für die weiße Leere Textbox.

Was könnte ich falsch gemacht haben?

Danke
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von elTorito am 18. Juni 2013 15:33, insgesamt 1-mal geändert.

Re: [RTC] - RDLC fehlendes Item auf Seite > 1

14. Juni 2013 19:33

elTorito hat geschrieben:
Code:
=IIF(Fields!ArtikelCaption.Value <> "",IIF(Fields!WithoutPrices.Value
,false,true),true)

Tut zwar nichts zur eigentlichen Sache, aber ich finde Ausdrücke wie oben sind sehr schwer zu lesen und zu verstehen.
Ich setze den Hidden-Ausdruck immer so, dass er die Frage beantwortet: Wann/unter welchen Bedingungen soll ausgeblendet werden?
Würde es z.B. nur davon abhängen, ob Fields!ArtikelCaption.Value gefüllt ist oder nicht, würde ich schreiben:
Code:
=Fields!ArtikelCaption.Value = ""

"Blende aus, wenn ArtikelCaption leer ist."

Nun aber zur eigentlichen Frage:

Naja, dann ist mir aufegfallen, das mein Code für die erste Seite passt , aber ab Seite 2 hat Fields!WithoutPrices.Value keinen Wert mehr, also weder true noch false, es ist weg, somit greift ab Seite 2 auch nicht mehr meine Visibility Prüfung für die weiße Leere Textbox.

Was könnte ich falsch gemacht haben?

Hast du dich schon einmal gefragt, warum die Standardreports 205 & Co. im Layout-Kopf nicht mit ReportItems arbeiten? Wäre doch viel lesbarer. Der Grund ist genau der, den du herausgefunden hast: Nach einem Seitenumbruch sind die Werte leer. Das liegt daran, dass auf der zweiten Seite die Textbox, auf die du per ReportItems referenzierst, selbst nicht mehr gedruckt wird (die hat schon auf Seite 1 draufgepasst und wird auch nicht wiederholt).
Lösung ist entweder, die Textbox dort einzubetten, wo sie auf jeder Seite wiederholt wird (ist nicht immer möglich), oder du arbeitest - wie die Standardreports - mit GetData/SetData.

Re: [RTC] - RDLC fehlendes Item auf Seite > 1

17. Juni 2013 08:26

Guten MOrgen Natalie,

Natalie hat geschrieben:aber ich finde Ausdrücke wie oben sind sehr schwer zu lesen und zu verstehen.
Ich setze den Hidden-Ausdruck immer so, dass er die Frage beantwortet: Wann/unter welchen Bedingungen soll ausgeblendet werden?
Würde es z.B. nur davon abhängen, ob Fields!ArtikelCaption.Value gefüllt ist oder nicht, würde ich schreiben:
Code:
=Fields!ArtikelCaption.Value = ""

"Blende aus, wenn ArtikelCaption leer ist."

Im Obigen Fall soll aber nur ausgeblendet werden : "Wenn Artikelcaption Leer ist, nur ausblenden wenn WithoutPrice Nicht vorhanden ist", das diese Syntax schwer zu lesen ist, habe ich gemerkt als ich folgendes Konstrukt erstellt habe (und nicht nur schwer zu lesen):

Code:
=IIF(Fields!WithoutPrices.Value=false,true,
IIF(
Fields!Sales_Line__Setcode.Value <> "",
  IIF(Fields!Sales_Line___Printing_Option_.Value = "hidden",
    true,
        IIF((Fields!SalesLine_Type.Value <> " ") And (Fields!SalesLine__Line_No__.Value >= 0) And (Not Fields!SalesLine__alternative_position_.Value),
                false,
                true
  )
  ),
  IIF((Fields!SalesLine_Type.Value <> " ") And (Fields!SalesLine__Line_No__.Value >= 0) And (Not Fields!SalesLine__alternative_position_.Value),
    false,
    true
  )
)
)

:oops: :oops: :roll:

Natalie hat geschrieben:Lösung ist entweder, die Textbox dort einzubetten, wo sie auf jeder Seite wiederholt wird (ist nicht immer möglich), oder du arbeitest - wie die Standardreports - mit GetData/SetData.


Hmm. Ok. Da sich mein Übertrag im Footer befindet, und die Zeilen nicht auf allen sich wiederholenden Seiten gedruckt werden, also mit GetData, SetData.

Schon fummelig mit den NAV RDLC Reports ... Aber klappt schon viel besser als beim ersten.

Vielen Dank und schönen Wochenstart

Re: [RTC] - RDLC fehlendes Item auf Seite > 1

17. Juni 2013 08:43

elTorito hat geschrieben:Hmm. Ok. Da sich mein Übertrag im Footer befindet, und die Zeilen nicht auf allen sich wiederholenden Seiten gedruckt werden, also mit GetData, SetData.

Oh, da fällt mir noch ein (bevor dich GetData/SetData zur Verzweiflung treiben könnten), wie du dein ReportItems vielleicht doch nutzen kannst:
Versuch es zunächst mit einer Liste im Textkörper, in welcher alle übrigen Elemente eingefügt werden. Guck dir die Eigenschaften und insbesondere Gruppierung dieser Liste aus dem Standardreport ab.
Ganz oben links (innerhalb der Liste!) platzierst du eine neue Tabelle mit einer Zeile und einer Spalte. Die Zelle (nicht die Zeile und nicht die Spalte!) setzt du auf Hidden.
In die Zelle trägst du den Ausdruck ein, auf welchen du mit ReportItems zugreifen möchtest.
Auch dieses Prinzip stammt aus dem Standardreport.
GetData/SetData erlaubt zusätzlich, dass wir in einer Zelle nicht eine Feld, sondern beliebig viele (aneinandergekettet) unterbringen.

Re: [RTC] - RDLC fehlendes Item auf Seite > 1

17. Juni 2013 11:34

Hallo Natalie,
Oh, da fällt mir noch ein (bevor dich GetData/SetData zur Verzweiflung treiben könnten), wie du dein ReportItems vielleicht doch nutzen kannst:
Versuch es zunächst mit einer Liste im Textkörper, in welcher alle übrigen Elemente eingefügt werden. Guck dir die Eigenschaften und insbesondere Gruppierung dieser Liste aus dem Standardreport ab.
Ganz oben links (innerhalb der Liste!) platzierst du eine neue Tabelle mit einer Zeile und einer Spalte. Die Zelle (nicht die Zeile und nicht die Spalte!) setzt du auf Hidden.
In die Zelle trägst du den Ausdruck ein, auf welchen du mit ReportItems zugreifen möchtest.
Auch dieses Prinzip stammt aus dem Standardreport.
GetData/SetData erlaubt zusätzlich, dass wir in einer Zelle nicht eine Feld, sondern beliebig viele (aneinandergekettet) unterbringen.


Die "Liste" Mit allen Elementen habe ich, oben in der linken Ecke der liste habe ich ein Rechteck namens "HiddenCode", welches eine Tabelle für die GetData Sachen hat (Rot hinterlegt), daneben habe ich eine neue Tabelle erstellt für mein Feld "WithoutPrices".

Wird aber so auch nur auf der ersten Seite angedruckt. Habe nun die Tabellen aus den Rechteck heraus direkt in die Liste, das gleiche. Hmm.
Also wohl doch mal mit GetData versuchen :)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [RTC] - RDLC fehlendes Item auf Seite > 1

17. Juni 2013 11:39

elTorito hat geschrieben:oben in der linken Ecke der liste habe ich ein Rechteck namens "HiddenCode", welches eine Tabelle für die GetData Sachen hat (Rot hinterlegt), daneben habe ich eine neue Tabelle erstellt für mein Feld "WithoutPrices".

OK, wenn du die Tabelle schon hast, kannst du auch einfach eine neue Spalte hinzufügen, statt eine neue Tabelle zu erstellen. Das Vorgehen ist weniger anfällig für Fehler.
Prüfe aber zur Sicherheit, ob diese Tabelle als Parent (ist eine Eigenschaft ) wirklich deine Liste hat und ob die Tabelleneigenschaften identisch mit der Standardvorlage sind.

Re: [RTC] - RDLC fehlendes Item auf Seite > 1

18. Juni 2013 13:23

Hallo Natalie,
Natalie hat geschrieben:OK, wenn du die Tabelle schon hast, kannst du auch einfach eine neue Spalte hinzufügen, statt eine neue Tabelle zu erstellen. Das Vorgehen ist weniger anfällig für Fehler.
Prüfe aber zur Sicherheit, ob diese Tabelle als Parent (ist eine Eigenschaft ) wirklich deine Liste hat und ob die Tabelleneigenschaften identisch mit der Standardvorlage sind.


Die Tabelle hat als Parent die Liste (siehe Anhang) , habe die Spalte hinzugefügt, das Feld auf Hidden, als Ausdruck :

Code:
=Fields!ShowPrices.Value

(Hab die Variable mal umbenannt , statt Without Prices, zum besseren Verständnis :)

Im Header/Footer dann ein Textfeld mit folgenden Ausdruck:
Code:
=ReportItems!ShowPrices.Value


Hat nichts gebracht. :-(

Dann bin ich hingegangen und habe bei Berichtseigenschaften -> Code folgendes geändert:

* Shared Data8 as Object hinzugefügt.
* Die FUnktion GetData um:
if Group = 8 then
Return Cstr(Choose(Num, Split(Cstr(Data8),Chr(177))))
End If

ergänzt
* Die Funktion SetData um :
If Group = 8 and NewData <> "" Then
Data8 = NewData
End If

ergänzt.

Im Seitenkopf dann eine Hidden Textbox mit folgenden Code:
Code:
=Code.SetData(ReportItems!ShowPrices.Value,8)


Die Ausgabe wollte ich dann mit :
Code:
=Code.GetData(1,8)


gestalten. Allerdings kommt hierbei gar keine Ausgabe, auch nicht mehr auf der ersten Seite.

Hab auch hiernochmal gelesen, aber ich denke ich hab alles richtig gemacht. :cry:

Danke
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [RTC] - RDLC fehlendes Item auf Seite > 1

18. Juni 2013 14:56

elTorito hat geschrieben:Die Tabelle hat als Parent die Liste (siehe Anhang) , habe die Spalte hinzugefügt, das Feld auf Hidden, als Ausdruck :

Code: Alles auswählen=Fields!ShowPrices.Value

Das Feld selbst heißt dann hoffentlich aber auch ShowPrices? Sonst kann das spätere ReportItems!ShowPrices nicht funktionieren.

elTorito hat geschrieben:Allerdings kommt hierbei gar keine Ausgabe, auch nicht mehr auf der ersten Seite.

Jetzt kommt Gemeinheit Nr. 2: GetData/SetData mag keine nummerischen Werte und Booleans.

Mach mal folgendes:
1. In der Textbox namens ShowPrices, gib als Ausdruck an:
Code:
=CStr(Fields!ShowPrices.Value)
Wir konvertieren den Boolean in Text.

2. Um ihn beim späteren Aufruf (GetData) wieder zum Boolean zu machen, verwende CBool(...)

Re: [RTC] - RDLC fehlendes Item auf Seite > 1

18. Juni 2013 14:59

elTorito hat geschrieben:Die Ausgabe wollte ich dann mit :
Code:
=Code.GetData(1,8)

gestalten. Allerdings kommt hierbei gar keine Ausgabe, auch nicht mehr auf der ersten Seite.


Und hier die Lösung.

Mein Hidden Code Textfeld bekommt folgenden Ausdruck:
Code:
=CStr(Fields!ShowPrices.Value)


Und mit
Code:
=CBool(Code.GetData(1,8))
bekomme ich dann auch die Ausgabe und kann damit arbeiten.

Danke.

EDIT: Natalie war schneller :)
Vielen Dank dir nochmal extra.

Re:

18. Juni 2013 15:33

Natalie hat geschrieben:Bitte auf gelöst setzen.


Na, das weiß ich doch ;) Keine Hektik, bin auf der Arbeit ;-)

Bin gerade nur noch am schauen ob das ganze nicht doch noch irgendwo Problematisch sein könnte.
Bevor ich das Feld in der Fußzeile/Seitenkopf überprüfen musste hatte der Rest ja auch schon funktioniert.

Aber ich glaub das passt nun :)

Sonnigen Gruß an alle