2010-10-19 61 views
0

水晶報告可以從對象數據源而不是數據庫中獲取數據嗎?我正在使用vs2008附帶的水晶報告。我在c#3.5編碼。水晶報告可以從對象數據源獲取數據嗎?

我想使用返回列表< MyClass>的對象數據源。

對於我們將來遷移到ssrs時,ssrs 2008可以從此對象數據源獲取數據嗎?

+0

我很困惑。你在問關於Crystal Reports或SQL Server的功能嗎? – PowerUser 2010-10-19 13:26:54

+0

我們在談論什麼樣的對象數據源?如果您的數據源可以通過ODBC或XML導出,那麼是的,Crystal可以導入它。 – PowerUser 2010-10-19 13:29:50

+0

我首先問的是水晶。我想使用返回列表的對象數據源。那麼你是否說如果將我的對象數據源導出到一個xml文件,我可以用它作爲我的晶體輸入? – 2010-10-19 13:32:15

回答

1

SetDataSource具有除ICollection參數以外的重載。使用它,您可以將簡單的對象集合綁定到CR。但是這不像使用數據集那麼靈活。通過數據集,您可以綁定多個相關表並生成更高複雜度的報表。

服務器的遷移對CR沒有影響,因爲SetDataSource僅適用於斷開的對象,如數據集或對象數據源。

1

是的,你可以做到這一點,但你必須包裹對象的數組:

// my crystal report 
Rpt rpt = new Rpt(); 


AirLine lAirLine = (AirLine)cmbAirLine.SelectedItem; 

// I added two objects as datasources in report designer 

// here aWB.AWBPieceList is List<AWBPiece> where 'AWBPiece' is some class. 
rpt.Database.Tables[0].SetDataSource(AWBPieceList.ToArray()); 

// the second : objects are mapped to tables by crystal report. 
rpt.Database.Tables[1].SetDataSource(new AirLine[] { lAirLine }); 
+0

+1表示rpt.Database.Tables。在一些在DataSet中使用多個DataTable的舊報告中,我只能用對象列表替換其中一個數據源,而無需重寫整個報告。 – bstoney 2011-05-25 23:56:32

+0

此外,沒有必要將列表轉換爲數組CR(至少v13)將愉快地使用任何枚舉。 – bstoney 2011-05-25 23:58:56