2012-09-28 10 views
47

Ho un rapporto SSRS che contiene più di 20 colonne in una Tablix. I nostri utenti hanno deciso che i dati sono OK, ma vogliono che le colonne vengano spostate (sigh!).C'è un modo semplice per riorganizzare le colonne Tablix in modalità progettazione SSRS?

Sembra che sia facile riorganizzare le colonne (spostare la colonna 3 nella colonna 1, scambiare le colonne 4 & 5 ecc.). Tuttavia, il trascinamento della selezione non sembra funzionare e l'unica soluzione sembra cancellare la colonna originale e reinserirla nella posizione corretta (e applicare nuovamente qualsiasi formattazione di espressioni & già creata per la colonna).

C'è un modo più semplice per farlo? Si prega di notare che non voglio una soluzione programmatica, ma ho solo bisogno di cambiarla una volta in modalità progettazione.

+3

No, non esiste un modo semplice. SSRS è un figliastro dalla testa rossa mezza cotta abbandonato per quanto riguarda Microsoft. – Yuck

+0

@ensisNoctis nemmeno vicino. AtPaulStock, dovevo semplicemente cancellare completamente le mie colonne e leggerle, poiché le mie erano colonne raggruppate. –

+0

@MichaelPlautz, merda, questa discussione non era quella che ho provato a contrassegnare come duplicata. Hai esposto il mio errore dopo che è passato mezzo anno;) – ensisNoctis

risposta

25

Se è possibile leggere XML (basta capire dove iniziano e terminano i tag ecc.), È possibile eseguire facilmente l'attività. È possibile eseguire la seguente serie di passaggi:

  1. Prima di tutto eseguire il backup del rapporto originale copiandolo su un altro file.
  2. fare clic destro sul vostro rapporto e selezionare "Visualizza codice"
  3. Questo apre la RDL del report --- non avere paura è solo un semplice file XML
  4. Ora localizzare all'interno del RDL archiviare il tag "Tablix1" - cercare <Tablix Name="Tablix1"> ....</Tablix >
  5. a questo punto è necessario cercare diverse "<Textbox Name="...">...</Texbox>" tag annidati all'interno dei tag <TablixCells><TablixCell><CellContents>....
  6. ora si può facilmente riorganizzare le colonne del report, semplicemente riorganizzando l'ordine di questi <Textbox...>...</Texbox> e avrai il nuovo rapporto con l'ordinamento di nuove colonne.
+13

+1 per un altro esempio di quanto poco Microsoft abbia investito nel fornire ai suoi sviluppatori strumenti di reporting ragionevoli. – Yuck

+3

Solo una FYI per chiunque stia leggendo questa risposta, devi spostare gli elementi contenenti i nomi delle colonne separatamente dagli elementi che contengono i dettagli. Anche le larghezze delle colonne sono memorizzate separatamente così come le eventuali regole di visibilità applicate ... Questo metodo non sembra più così semplice ... – Mike

+1

L'Asnwer di Scott Blasingame è molto più semplice, se trovi questo metodo XML un po 'troppo complicato! –

4

In realtà, è necessario spostare (taglia e incolla) l'intero elemento <TablixCell> per la colonna (tutto tra la <TablixCell> e </TablixCell> comprese le <TablixCell> e </TablixCell> tag stessi).

