我正在尝试在 Linq 中再次使用水晶报告,但我遇到了问题。我已经阅读了大量关于如何做到这一点的论坛和文章,但我不确定我可能做错了什么。
第一种方法尝试
Dim DBDataContext = GetDataConnection()
Dim cryRpt As IBS_DAL.cryLocationTransfer = New IBS_DAL.cryLocationTransfer()
cryRpt.Load(cryRpt.FileName)
Dim testDS = From stl In DBDataContext.STranLines
Where stl.STLStkRef >= "000000000330" AndAlso
stl.STLStkRef <= "000000000337" AndAlso
(stl.STLTranCode = "LI" Or stl.STLTranCode = "LO")
Select stl.ToRepObj
cryRpt.SetDataSource(testDS.ToList)
CrystalReportViewer1.ReportSource = cryRpt
ToRepObj 当前设置为我创建的类,以便它将使用不具有空值的对象。
但是当报告加载时,它要求输入密码,这完全没有意义,因为我正在向它提供数据。服务器名称是我之前在报告中设置的 .net 对象。
我真的需要找到一个解决方案,因为我以前使用的是 Microsoft Reporting,但发现了一些缺乏的地方,因此决定最好使用 Crystal,但从未将它与 Linq 一起使用。
第二种方法试过
我还尝试了另一种我在这个网站上看到的方法,但由于某种原因,它给了我一个空白报告。.Net 对象在水晶报告中的 stkcode 上链接。
Dim testDS = (From stl In DBDataContext.STranLines
Where stl.STLStkRef >= "000000000330" AndAlso
stl.STLStkRef <= "000000000337" AndAlso
(stl.STLTranCode = "LI" Or stl.STLTranCode = "LO")
Select stl)
Dim ds1 = (From stl As STranLine In testDS
Select stl.ToRepObj).ToList
Dim ds2 = (From stl As STranLine In testDS
Select stl.Stock.ToRepObj).ToList
Dim cryrpt2 As ReportDocument = New IBS_DAL.CrystalReport1()
cryrpt2.Database().Tables("IBS_DAL_roSTranLine").SetDataSource(ds1)
cryrpt2.Database().Tables("IBS_DAL_roStock").SetDataSource(ds2)
CrystalReportViewer1.ReportSource = cryrpt2