Linq で Crystal レポートを再度使用しようとしていますが、問題が発生しています。これをどのように行うべきかについて、さまざまなフォーラムや記事を読みましたが、何が間違っているのかわかりません。
最初に試した方法
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 では使用したことがありません。
2番目に試した方法
このWeb サイトで見た別の方法も試しましたが、何らかの理由で空白のレポートが表示されます。.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