sql >> データベース >  >> RDS >> Sqlserver

SSRS - 列を動的に非表示にするときにテーブルを同じ幅に保ちますか?

    これを達成する唯一の方法は、実行時に RDLC ファイルを変更することです。基本的に、RLDC ファイルをメモリにロードし (単なる XML ファイル)、テーブルの幅を含む XML ノードを見つけて、メモリ内の設定を変更します。これが完了したら、メモリに読み込まれた RDLC ファイルを使用して reportViewer コントロールを更新できます。

    はい、私はすでにこれを行っていますが、うまくいきます。

    次のコード例は、XMLpath を介してメモリ内の RDLC ファイルのデータを変更するものです。

      Private Sub ModifyRDLCInMemory()
    
        Dim xmlDoc As XmlDocument = New XmlDocument
        Dim asm As Reflection.Assembly = Reflection.Assembly.GetExecutingAssembly()
        'create in memory, a XML file from a embedded resource
        Dim xmlStream As Stream = asm.GetManifestResourceStream(ReportViewer1.LocalReport.ReportEmbeddedResource)
    
        Try
          'Load the RDLC file into a XML doc
          xmlDoc.Load(xmlStream)
        Catch e As Exception
          MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
        End Try
    
        'Create an XmlNamespaceManager to resolve the default namespace
        Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(xmlDoc.NameTable)
        nsmgr.AddNamespace("nm", "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition")
        nsmgr.AddNamespace("rd", "http://schemas.microsoft.com/SQLServer/reporting/reportdesigner")
    
        'Loop through each node in the XML file
        Dim node As XmlNode
        For Each node In xmlDoc.DocumentElement.SelectNodes(String.Format("//nm:{0}[@rd:LocID]", "Value"), nsmgr)  'XPath to LocID node.. You will want to change this to locate your Table Width node. You may need to read up on XMLPath
          Dim nodeValue As String = node.InnerText  'Gets current value of Node
          If (String.IsNullOrEmpty(nodeValue) Or Not nodeValue.StartsWith("=")) Then
            Try
              node.InnerText = YOURNEWVALUE
    
            Catch ex As Exception
              'handle error
            End Try
          End If
        Next
    
        ReportViewer1.LocalReport.ReportPath = String.Empty
        ReportViewer1.LocalReport.ReportEmbeddedResource = Nothing
        'Load the updated RDLC document into LocalReport object.
        Dim rdlcOutputStream As StringReader = New StringReader(xmlDoc.DocumentElement.OuterXml)
        Using rdlcOutputStream
          ReportViewer1.LocalReport.LoadReportDefinition(rdlcOutputStream)
        End Using
    
      End Sub
    


    1. Laravel5.2-左結合DB::Rawが機能していませんか?

    2. RESTfullの方法でデータベース列のnullエントリをカウントします

    3. MySQLまたはMariaDBのGaleraClusterのパフォーマンスを向上させる

    4. selectステートメントでのMysqlの計算