問題:
水晶報表中,因為資料來源的欄位是不固定的,可否在執行時動態新增欄位,就象在winform中動態新增控制元件一樣?(更新:2003-11-05)
——————————————————————————————————————
解決方案:
用“公式欄位”
1、根據欄位的最大數量,定義若干個“公式欄位”,FormulaFeild1、FormulaFeild2……,公式為空;
2、把“公式欄位”按順序放在“詳細資料”裡;
3、在程式裡動態將“公式欄位”賦值為“具體欄位”;
如:FormulaField1.Text= "{客戶.客戶 ID}"
——————————————————————————————————————
參考:
1、通過 ReportDocument 物件的 DataDefinition 屬性來檢索 DataDefinition 物件。
ReportDocument 成員
公共例項屬性
DataDefinition DataDefinition。獲取 DataDefinition 物件。
2、DataDefinition 類
DataDefinition 成員 | CrystalDecisions.CrystalReports.Engine 名稱空間
要求
名稱空間:CrystalDecisions.CrystalReports.Engine
平臺:Windows 98,Windows NT 4.0,Windows Millennium Edition,Windows 2000,Windows XP
程式集:CrystalDecisions.Crystalreports.Engine(在 CrystalDecisions.Crystalreports.Engine.dll 中)
包含所有與資料操作有關的資訊(資料操作依據報表中的資料來源)。
有關該型別所有成員的列表,請參見 DataDefinition 成員。
Object
DataDefinition
備註
可以使用該類來定義為報表和組選擇記錄的方式,還可以檢索組集合和各種欄位定義集合。
通過 ReportDocument 物件的 DataDefinition 屬性來檢索 DataDefinition 物件。
3、通過 DataDefinition 物件的 FormulaFieldDefinitions 屬性來檢索 FormulaFields 物件。
DataDefinition 成員
DataDefinition 類 | CrystalDecisions.CrystalReports.Engine 名稱空間
公共例項屬性
FormulaFields FormulaFieldDefinitions。獲取 FormulaFieldDefinitions 集合。
4、FormulaFieldDefinitions 類
FormulaFieldDefinitions 成員 | CrystalDecisions.CrystalReports.Engine 名稱空間
要求
名稱空間:CrystalDecisions.CrystalReports.Engine
平臺:Windows 98,Windows NT 4.0,Windows Millennium Edition,Windows 2000,Windows XP
程式集:CrystalDecisions.Crystalreports.Engine(在 CrystalDecisions.Crystalreports.Engine.dll 中)
包含報表中的每個公式欄位的 FormulaFieldDefinition 物件。
有關該型別所有成員的列表,請參見 FormulaFieldDefinitions 成員。
Object
SCRCollection
FormulaFieldFieldDefinitions
備註
通過 DataDefinition 物件的 FormulaFields 屬性來檢索 FormulaFieldDefinitions 集合。
5、獲取 FormulaFieldDefinition 物件,並設定公式。
如:FormulaFieldDefinition.Text = "{客戶.客戶 ID}"
FormulaFieldDefinition 成員
FormulaFieldDefinition 類 | CrystalDecisions.CrystalReports.Engine 名稱空間
公共例項屬性
FormulaName(從 FieldDefinition 中繼承而來) 字串。獲取 Crystal Report 公式語法中的欄位定義唯一公式名。
Kind(從 FieldDefinition 中繼承而來) FieldKind。獲取欄位的型別。
名稱 字串。獲取顯示在“欄位資源管理器”中的公式欄位名。
NumberOfBytes(從 FieldDefinition 中繼承而來) Int32。獲取在記憶體中儲存欄位資料所需的位元組數。
Text 字串。獲取或設定公式的文字。
UseCount(從 FieldDefinition 中繼承而來) Int32。獲取某欄位在報表中使用的次數。
ValueType(從 FieldDefinition 中繼承而來) FieldValueType。獲取欄位值的型別。
公共例項方法
Check 檢查公式。如果有語法錯誤,則返回錯誤字串和 false。