2008-11-03 14 views
29

Una delle molte stranezze di Reporting Services che abbiamo incontrato è la completa e totale mancanza di un controllo CheckBox o qualcosa di simile in remoto.Come visualizzare i checkbox in SQL Server Reporting Services?

Abbiamo un modulo che dovrebbe apparire automaticamente compilato in base alle informazioni estratte da un database. Abbiamo diversi campi di dati di bit. La stampa di "True" o "False" sembra semplicemente sciocca, in quanto dovrebbe assomigliare a un modulo che è stato auto-compilato, quindi vogliamo avere una serie di checkbox ed etichette che sono spuntate o deselezionate.

Stiamo eseguendo SSRS 2005 ma non sono a conoscenza di SSRS 2008 che ha aggiunto un controllo CheckBox. Anche se fosse così, avremmo bisogno di avere un'alternativa per il momento. Il migliore che abbiamo trovato finora è:

  1. uso Wingdings
  2. uso immagini
  3. utilizzare le caselle di testo con bordi e stampare un vuoto/spazio o un capitale X

Tutti e tre gli approcci richiedono lo shenanigans di espressione IIF.

L'approccio di Wingdings sembrava funzionare in modo accettabile, ed era il più esteticamente gradevole tranne che per qualche ragione non sempre veniva stampato correttamente. Ancora più importante, le esportazioni di PDF, anche per qualsiasi ragione, hanno convertito tutti i tipi di carattere (generalmente) in Arial e quindi abbiamo ottenuto lettere funky invece dei dingbats di Windings.

Le immagini, essendo un raster basato su pixel, non funzionano molto bene se stampate su elementi vettoriali laterali come il testo. A meno che non vengano maneggiati con attenzione, tendono ad allungarsi, pixelare e ad eseguire altre cose dall'aspetto non professionale.

Mentre questi metodi funzionano (alcuni con limitazioni come accennato in precedenza), nessuno di essi è particolarmente elegante.

Ci manca qualcosa di ovvio? Non è così ovvio? Qualcuno di Microsoft ha una buona ragione per cui un tale controllo non è stato fornito in SSRS 2000, per non parlare di 2 versioni e 8 anni dopo? Questa non può essere la prima volta che si presenta questo problema ...

+1

SSRS 2000 è stato pubblicato nel 2004. Così hanno avuto * solo * 5 anni per farlo ordinati. –

+0

SQL Server 2012 è uscito e ancora nessuna casella di controllo ha solo 12 anni per non aggiungere una funzione semplice. – lancegerday

+0

Suggerirei di iniziare o di aggiungere a una discussione Microsoft vera o un'area di risposta delle funzionalità - ne hanno molte - piuttosto che lamentarsi qui. Il ragionamento potrebbe essere quello che ho già visto troppo: persone che utilizzano SSRS come strumento di processo aziendale, invece di uno strumento di reporting. Aggiunge una quantità enorme al TCO e può causare altri problemi ... e in realtà, quale rapporto ha bisogno di una casella di controllo ?! – Volvox

risposta

18

Io, insieme ad altri nel mio negozio, ho usato le immagini, attivando l'attributo nascosto in base al valore del campo (vero o falso). Non abbiamo avuto alcun problema con sfocatura o ridimensionamento, a meno che non abbiamo cercato di aumentare la scala dell'immagine oltre il 100%, ovviamente.

Un'altra opzione che ho usato è simile all'idea di wingdings, ma io uso solo una semplice "X". Almeno sulle nostre forme, non è raro che qualcuno usi una X in una scatola invece di un segno di spunta, quindi sembra completamente accettabile. Inoltre, non devi preoccuparti di strani personaggi durante la stampa.

Per quanto riguarda il motivo per cui Microsoft non include un controllo casella di controllo, non posso rispondere come mi sono chiesto la stessa cosa da molto tempo ormai.

1

Penso che ci sia un bug con SSRS e che incorpori caratteri di caratteri superiori a 128 (qualche cosa da fare con la codifica ANSI). Fondamentalmente puoi usare 1-128 fine, il resto si presenta come blocchi rettangolari alti.

Mi piace l'idea di NY della casella di testo con un bordo e una X opzionale: sembra semplice ed efficace.

