Laden...

ReportViewer - Leere Felder nicht anzeigen

Erstellt von tristar vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.628 Views
T
tristar Themenstarter:in
98 Beiträge seit 2016
vor 6 Jahren
ReportViewer - Leere Felder nicht anzeigen

Hallo,

wie kann ich es bei der Erstellung von Berichten umsetzen, dass wenn ich ein Feld (=Fields!Bemerkung.Value) einfüge - falls dieses leer ist - auch keine Leerzeile eingefügt wird?

W
955 Beiträge seit 2010
vor 6 Jahren

... indem man vorher die leeren Objekte vor der Verwendung rausfiltert?

T
tristar Themenstarter:in
98 Beiträge seit 2016
vor 6 Jahren

Hm, ok. Nur wie mache ich das?
Oder zumindest ein Stichwort, wonach ich suchen muss?

Mein Problem dabei ist folgendes:
Die Tablix hat 4 Spalten. In der ersten Spalte gebe ich eine Menge sowie eine Restmenge an.
D.h. wenn die Restmenge = 0 ist, dann soll weder der Text Restmenge noch eine Zahl auftauchen.

Und in der 3 Spalte sind die Felder Bezeichnung, Vertragsnummer und Bemerkung. Ist eine Vertragsnummer oder eine Bemekrung vorhanden, soll diese eben angezeigt werden oder nicht.

Der einizige Weg, den ich bisher zum ausblenden gefunden habe, war über die Gruppeneigenschaft.
Aber das ist sicher falsch. Denn wenn ich dort für die Restmenge.Value / Operator <> / Wert 0 eintrage, dann wird meine gesamte Zeile ausgeblendet.
Jedoch sollen natürlich alle anderen Werte angezeigt werden .... wie kann ich dies also auf nur ein Feld beziehen?

5.657 Beiträge seit 2006
vor 6 Jahren

Hi tristar,

wie witte schon gesagt hat, kannst du die Objekte auch schon vor der Reportgenerierung filtern und anpassen. Dafür kannst du Linq verwenden, oder einfache Schleifen mit beliebigen Bedingungen.

Weeks of programming can save you hours of planning

T
314 Beiträge seit 2013
vor 6 Jahren

Jede Spalte/Zeile/Zelle hat eine Visibility (?) Eigenschaft. Dort kannst Du eine Expression einfügen, welche entsprechend das Feld ein-oder ausblendet.

T
tristar Themenstarter:in
98 Beiträge seit 2016
vor 6 Jahren

Sorry, irgendwie steh ich echt auf dem Schlauch.
Ich habe es auch schon mit einem Ausdruck für ein Feld probiert:

=IIF(First(Fields!Restmenge.Value)=0, true, false)

Nun steht allerdings immer TRUE oder FALSE in meinem Feld und keine Werte bzw nicht ausgeblendet??

T
tristar Themenstarter:in
98 Beiträge seit 2016
vor 6 Jahren

Hallo,
leider bin ich immer noch nicht weiter gekommen. 😦
Beim Suchen bin ich auf diesen Foren-Eintrag gestossen, welcher wie von Euch beschrieben das selbe Vorgehen empfielt. http://www.mycsharp.de/wbb2/thread.php?threadid=112540

Leider verstehe ich nicht, wie ich einzelne Daten dan "weg lassen" kann?!?!

Ich habe Daten für einen Lieferschein. Diese Daten lese ich in eine List<Lieferschein> ein und diese übergebe ich dem Report.

Nun kann es sein, dass eine Position nicht vollständig beliefert werden kann und eine Restmenge offen bleibt. Diese Restmenge würde ich dann eben gerne in der Zelle der Lieferanzahl zusätzlich anzeigen wollen.
Ebenso gibt es zu manchen Positionen Bemerkungen.

Prinzipiell funktioniert es ja auch ... nur habe ich die folgenden beiden Probleme:
-Für die Restmenge schreibe ich auch den Text "Restmenge" in die Zelle. Ist die Menge nun 0, wie kann ich verhindern, dass der Text angezeigt wird (also nur dieser Text, nicht die eigentliche Liefermenge).

-Bemerkung: Wir kann ich verhindern, dass für die Bemerkung eine Zeile "reserviert" wird. So ist meine Zeile teilweise extrem hoch, obwohl kein Text drin steht.

Hoffe ihr könnte mir helfen - bin so langsam echt am Verzweifeln! Danke!

5.657 Beiträge seit 2006
vor 6 Jahren

Leider verstehe ich nicht, wie ich einzelne Daten dan "weg lassen" kann?!?!

Lies dir doch einfach erstmal die Antworten durch, die dir bereits gegeben wurden. Da waren doch einige Ideen dabei, die du noch nicht ausprobiert hast. Falls du damit Probleme hast, mußt du schonmal konkreter nachfragen und mal zeigen, was du schon ausprobiert hast.

Weeks of programming can save you hours of planning

57 Beiträge seit 2012
vor 6 Jahren
0 und NULL sind nicht das gleiche

bei einem Value-Vergleich musst du entweder .Length() mit 0 vergleichen oder du vergleichst mit NULL. Sonst trifft deine Bedingung nie zu

OO gibts seit Platon - hatte der auch C#?

T
tristar Themenstarter:in
98 Beiträge seit 2016
vor 6 Jahren

Ich habe es nun so gelöst, dass ich für die entsprechenden Daten eine neue Zeile erstelle. Je nachdem ob Daten enthalten sind, verwende ich einen Ausdruck, um die Zeile anzuzeigen oder eben nicht.