水晶报表标准版的DataSet的字段不能动态!

解决方案 »

  1.   

    根据公式字段分组,运行时更改公式……编程更改公式字段示例代码(作者:海波.NET,更新:2003-10-21)using CrystalDecisions.CrystalReports.Engine;namespace GMedicine
    {
    /// <summary>
    /// FormGMedicine 的摘要说明。
    /// </summary>
    public class FormGMedicine : System.Windows.Forms.Form
    {
    private const string CR_PATH = @"..\..\RPTGMedicine.rpt";
    private const string FORMULA_FIELD_NAME = @"Group";
    private string[] FORMULA_FIELD_TEXT = {"{客户.国家和地区}", "{客户.城市}",
      "{客户.联系人职位}", "{客户.地区}"}; private CrystalDecisions.Windows.Forms.CrystalReportViewer crvGMedicine;
    private GMedicine.RPTGMedicine rptGMedicine;
    private System.Windows.Forms.ComboBox cbxSelectGroup;

    private void FormGMedicine_Load(object sender, System.EventArgs e)
    {
    LoadFormulaList(); crvGMedicine.ReportSource = rptGMedicine; crvGMedicine.RefreshReport();
    } private void cbxSelectGroup_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    FormulaFieldDefinition formulaField; formulaField = GetFormulaField(rptGMedicine, FORMULA_FIELD_NAME); formulaField.Text = cbxSelectGroup.SelectedItem.ToString(); crvGMedicine.RefreshReport();
    }

    private FormulaFieldDefinition GetFormulaField(ReportDocument Report, string formulaFieldName) 
    {
    FormulaFieldDefinition formulaField; // 按名称获取 FormulaFieldDefinition,
    //并返回此对象。
    formulaField = Report.DataDefinition.FormulaFields[formulaFieldName];
    if (formulaField != null) return formulaField;
    else return null;
    }

    private void LoadFormulaList()
    {
    foreach (string formula in FORMULA_FIELD_TEXT)
    {
    cbxSelectGroup.Items.Add(formula);
    }
    }
    }
    }