现在困惑于水晶报表的动态修改操作,报表版本是9.2,在VC6.0通用对话框中,我想在程序中动态修改已知报表中的公式内容(公式已放置在报表中).我查过不少资料,不过好像只有VB,VB.NET方面的内容,而在VC6.0中这些函数似乎有所不同,参数类型也不同,我只能做到动态添加报表中没有的字段,而不能修改报表中已设置的公式内容,所以想向各位大人们请教一下,

解决方案 »

  1.   

    我是这样做的,首先获取 FormulaFieldDefinition 对象,并设置公式
    IFormulaFieldDefinitionsPtr Formula1;
    Formula1=m_Report->FormulaFields->GetItemByName("Formula1");//假如我报表中自定义公式的名字为"Formula1"(具体是不是这样获取我
    就不清楚)
    //但在VC里这个对象没有TEXT成员让我来设置具体公式,所以接下来我不清楚怎样做,
    而在VB里好像如此
    下面的“field1“为报表上你自定义的公式字段。
    field1=cr1.DataDefinition.FormulaFields["field1"];
    field1.Text="{view_cgrk.nie}";
    水晶报表中的公式字段可以在vb程序中读取到 并设置公式来动态显示你需要的信息'*****
    '*函数名: setFormulaFields
    '*函数功能: 控制水晶报表内公式字段的公式内容
    '***********Public Function SetFormulaFields(carp As CRAXDRT.Report, FieldName, formula As String)
    Dim i
    With carp
    For i = 1 To .FormulaFields.Count
    If .FormulaFields(i).FormulaFieldName = FieldName Then
    .FormulaFields(i).Text = formula
    End If
    Next i
    End With
    End Function
    而。NET中
     //   填充的数据集传递给报表
      oRpt.SetDataSource   (dataSet);  oRpt.DataDefinition.FormulaFields[0].Text   ="{用户.id}";
      oRpt.DataDefinition.FormulaFields[1].Text   ="{用户.用户名}";
      oRpt.DataDefinition.FormulaFields[2].Text   ="{用户.密码}";
      oRpt.DataDefinition.FormulaFields[3].Text   ="{用户.权限}";
    可是在VC中呢??究竟怎么设置呢,疑惑。
      

  2.   

    IFormulaFieldDefinitionsPtr改成 IFormulaFieldDefinitionPtr
    笑纳。