2011-07-20 112 views
1

我只是想知道如何将SQL传递给水晶报表。现在我只能将预制报告加载到我的水晶报表查看器中。现在,我希望能够添加参数来构建我的报告。下面是一些代码...将SQL传递给Crystal Report

private void btn_InventoryReport_Click_1(object sender, EventArgs e) 
    { 
     ReportDocument inventoryReport = new ReportDocument(); 
     inventoryReport.Load("C:\\Users\\Wilson Kao\\documents\\visual studio 2010\\Projects\\Wincent Warehouse Management Studios\\Wincent Warehouse Management Studios\\InventoryReport.rpt"); 
     inventoryReport.Refresh(); 
     crv_Report.ReportSource = inventoryReport; 
     crv_Report.Refresh(); 
    } 

现在,我希望能够加入SQL筛选出的报告,像这样

da.SelectCommand = new OleDbCommand("SELECT * FROM InventoryView WHERE vid = @vid", cs); 
da.SelectCommand.Parameters.Add("@vid", OleDbType.Integer).Value = vid; 
//Make Report Based on this SQL 

我尝试这样做:http://csharp.net-informations.com/crystal-reports/csharp-crystal-reports-sql-query.htm

但它说我错过了一个程序集或类似的东西(可能是64/32位不兼容),但希望我能做些别的事情。谢谢!

回答

0

已解决。看着这个bug,它说我实际上需要将一些dll移动到一个名为dotnet1的文件夹中(我不得不自己创建它)。之后,我不得不修改app.config,它工作。真棒

+0

另请参阅http://stackoverflow.com/a/7625571/74585我不必创建dotnet1,只需在app.config中将useLegacyV2RuntimeActivationPolicy =“true”添加到

1

这示例代码链接指定以下内容:

你必须包括CrystalDecisions.CrystalReports.Engine在C# 源代码。

using CrystalDecisions.CrystalReports.Engine; 
using CrystalDecisions.Shared; 

这意味着,在你的项目的引用,你必须有你需要手动导入CrystalDecisions.CrystalReports.Engine组装。例如。右键单击References并选择Add Reference,然后从列表中选择程序集或导航到磁盘上。

+0

嗨,我添加了一个参考,我看到了一些水晶报告,但我无法找到我正在寻找的一个(更像是不太确定哪一个找到)。我已经包括了这两个参考,但是我应该已经拥有它们了吗? –

+0

你的问题在这里有点含糊。但是你应该在你的项目引用中看到'CrystalDecisions.CrystalReports.Engine'。你做? –

+0

当我添加引用,我在项目选项卡,我什么都看不到,如果多数民众赞成你在说什么。如果不是,你可以指导我去哪里? –