Czy istnieje łatwy sposób na zmianę układu kolumn tablix w trybie projektowania SSRS?

Mam raport SSRS, który zawiera ponad 20 kolumn w zakładce. Nasi użytkownicy zdecydowali, że dane są w porządku, ale chcą, aby kolumny zostały przeniesione (sigh!).

Wydaje się, że powinno być łatwo zmienić ułożenie kolumn (przenieść kolumnę 3 do kolumny 1, zamienić Kolumny 4 i 5 itp.). Ale przeciąganie i upuszczanie nie wydaje się działać, a jedynym rozwiązaniem wydaje się być usunięcie oryginalnej kolumny i ponowne wstawianie jej w odpowiednie miejsce (i ponowne zastosowanie jakichkolwiek wyrażeń i formatowania już utworzone dla kolumny).

Czy jest jakiś łatwiejszy sposób na zrobienie tego? Proszę zauważyć, że nie chcę programistycznego rozwiązania, ale po prostu muszę go zmienić raz w trybie projektowania.

Author: PaulStock, 2012-09-28

4 answers

Jest sposób, aby to zrobić przez projektanta.

Aby przenieść kolumny, wprowadź liczbę pustych kolumn, które chcesz przenieść w miejscu docelowym. Następnie shift-kliknij lewym przyciskiem myszy komórki (nie kolumnę nagłówka), które chcesz przenieść. Teraz powinieneś być w stanie kliknąć prawym przyciskiem myszy i wybrać polecenie Wytnij. Teraz kliknij prawym przyciskiem myszy na górze kolumn docelowych i wybierz Wklej. Na koniec usuń teraz puste stare kolumny.

 82
Author: Scott Blasingame,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-12 19:39:54

Jeśli możesz odczytać XML (po prostu zrozumieć, gdzie znaczniki zaczynają się i kończą itp.), możesz łatwo wykonać zadanie. Można wykonać następujące czynności:

  1. najpierw wykonaj kopię zapasową oryginalnego raportu, kopiując go do innego pliku.
  2. Kliknij prawym przyciskiem myszy raport w Eksploratorze rozwiązań i wybierz "Wyświetl kod"
  3. to otwiera RDL raportu - - - nie bój się, to tylko prosty plik xml
  4. teraz zlokalizuj w pliku RDL tag "Tablix1" -- poszukaj <Tablix Name="Tablix1"> ....</Tablix >
  5. Teraz musisz szukać różnych tagów" <Textbox Name="...">...</Texbox> " zagnieżdżonych w tagach <TablixCells><TablixCell><CellContents>....
  6. Teraz możesz łatwo zmienić kolejność kolumn raportu, zmieniając kolejność tych <Textbox...>...</Texbox>, a otrzymasz nowy raport z nową kolejnością kolumn.
 27
Author: rashkay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-09 19:01:11

Właściwie, musisz przenieść (wyciąć i wkleić) cały <TablixCell> element dla kolumny (wszystko pomiędzy <TablixCell> i </TablixCell> łącznie ze znacznikami <TablixCell> i </TablixCell>).

Na przykład, aby zmienić układ kolumn w poniższym przykładzie, aby kolumna "ID Produktu" stała się przed kolumną "Nazwa Produktu", wybierz i wytnij całą sekcję wokół elementu komórki "Nazwa Produktu" (wszystko od pierwszego <TablixCell> do pierwszego </TablixCell>), a następnie wklej ją po </TablixCell> dla kolumny "ProductID".
Zauważ, że istnieje kompletny zbiór <TablixCell> elementów dla każdego wiersza zdefiniowanego w zakładce; każdy z nich znajduje się w oddzielnym elemencie <TablixRow>. Jeśli opuściłeś domyślną kolumnę nagłówka( gdzie ustawione są nazwy kolumn), to pierwszy <TablixRow> definiuje ten wiersz nagłówka, a drugi definiuje dane w kolumnach i jest to ten, który chcesz edytować. Po przearanżowaniu kolumn danych będziesz musiał zrobić to samo dla nagłówka kolumna (jeśli ją posiadasz) lub po prostu zmień nazwę kolumn używając projektanta, aby dopasować dane w kolumnach.

Naprawdę jest to tak zawiłe, że prawdopodobnie łatwiej jest przenieść kolumnę za pomocą projektanta, aby wstawić nową kolumnę tam, gdzie chcesz ją przenieść, ustawić odpowiednie źródło danych dla tej kolumny, a następnie usunąć oryginalną kolumnę. W poniższym przykładzie wstawisz nową kolumnę po ID Produktu , ustaw ją na Nazwa Produktu kolumna data source (która ustawiłaby "Nazwa Produktu" w wierszu nagłówka), a następnie usuń oryginalną kolumnę Nazwa Produktu po lewej stronie.

...
<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>
...

Po cięciu / wklejaniu, kończysz na:

...
<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>
...
 4
Author: DizGrizz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-07 05:26:26

Kolejna notka o pracy w RDL:
Jeśli się pomylisz, raport wyświetli komunikat o błędzie i nie wyświetli danych.

Jeśli nie jesteś zaznajomiony z RDL (Report Definition Language, a type of XML), tego typu błędy mogą być bardzo frustrujące, ponieważ czasami renderowanie raportu nie może być użyteczne.

O wiele bezpieczniej jest użyć metody add new columns I delete the old ones w konstruktorze, o której mowa powyżej. To trzyma cię z dala od RDL zmniejszając swoje szanse na zniszczenie raportu.

 2
Author: Mac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-02 13:28:50