如何解决列未全部出现在 VB.NET 的 ReportViewer/RDLC 中

how to solve columns not all appearing in reportviewer/rdlc in VB.NET

提问人:siwa86 提问时间:10/26/2023 更新时间:10/27/2023 访问量:54

问:

我正在尝试解决列未全部出现在 reportviewer/rdlc 中的 VB.NET

我有下面的代码,但这仍然是错误的。

有没有其他方法请指导我

谢谢

Public Class Form2
Dim tps As New Tableproductservice() 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim form2 = New Form3()
        Dim rds = New ReportDataSource("DataSet1", tps.Loaddata("A"))
        form2.ReportViewer1.LocalReport.DataSources.Clear()
        form2.ReportViewer1.LocalReport.DataSources.Add(rds)
        form2.ReportViewer1.LocalReport.ReportEmbeddedResource = "transposerowtocolumnsqlmsaccessvbnet.Report1.rdlc"
        form2.ShowDialog()
    End Sub
Public Class Tableproductservice
    Private connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\transposerowtocolumnsqlmsaccessvbnet.accdb;Persist Security Info=False"

 Dim sql = <sql>
                      TRANSFORM Sum(Tableproduct.[Qty]) AS SumOfQty
SELECT Tableproduct.Codeproduct AS [CodeProduct], Tableproduct.Colour AS [Colour],Sum(Tableproduct.Qty) AS [Total]
FROM Tableproduct INNER JOIN SizeProduct ON Tableproduct.Size = SizeProduct.Size
WHERE Tableproduct.Codeproduct = ?
GROUP BY Tableproduct.Codeproduct, Tableproduct.Colour
PIVOT SizeProduct.Size;
                  </sql>.Value
        Using _conn = New OleDbConnection(connectionString)
            Return _conn.Query(Of Tableproduct)(sql, New With {Key .CodeProduct = CodeProduct}).ToList()
        End Using
    End Function
End Class
Public Class Tableproduct
    Public Property CodeProduct() As String
    Public Property Colour() As String
    Public Property S() As Integer
    Public Property M() As Integer
    Public Property L() As Integer
    Public Property XL() As Integer
    Public Property Total() As Integer
End Class
Public Class SizeProduct
    Public Property Size() As String
    Public Property Sequence() As Integer
End Class

下面是上面代码的结果截图

Result in Printviewer-rdlc for codeproductA

Result in Printviewer-rdlc for codeproductB

期望的结果:

哪里 对于代码产品 : A

代码产品 颜色 S M L
一个 20 20
一个 15 10 25

代码产品的位置 : B

代码产品 颜色 S XL系列
B 20 20
B 15 15
vb.net LINQ 报告 RDLC ReportViewer

评论

0赞 dr.null 10/26/2023
尝试: stackoverflow.com/q/35871291/14171304 / stackoverflow.com/q/43199806/14171304 / stackoverflow.com/q/26343993/14171304 / stackoverflow.com/q/36864100/14171304
0赞 siwa86 10/26/2023
@dr.null ,谢谢你的建议

答:

1赞 siwa86 10/26/2023 #1

根据此链接,解决方案

这里有一个链接

这里有一个链接

首先右键单击该列,然后选择“列可见性”

选择“基于表达式显示或隐藏”

并为每列设置一个表达式

=iif(SUM(Fields!S.Value)=0,True,False)
=iif(SUM(Fields!L.Value)=0,True,False)
=iif(SUM(Fields!M.Value)=0,True,False)
=iif(SUM(Fields!XL.Value)=0,True,False)

Result in Printviewer-rdlc for codeproductA-solution Result in Printviewer-rdlc for codeproductB-solution

评论

1赞 siwa86 10/27/2023
@dr.null ,谢谢你的建议,我已经更新了截图