it-swarm.com.de

Wie zeige ich CheckBoxes am besten in SQL Server Reporting Services an?

Eine der vielen Macken von Reporting Services, auf die wir gestoßen sind, ist das völlige Fehlen eines CheckBox-Steuerelements oder ähnliches.

Wir haben ein Formular, das automatisch angezeigt werden sollte, basierend auf Informationen, die aus einer Datenbank abgerufen wurden. Wir haben mehrere Bit-Datentypfelder. Das Ausdrucken von "True" oder "False" sieht einfach dumm aus, da dies wie ein automatisch ausgefülltes Formular aussehen soll. Daher möchten wir eine Reihe von Kontrollkästchen und Beschriftungen haben, die entweder aktiviert oder nicht markiert sind.

Wir führen SSRS 2005 aus, aber SSRS 2008 ist nicht bekannt, da ein CheckBox-Steuerelement hinzugefügt wurde. Selbst wenn dies der Fall wäre, müssten wir vorerst eine Alternative haben. Das Beste, was wir bisher gefunden haben, ist:

  1. verwenden Sie Wingdings
  2. verwenden Sie Bilder
  3. verwenden Sie Textfelder mit Rahmen und drucken Sie ein Leerzeichen oder ein Großbuchstabe X

Alle drei Ansätze erfordern IIF Ausdrucks-Shenanigans.

Der Wingdings-Ansatz schien akzeptabel zu sein und war ästhetisch ansprechend, außer dass er aus irgendeinem Grund nicht immer korrekt gedruckt wurde. Noch wichtiger ist, dass PDF alle Schriftarten (generell) in Arial konvertiert hat, weshalb wir statt der Windings-Dingbats funky Buchstaben erhalten.

Bilder, die ein pixelbasiertes Raster sind, lassen sich nicht so gut bedrucken, wenn sie neben Vektormaterial wie Text gedruckt werden. Wenn sie nicht sorgfältig gehandhabt werden, neigen sie dazu, sich zu strecken, zu pixelieren und andere unprofessionelle Dinge zu tun.

Während diese Methoden funktionieren (einige mit Einschränkungen, wie oben erwähnt), ist keine davon besonders elegant.

Vermissen wir etwas offensichtliches? Nicht so offensichtlich? Hat jemand bei Microsoft einen guten Grund, warum eine solche Steuerung in SSRS 2000 nicht bereitgestellt wurde, geschweige denn 2 Versionen und 8 Jahre später? Dies kann nicht das erste Mal sein, dass dieses Problem aufkam ...

29
Sean Hanley

Ich habe zusammen mit anderen in meinem Shop Bilder verwendet, um das verborgene Attribut basierend auf dem Feldwert (wahr oder falsch) umzuschalten. Wir hatten keine Probleme mit Unschärfe oder Skalierung, es sei denn, wir haben versucht, die Skalierung des Bildes offensichtlich über 100% hinaus zu erhöhen.

Eine andere Option, die ich verwendet habe, ähnelt der Wingdings-Idee, aber ich benutze nur ein einfaches altes "X". Zumindest in unseren Formularen ist es nicht ungewöhnlich, dass jemand ein X in einem Kästchen anstelle eines Häkchens verwendet, also sieht es völlig akzeptabel aus. Außerdem müssen Sie sich beim Drucken nicht um seltsame Zeichen kümmern.

Warum Microsoft kein Kontrollkästchen enthält, kann ich nicht beantworten, da ich mich seit langem mit dem gleichen Problem beschäftige.

18
DCNYAM

Was ich verwendet habe, um ein Kontrollkästchen (oder eine Wahlurne) anzuzeigen:
1- Textfeld erstellen (wird zum Kontrollkästchen)
2- Ändern Sie die Schriftart in Arial Unicode MS
3- im Ausdrucksfenster verwenden Sie: 
ChrW (& H2611) für ein ausgefülltes Kontrollkästchen
ChrW (& H2610) für ein leeres Kontrollkästchen

11
Matthew

Neben den verschiedenen bereits vorgestellten Methoden gibt es seit SQL Server 2008 R2 ein integriertes Steuerelement, das für Kontrollkästchen-ähnliche Funktionen verwendet werden kann: das Indicator!

Weitere Informationen zur Verwendung finden Sie hier: http://blog.hoegaerden.be/2012/08/04/displaying-checkboxes-in-an-ssrs-report/

Um ein Feld des Typs Bit verwenden zu können, müssen Sie es zuerst in int umwandeln. Dies kann entweder in der Dataset-Abfrage oder durch Hinzufügen eines berechneten Felds zum Dataset erfolgen.

Wenn Sie möchten, dass die NULL-Werte gelb angezeigt werden, müssen Sie den Ausdruck so erstellen, dass diese Anforderung ebenfalls berücksichtigt wird.

