ssrs 2008 क्या एसएसआरएस डिज़ाइन मोड में टैबलेट कॉलम को पुनर्व्यवस्थित करने का कोई आसान तरीका है?




ssrs-2008 reporting-services (4)

मेरे पास एक एसएसआरएस रिपोर्ट है जिसमें एक टैबलेट में 20 से अधिक कॉलम हैं। हमारे उपयोगकर्ताओं ने फैसला किया है कि डेटा ठीक है, लेकिन वे चाहते हैं कि कॉलम चारों ओर चले जाएं ( श्वास! )।

ऐसा लगता है कि कॉलम को पुन: व्यवस्थित करना आसान होना चाहिए (कॉलम 3 को कॉलम 1 पर ले जाएं, कॉलम 4 और 5 आदि को स्वैप करें)। लेकिन, ड्रैग और ड्रॉप काम नहीं कर रहा है और एकमात्र समाधान मूल कॉलम को हटा रहा है और इसे सही जगह पर फिर से डालने लगता है (और कॉलम के लिए पहले से बनाए गए किसी भी अभिव्यक्ति और स्वरूपण को फिर से लागू करना)।

क्या ऐसा करने का कोई आसान तरीका है? कृपया ध्यान दें कि मैं प्रोग्रामेटिक समाधान नहीं चाहता हूं, लेकिन डिजाइन मोड में इसे एक बार बदलने की जरूरत है।


डिजाइनर के माध्यम से ऐसा करने का एक तरीका है।

कॉलम को स्थानांतरित करने के लिए, रिक्त कॉलम की संख्या डालें जिन्हें आप अपने गंतव्य स्थान पर ले जाना चाहते हैं। फिर उन कक्षों पर Shift-left-click (हेडर कॉलम नहीं) जिसे आप स्थानांतरित करना चाहते हैं। अब आप राइट-क्लिक करने और कट कमांड का चयन करने में सक्षम होना चाहिए। अब, गंतव्य कॉलम के शीर्ष पर राइट-क्लिक करें और पेस्ट का चयन करें। अंत में, अब खाली पुराने कॉलम हटाएं।


यदि आप एक्सएमएल पढ़ सकते हैं (बस समझें कि टैग कहां से शुरू होते हैं और अंत आदि), तो आप आसानी से कार्य को पूरा कर सकते हैं। आप निम्न चरणों का पालन कर सकते हैं:

  1. सबसे पहले मूल रिपोर्ट को दूसरी फ़ाइल में कॉपी करके बैकअप लें।
  2. समाधान एक्सप्लोरर में अपनी रिपोर्ट पर राइट क्लिक करें और "कोड देखें" का चयन करें
  3. यह रिपोर्ट के आरडीएल को खोलता है --- डरो मत कि यह सिर्फ एक साधारण एक्सएमएल फ़ाइल है
  4. अब आरडीएल फ़ाइल में "टैबब्लिक्स 1" टैग के भीतर खोजें - <Tablix Name="Tablix1"> ....</Tablix >
  5. अब आपको <TablixCells><TablixCell><CellContents>.... टैग के भीतर <TablixCells><TablixCell><CellContents>.... टैग " <TablixCells><TablixCell><CellContents>.... <Textbox Name="...">...</Texbox> " को देखने की आवश्यकता है <TablixCells><TablixCell><CellContents>....
  6. अब आप इन <Textbox...>...</Texbox> के क्रम को पुन: व्यवस्थित करके रिपोर्ट के कॉलम को आसानी से पुनर्व्यवस्थित कर सकते हैं और आपके पास नए कॉलम ऑर्डरिंग के साथ नई रिपोर्ट होगी।

आरडीएल में काम करने पर एक और नोट:
यदि आपको यह गलत लगता है तो रिपोर्ट एक त्रुटि संदेश प्रदर्शित करेगी और यह डेटा प्रदर्शित नहीं करेगी।

जब तक आप आरडीएल (रिपोर्ट डेफिनिशन लैंग्वेज, एक्सएमएल का एक प्रकार) से परिचित नहीं होते हैं, तो इस प्रकार की त्रुटियां कभी-कभी रिपोर्ट को गैर-उपयोग करने में सौदा करने के लिए बहुत निराशाजनक हो सकती हैं।

जोड़ों के नए कॉलम का उपयोग करना और ऊपर वर्णित डिजाइनर में पुरानी विधि को हटाने के लिए कहीं अधिक सुरक्षित है। यह आपको आरडीएल से रिपोर्ट को नुकसान पहुंचाने की संभावना को कम करता है।


असल में, आपको कॉलम के लिए संपूर्ण <TablixCell> तत्व ( <TablixCell> और </TablixCell> बीच सब कुछ <TablixCell> और </TablixCell> टैग सहित) को स्थानांतरित करने (कट और पेस्ट) करने की आवश्यकता है।

उदाहरण के लिए, "उत्पाद आईडी" कॉलम "उत्पाद नाम" कॉलम से पहले आने वाले उदाहरण में कॉलम को पुनर्व्यवस्थित करने के लिए, आप "ProductName" सेल तत्व के चारों ओर पूरे अनुभाग का चयन और कटौती करेंगे (पहले <TablixCell> से सब कुछ <TablixCell> पहले </TablixCell> ) पर और फिर "ProductID" कॉलम के लिए </TablixCell> बाद इसे पेस्ट करें।
ध्यान दें कि <TablixCell> में परिभाषित प्रत्येक पंक्ति के लिए <TablixCell> तत्वों का एक पूरा सेट है; प्रत्येक एक अलग <TablixRow> तत्व में है। यदि आपने डिफ़ॉल्ट हेडर कॉलम छोड़ा है (जहां कॉलम नाम सेट हैं), तो पहले <TablixRow> उस शीर्षलेख पंक्ति को परिभाषित करता है और दूसरा कॉलम में डेटा को परिभाषित करता है और यह वह है जिसे आप संपादित करना चाहते हैं। एक बार जब आप डेटा कॉलम को पुनर्व्यवस्थित कर लेंगे, तो आपको हेडर कॉलम (यदि आपके पास है) के लिए एक ही चीज़ करने की आवश्यकता होगी या कॉलम में डेटा से मेल खाने के लिए डिज़ाइनर का उपयोग करके कॉलम का नाम बदलें।

असल में हालांकि, यह इतनी गड़बड़ है कि एक नया कॉलम डालने के लिए केवल डिज़ाइनर का उपयोग करके कॉलम को स्थानांतरित करना संभव है जहां आप कॉलम ले जाया जाना चाहते हैं, इसे उस कॉलम के उचित डेटा स्रोत के साथ सेट करें, और उसके बाद मूल कॉलम हटाएं । नीचे दिए गए उदाहरण के लिए, आप उत्पाद आईडी के बाद एक नया कॉलम डालेंगे , इसे ProductName डेटा स्रोत कॉलम पर सेट करें (जो इसे "उत्पाद नाम" हेडर पंक्ति में सेट करेगा), और फिर बाईं ओर मूल उत्पाद नाम कॉलम हटा दें।

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

कट / पेस्ट के बाद, आप इसके साथ समाप्त हो जाएंगे:

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