+3

Questo è in definitiva ciò che abbiamo finito per fare. Nient'altro ha funzionato in tutti e tre i formati: visualizzatore Web, stampa e esportazione PDF. Continuo a pensare che avrebbero dovuto avere un controllo casella di controllo molto tempo fa. Il fatto che SSRS 2008 non abbia ancora una buona soluzione dopo 8 anni di Reporting Services è incredibile. –

11

Quello che ho usato per visualizzare una casella di controllo (o urne):
1- creare testo (che diventerà il vostro casella di controllo)
2- cambiare il font Arial Unicode MS
3- nell'espressione uso finestra:
ChrW (& H2611) per una casella compilato
ChrW (& H2610) per una casella vuota

+0

quando esporto in pdf mostra la casella di controllo in mezza misura. Sto usando Chr (0168). –

+0

Funziona anche con l'esportazione in pdf! Il carattere 'Arial Unicode MS' era fondamentale per il suo funzionamento. Non funzionava con lo standard 'Arial' –

8

Oltre ai diversi metodi già presentato, come di SQL Server 2008 R2 c'è un controllo incorporato che può essere usato per che Funzionalità ckbox-alike: l'indicatore !

Date un'occhiata qui per i dettagli su come usarlo: http://blog.hoegaerden.be/2012/08/04/displaying-checkboxes-in-an-ssrs-report/

Per essere in grado di utilizzare un campo di tipo po, dovrete gettarlo ai int prima. Questo può essere fatto nella query del set di dati o aggiungendo un campo calcolato al set di dati.

Se si desidera che i valori NULL diventino gialli, sarà necessario creare l'espressione in questo modo in modo che tenga conto anche di tale requisito.

Ecco una possibile espressione per un campo calcolato:

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

A seconda del significato dei vostri campi - è falso buono o cattivo - potrebbe essere necessario scambiare lo zero e 100.

+0

L'indicatore sembra essere (finalmente) adatto, ma ho notato che l'esempio usa valori interi. Senza tirare su un progetto SSRS, puoi facilmente usarlo con un valore booleano? Che ne dici di uno a valori nulli (e forse la versione gialla/di avviso prevista)? –

+0

Ho esteso la risposta per rispondere alle tue domande, sembrava più fattibile che rispondere al commento :) –

2

Puoi usa anche un campo calcolato come "[X]" o "[]". È meno carino della casella di testo con bordo ma non devi mettere un controllo specifico per il valore e puoi riempire tabella o matrice con questo.

Almeno c'è qualche soluzione per la casella di controllo. Sto ancora cercando una giustificazione completa per il mio testo (infatti sto cercando un'altra soluzione rispetto a SSRS).

ACCESSO 97 potrebbe fare questo genere di cose, ma non SQL SERVER 2012.

7

Voglio solo condividere l'idea su questo blog. SSRS: How to Display Checkbox on Report

  1. Innanzitutto creare una casella di testo
  2. quindi modificare il tipo di carattere per Wingdings
  3. Inserire un'espressione sulla casella di testo e scrivere questo espressioni.

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

    campi Active.Value potrebbe essere qualsiasi cosa dalla query che dovrebbe restituire un valore booleano 1 o 0.

  4. Quindi fare clic su Anteprima e vedere la casella di controllo;!)

Più stili possono essere selezionati sul blog che ho condiviso sopra.

Ecco un esempio della mia produzione enter image description here

+1

Questa è la soluzione migliore :) –

0

Un altro modo per farlo thisd è andare a "Proprietà segnaposto" di TextBox e visualizzate Html - Interpret HTML tag as styles

Poi nel Value - Expression mettere questa riga di codice per controllare :

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

O questo esempio di codice per incontrollata:

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

In questo modo è possibile avere la casella di controllo e il testo nella stessa casella di testo.

Palceholder properties

Later edit:

Se si riscontrano problemi visualizzazione Wingdings 2 su Azure, quindi utilizzare Wingdings.

Apparentemente funziona.

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

O questo esempio di codice per incontrollata:

="<font face=""Wingdings"" color=""red"">" & Chr(168) &"</font>" & "some other text" 
Problemi correlati