2012-03-05 65 views
4

我正在處理報告,需要向我的數據集和RPT文件中的一個添加列,但是當我嘗試修改數據集時,我得到指定的表不存在的錯誤。當我查看代碼時,它看起來最初有一個用於此目的的表,但是這種方法已經被放棄,現在這是用附加到報告的代碼中的DataSet完成的。將列添加到CrystalSet的DataSet(xsd)

我的問題是,我需要在報告中添加這個新列,我似乎無法以某種方式獲取數據句柄,因此我可以將新字段拖到報告上,因爲我無法找到所需的DataSet部分,因爲它不像以前那樣存在,並且DataSet中的代碼現在佔據了它的位置。

任何人都能指出我在正確的方向如何去做這項工作?

UPDATE: 這大約是我的數據集是如何獲取到水晶報表

private Sub ShowReport() 
    Dim dsStatsForPlanned As DataSet = Nothing 
    dsStatsForPlanned = DirectCast(Session(CreateSessionKey()), DataSet) 
    plannedProductRpt.SetDataSource(dsStatsForPlanned) 
End Sub 

我已經添加了額外的領域,我需要從會議即將在DataSet,但我想使用Designer將這個額外的字段添加到報表中,當我嘗試刷新或更改數據源時,Designer告訴我該表不存在,大概是因爲該表只存在於內存中,並且不直接回連到一個SQL表。

回答

3

後挖掘,並發現了大量的信息,這是沒有幫助的幾天,我終於成功地從2006年在這裏找到在後回答我的問題:

http://sstjean.blogspot.com/2006/12/xsdexe-and-msdatasetgenerator-operate.html

我做了什麼修復我的問題:

  • 在文本編輯器中手動編輯XSD文件並添加我需要的列。這使得它們在Visual Studio中查看時出現在我的XSD中。
  • 爲XSD運行指定的自定義工具以重新生成DataSet。在我的情況下,它是MSDataSetGenerator。這已列在VS的屬性選項卡上,我可以右鍵單擊解決方案資源管理器中的XSD並選擇運行自定義工具。
  • 打開我的RPT文件並運行驗證數據庫。這終於表示數據庫已更改,它正在更新報告,現在我在報告設計器中看到了我的新字段。
0

我的做法是實際修改Crystal以外的數據。因此,無論這意味着更改您的查詢,還是更新.xsd,您都會在此處添加專欄。然後在Crystal Reports中,您將轉到菜單欄中的「數據庫」,如果您的數據源/位置未更改,則選擇「驗證數據庫」,如果存在,則選擇「設置數據源位置」。一旦您重新驗證數據源,您的新列應顯示在數據庫字段中,並且您可以將其拖放到報告中。

+0

此方法在過去與其他數據集完美配合,但似乎不適用於如何將此當前數據集引入此報告。我更新了原始問題,並解釋了我的數據集如何綁定到報告。 – Adam 2012-03-07 19:06:21

+0

您是該報告的原始作者嗎?如果是這樣,你最初是如何創建數據源的?如何創建一個新的數據源來取代Session?我知道這並不理想,但也許像Session2這樣的東西可能會使Designer識別出這些變化。 – 2012-03-07 21:03:11

+0

這是問題的一部分,我不是原創設計師,也不能訪問原始設計師或任何文檔,我只是維護人員。從代碼中我可以理解,原始數據源WAS是XSD數據集中的一個表格,但是隨後使用後面的代碼將其轉換爲分配給該報告的內存數據集中的相同內容。 – Adam 2012-03-07 22:07:59