Hier ist ein möglicher Ausdruck für ein berechnetes Feld:

=Switch(
    IsNothing(Fields!YourBoolean.Value), 50,
    Fields!YourBoolean.Value = False, 0,
    Fields!YourBoolean.Value = True, 100)

Abhängig von der Bedeutung Ihrer Felder - Falsch gut oder schlecht - müssen Sie möglicherweise Null und 100 austauschen.

8

Ich möchte die Idee einfach auf diesem Blog teilen. SSRS: So zeigen Sie das Kontrollkästchen im Bericht an

  1. Erstellen Sie zuerst ein Textfeld 
  2. Ändern Sie dann die Schriftfamilie in Wingdings
  3. Fügen Sie einen Ausdruck in das Textfeld ein und schreiben Sie diese Ausdrücke.

    =IIF(Fields!Active.Value,chr(254),"o")
    

    Die Felder! Active.Value können alle Elemente Ihrer Abfrage sein, die einen booleschen Wert 1 oder 0 zurückgeben sollen.

  4. Klicken Sie dann auf Vorschau und sehen Sie das Kontrollkästchen;)

In dem oben freigegebenen Blog können weitere Stile ausgewählt werden. 

Hier ist ein Beispiel meiner Ausgabe  enter image description here

8
bot

Sie können auch ein String-berechnetes Feld wie "[X]" oder "[]" verwenden. Es ist weniger hübsch als das Textfeld mit Rahmen, aber Sie müssen kein spezielles Steuerelement für den Wert festlegen, und Sie können die Tabelle oder Matrix damit füllen.

Zumindest gibt es eine Lösung für die Checkbox. Ich suche immer noch nach einer vollständigen Begründung für meinen Text (tatsächlich suche ich nach einer anderen Lösung als SSRS).

ACCESS 97 könnte diese Art von Dingen herstellen, jedoch nicht SQL Server 2012.

2
Marco Guignard

Ich denke, es gibt einen Fehler mit SSRS und dem Einbetten von Schriftzeichen über 128 (einige Dinge, die mit ANSI-Kodierung erledigt wurden). Grundsätzlich können Sie 1-128 fine verwenden, der Rest erscheint als hohe rechteckige Blöcke. 

Ich mag NYs Vorstellung von der Textbox mit einem Rahmen und einem optionalen X - das klingt einfach und effektiv.

1
AndyM

Dies baut auf der Antwort von Dragos Durlut auf. Ich habe nicht genug Ansehen, um Kommentare abzugeben, aber ich kann antworten ...

Ich brauchte ein Kontrollkästchen als Teil des Texts, der als Parameter übergeben wird. Der Parameter enthält HTML und wird in einem Platzhalter verwendet, der wie von Dragos vorgeschlagen eingerichtet wurde: HTML - HTML-Tags als Stile interpretieren.

Anstatt zwischen HTML und Strings wechseln zu müssen, können Sie die HTML-Escape-Codes verwenden (+ # + CharCode +; -> # 168;)

= "<font face = 'Wingdings'> # 168; </ font> Kontrollkästchen leer"

Da mine ein Parameter ist, wird nur die Zeichenfolge übergeben:

<font face = 'Wingdings'> # 168; </ font> Kontrollkästchen leeren

Wenn Sie das Kontrollkästchen aktivieren müssen, übergeben Sie entweder # 253; oder # 254; stattdessen:

<font face = 'Wingdings'> # 253; </ font> ausgefüllt mit einem x 
 <font face = 'Wingdings'> # 254; </ font> ausgefüllt mit einem Häkchen
0
Paul Haan

Sie können dies auch tun, indem Sie zu "Platzhaltereigenschaften" von TextBox gehen und Html - Interpret HTML tag as styles überprüfen.

Dann setzen Sie in der Value - Expression diese Codezeile für das Häkchen:

="<font face=""Wingdings 2"" color=""green"">" & Chr(81) &"</font>" & "some other text"

Oder dieses Codebeispiel für ungeprüft:

="<font face=""Wingdings 2"" color=""red"">" & Chr(163) &"</font>" & "some other text"

Auf diese Weise können Sie Kontrollkästchen und Text in demselben Textfeld anzeigen.

 Palceholder properties

Later edit:

Wenn bei der Anzeige von Wingdings 2 in Azure Probleme auftreten, verwenden Sie Wingdings.

Anscheinend funktioniert es.

="<font face=""Wingdings"" color=""green"">" & Chr(253) &"</font>" & "some other text"

Oder dieses Codebeispiel für ungeprüft:

="<font face=""Wingdings"" color=""red"">" & Chr(168) &"</font>" & "some other text"
0
Dragos Durlut