Per esempio, per riordinare le colonne nel seguente esempio per rendere la colonna "ID prodotto" vieni prima la colonna "nome del prodotto", è necessario selezionare e tagliare l'intera sezione attorno all'elemento cella "ProductName" (tutto dal primo <TablixCell> al primo </TablixCell> e quindi incollarlo dopo il </TablixCell> per la colonna "ProductID".
Si noti che esiste una serie completa di elementi <TablixCell> per ciascuna riga definita in Tablix; ognuno di essi si trova in un elemento separato <TablixRow>. Se hai lasciato la colonna di intestazione predefinita (dove sono impostati i nomi delle colonne), il primo <TablixRow> definisce quella riga di intestazione e la seconda definisce i dati nelle colonne ed è quella che desideri modificare. Una volta riorganizzate le colonne di dati, sarà necessario fare la stessa cosa per la colonna di intestazione (se ce l'hai) o, semplicemente rinominare le colonne usando la finestra di progettazione per abbinare i dati ora nelle colonne.

Davvero, però, questo è così contorto che è probabilmente più facile da spostare una colonna da solo utilizzando il progettista di inserire una nuova colonna in cui si desidera la colonna trasferita a, impostare con la giusta fonte di dati per quella colonna, e poi elimina la colonna originale.Per l'esempio seguente, inserire una nuova colonna dopo l'ID prodotto, impostarla sulla colonna di origine dati Nome prodotto (che lo imposterà "Nome prodotto" nella riga dell'intestazione), quindi eliminare il nome prodotto originale colonna a sinistra.

... 
<TablixCell> 
    <CellContents> 
    <Textbox Name="ProductName"> 
     <CanGrow>true</CanGrow> 
     <KeepTogether>true</KeepTogether> 
     <Paragraphs> 
     <Paragraph> 
      <TextRuns> 
      <TextRun> 
       <Value>=Fields!ProductName.Value</Value> 
       <Style /> 
      </TextRun> 
      </TextRuns> 
      <Style /> 
     </Paragraph> 
     </Paragraphs> 
     <rd:DefaultName>ProductName</rd:DefaultName> 
     <Style> 
     <Border> 
      <Color>LightGrey</Color> 
      <Style>Solid</Style> 
     </Border> 
     <PaddingLeft>2pt</PaddingLeft> 
     <PaddingRight>2pt</PaddingRight> 
     <PaddingTop>2pt</PaddingTop> 
     <PaddingBottom>2pt</PaddingBottom> 
     </Style> 
    </Textbox> 
    </CellContents> 
</TablixCell> 
<TablixCell> 
    <CellContents> 
    <Textbox Name="ProductID"> 
     <CanGrow>true</CanGrow> 
     <KeepTogether>true</KeepTogether> 
     <Paragraphs> 
     <Paragraph> 
      <TextRuns> 
      <TextRun> 
       <Value>=Fields!ProductID.Value</Value> 
       <Style /> 
      </TextRun> 
      </TextRuns> 
      <Style /> 
     </Paragraph> 
     </Paragraphs> 
     <rd:DefaultName>ProductID</rd:DefaultName> 
     <Style> 
     <Border> 
      <Color>LightGrey</Color> 
      <Style>Solid</Style> 
     </Border> 
     <PaddingLeft>2pt</PaddingLeft> 
     <PaddingRight>2pt</PaddingRight> 
     <PaddingTop>2pt</PaddingTop> 
     <PaddingBottom>2pt</PaddingBottom> 
     </Style> 
    </Textbox> 
    </CellContents> 
</TablixCell> 
... 

dopo il taglio/incolla, si sarebbe poi finisce con:

... 
<TablixCell> 
    <CellContents> 
    <Textbox Name="ProductID"> 
     <CanGrow>true</CanGrow> 
     <KeepTogether>true</KeepTogether> 
     <Paragraphs> 
     <Paragraph> 
      <TextRuns> 
      <TextRun> 
       <Value>=Fields!ProductID.Value</Value> 
       <Style /> 
      </TextRun> 
      </TextRuns> 
      <Style /> 
     </Paragraph> 
     </Paragraphs> 
     <rd:DefaultName>ProductID</rd:DefaultName> 
     <Style> 
     <Border> 
      <Color>LightGrey</Color> 
      <Style>Solid</Style> 
     </Border> 
     <PaddingLeft>2pt</PaddingLeft> 
     <PaddingRight>2pt</PaddingRight> 
     <PaddingTop>2pt</PaddingTop> 
     <PaddingBottom>2pt</PaddingBottom> 
     </Style> 
    </Textbox> 
    </CellContents> 
</TablixCell> 
<TablixCell> 
    <CellContents> 
    <Textbox Name="ProductName"> 
     <CanGrow>true</CanGrow> 
     <KeepTogether>true</KeepTogether> 
     <Paragraphs> 
     <Paragraph> 
      <TextRuns> 
      <TextRun> 
       <Value>=Fields!ProductName.Value</Value> 
       <Style /> 
      </TextRun> 
      </TextRuns> 
      <Style /> 
     </Paragraph> 
     </Paragraphs> 
     <rd:DefaultName>ProductName</rd:DefaultName> 
     <Style> 
     <Border> 
      <Color>LightGrey</Color> 
      <Style>Solid</Style> 
     </Border> 
     <PaddingLeft>2pt</PaddingLeft> 
     <PaddingRight>2pt</PaddingRight> 
     <PaddingTop>2pt</PaddingTop> 
     <PaddingBottom>2pt</PaddingBottom> 
     </Style> 
    </Textbox> 
    </CellContents> 
</TablixCell> 
... 
76

C'è un modo per farlo attraverso il progettista.

Per spostare le colonne, inserire il numero di colonne vuote che si desidera spostare nel punto di destinazione. Quindi fai clic con il tasto sinistro del mouse sulle celle (NON la colonna di intestazione) che desideri spostare. Ora dovresti essere in grado di fare clic con il tasto destro e selezionare il comando Taglia. Ora, fai clic con il tasto destro del mouse sulle colonne di destinazione e seleziona Incolla. Infine, elimina le vecchie colonne ora vuote.

+3

Funziona bene, grazie. –

+1

Provato con righe; ha funzionato come un fascino. Molto più sicuro/più facile che modificare XML ... – ARich

+1

Questa dovrebbe essere la risposta migliore. Tanto più sicuro che scherzare con l'XML. – april4181

2

Un'altra nota relativa al funzionamento nel RDL:
Se si sbaglia, il report visualizzerà un messaggio di errore e non visualizzerà i dati.

A meno che non si abbia familiarità con RDL (Report Definition Language, un tipo di XML) questi tipi di errori possono essere molto frustranti da gestire a volte rendendo il report non utilizzabile.

È molto più sicuro utilizzare l'aggiunta di nuove colonne ed eliminare il metodo precedente nella finestra di progettazione, menzionato sopra. Questo ti tiene fuori dalla RDL riducendo le tue possibilità di danneggiare il rapporto.

Problemi correlati