2011-07-20 146 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

當我添加引用,我在項目選項卡,我什麼都看不到,如果多數民衆贊成你在說什麼。如果不是,你可以指導我去哪裏? –