vb将Linq和Crystal报表与.Net对象一起使用



我试图再次使用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当前正在设置我创建的一个类,以便它使用一个没有null值的对象。

但当加载报告时,它要求输入密码,这完全没有意义,因为我正在向它提供数据。服务器名称是我之前在报告中设置的.net对象。

我真的需要找到一个解决方案,因为我以前使用Microsoft Reporting,但发现了一些不足之处,因此决定最好使用Crystal,但从未将其用于Linq。

尝试了第二种方法

我也尝试了我在这个网站上看到的另一种方式,但由于某种原因,它给了我一份空白报告。.Net对象链接在crystal报表中的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

试试这个可能有用的

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim data As New DataClasses1DataContext
Dim m = (From master In data.Masters Select master Where master.ID = 10)
Dim a As New CrystalReport3
a.SetDataSource(m)
CrystalReportViewer1.ReportSource = a
End Sub

最新更新