Ein- und Ausblenden von Rahmen in RDLC-Reports

Ich hatte folgende Anforderung. In einem Report, in welchem Detailzeilen bereits über ein anderes Element ein- und ausgeblendet werden konnten (Plus/Minus-Knopf) sollte eine Summenzeile rein. Diese sollte, wenn die Details ausgeklappt waren, oben mit einer Rahmenlinie abgesetzt sein, aber keine Rahmenlinie haben, wenn der Detailbereich eingeklappt war.

Nun, leider kann man zwar den Rahmentyp dynamisch durch einen Ausdruck anpassen, aber ob nun der Detailbereich ein- oder ausgeklappt ist, lässt sich so nicht feststellen.

Die Lösung hierfür ist: Duplizieren der Summenzeile.

Man hat nun zwei Zeilen mit demselben Inhalt. Die erste Zeile designt man so, wie sie im ausgeklappten Zustand erscheinen soll, die zweite, so wie sie im eingeklappten Zustand erscheinen soll.

Nun wählt man durch Rechtsklick für jede Zeile den Menüpunkt „Row Visibility“. Je nach Anfangszustand stellt man folgende Parameter für jede der zwei Zeilen ein:

Die Zeile, die anfangs sichtbar sein soll, erhält den Zustand „Show“ und „Display can be toggled by this report item“ mit dem entsprechenden Feld, welches auch die Details ein- und ausblendet.

Die Zeile, die bei Statusänderung sichtbar sein soll, erhält den Zustand „Hide“ und „Display can be toggled by this report item“ mit demselben Feld, welches auch die Details und die andere Report-Summenzeile steuert.

Und schon klappt es…

Man sollte sein Framework kennen

Man lernt ja auch jeden Tag was neues. Heute habe ich gelernt, dass es to tatsächlich eine nützliche Klasse namens TextFieldParser im .NET Framework gibt, genauer, im Namespace Microsoft.VisualBasic.FileIo. Anders als der Name vermuten lässt, kann man diese natürlich auch in C# nutzen

Sie hilft beim Parsen von Festlängen- oder feldgetrennten Textdateien und ist hier dokumentiert.

Nochmal zum Windows PATH

Kürzlich habe ich schon einmal einen Beitrag geschrieben, in dem es darum ging, dass die PATH-Umgebungsvariable in Windows eine bestimmte Länge nicht überschreiten darf.

Die logische Konsequenz ist, andere Umgebungsvariablen zur Verkürzung heranzuziehen. Beispielsweise kann man das Präfix C:\Program Files (x86) in einer neuen Pfadvariablen namens PA1 und C:\Program Files in PA2 hinterlegen.

Dann kann man in der PATH-Variable %PA1%\Microsoft\… schreiben und muss nicht den kompletten Pfad C:\Program Files (x86)\Microsoft\… hinterlegen. Dies verkürzt den Inhalt der PATH-Variable.

Hinweis: Die neuen Umgebungsvariablen müssen vom System vor der PATH-Umgebungsvariablen verarbeitet werden, was bedeutet, dass sie bei alphanummerischer Sortierung vor der PATH-Umgebungsvariablen einsortiert werden müssen.

Wann war der 1. des Monats?

Manchmal muss man ein DATE erzeugen, welches den ersten Tag des aktuellen Monats repräsentiert. Dies ist nicht ganz so trivial, wie es auf den ersten Blick erscheinen mag! Das folgende Kommando berechnet dieses Datum:

CALCDATE('<CM+1D-1M>')

Diese Datumsformel nimmt zunächst den aktuellen Monat (dies ist standardmäßig der letzte Tag des Monats in NAV). Dazu addiert es einen Tag (das ist dann der erste des Folgemonats) und zieht wieder einen Monat ab – und schon hat man den 1. des aktuellen Monats…