1

我正在尝试在 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
4

1 回答 1

0

试试这个可能有帮助

 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
于 2012-10-06T09:23:12.510 回答