22. September 2011 16:04
Hallo zusammen,
ich bin zur Zeit in bischen amverzweifeln, da meine gedankliche Firewall nicht die Logik begreift, was beim Report passiert.
Ich habe einen Standard Report (Einkauf - Bestellung) etwas modifizert um das ganze für den Kunden schön zu machen. Dazu gehörte ein Briefkopf, welcher sich im Seitenkopf befindet und unter Visual Studio als sogenanntes eingebettetes Bild geführt wird. Da seine Anforderung war, diese mal auf Geschäftspapier und mal auf Blanko zu drucken, gibt in der Request Page ein Boolean, welches besagt, ob dies mit Briefkopf gedruckt wird oder ohne. Technisches Ziel ist es also mein Bild ein oder auszublenden aufgrund des Booleanwertes der Request Page. Die Variabel wird auch durch die (erste mögliche Section) hindurchgezogen auf mein Dataset. Da Felder aus dem Dataset nicht direkt in den Seitenkopf genutzt werden können, könnte ich den Trick anwenden in der ersten Tabelle die sich im Standard Report befindet (die kleine Tabelle von Einzeiler mit der Größe von 0,1cm-0,2cm welche versteckt ist) nutzen und dort ein neue Spalte hinzufügen, wo ich nun mein Booleanfeld als Value veranker. Über ReportItems!XXX.Value würde ich nun auch daran kommen, was auch recht gut funktioniert, bis der Report meint, er wird zu lang und er braucht ein logische 2. Seite. Ab da hat der Report keinen Zugriff mehr auf das Boolean und mein Ziel ist nicht erfüllt.
Also nutz ich die der Standard auch die Berichtsfunktionen. In diesem Falle Code.GetData() und Code.SetData(). Ich gebe mein Boolean also zu einem Standardfeld hinzu getrennt durch ein Charackter 177. Da alles String ist und es sonst nicht funktioniert, wandel ich mein Boolean per .ToString ebenfalls in ein String um und bekomme es schließlich in dieShared Object Variable des VBA's Code gespeichert. Da die Funktion Code.GetData grundsätzlich String auch zurück gibt, lasse ich mir mein Boolean testweise mal anzeigen.
Request Page --> Textbox Output
True ist "True"
False ist "False"
Diese Werte lassen sich auch mittels der VBA Funktion CBool() wunderbar in Booleans zurück verwandeln und auch ein NOT macht keine Probleme. Das Ergebnis ist das selbe :) einziger Fehlschlag den ich erleide ist, dass wenn ich es in meinem Hidden Property als Ausdruck des Bildes nutze, nur eins zu geben scheint.
Beispiel:
Request Page Boolean = True
Textbox als auch Hidden Value Ausdruck = "=CBool(Code.GetData(xx, x))"
Textbox steht "True"
Bild ist sichtbar
Hidden = Verstecken, wenn True dann sollte es nicht sichtbar sein
1. Sache die mir schleierhaft erscheint.
Um den ganzen aber noch die Krönung zu geben bin ich hingegangen und haben im Hidden Property doch wieder auf ReportItems!XXX.Value zurück gegriffen. Diesmal aber auf meine Textbox, welche sich im Seitkopf befindet.
Request Page Boolean = True
Textbox Ausdruck = "=CBool(Code.GetData(xx, x))"
Hidden Ausdruck = "=ReportItems!Textbox.Value"
Textbox steht False
Bild ist sichtbar
sobald ich den Hidden Ausdruck rausnehme ändert sich das Boolean wieder. Kann mir das bitte einer erklären? Der SSRS möchte nicht mit mir sprechen und scheint jeglichen Dienst zu verweigern. Ich hab die Befürchtung es hasst mich. Aber mal Spass beiseite, das ist nicht logisch in meinen Augen und den Kunden auf Endlospapier drucken zu lassen ist keine Lösung, nur weil der SSRS streikt.
Danke schonmal für geistreiche ergüsse.
Mit freundlichen Grüßen
iPeon
Zuletzt geändert von iPeon am 23. September 2011 11:06, insgesamt 1-mal geändert.