C# 如何以编程方式将Crystal Reports公式从Crystal语法更改为基本语法-在Visual Studio 2005中

C# 如何以编程方式将Crystal Reports公式从Crystal语法更改为基本语法-在Visual Studio 2005中,c#,visual-studio-2005,crystal-reports,C#,Visual Studio 2005,Crystal Reports,我想以编程方式更改大量报表中的公式,如中,但我还需要在Crystal语法和Basic语法之间更改公式。在对象模型中,我看不到任何方法可以做到这一点。可能吗 i、 我有一个叫做“Period”的公式,它已经存在于大量的报告中,并且目前是用Crystal语法定义的。我想将公式设置为基本语法,并提供公式的更新文本。我不需要自动将当前定义从crystal转换为basic;我已经有了新的公式文本 如果我简单地循环浏览所有报告,打开它们,然后设置FormulaFieldDefinition的文本属性,那么公

我想以编程方式更改大量报表中的公式,如中,但我还需要在Crystal语法和Basic语法之间更改公式。在对象模型中,我看不到任何方法可以做到这一点。可能吗

i、 我有一个叫做“Period”的公式,它已经存在于大量的报告中,并且目前是用Crystal语法定义的。我想将公式设置为基本语法,并提供公式的更新文本。我不需要自动将当前定义从crystal转换为basic;我已经有了新的公式文本

如果我简单地循环浏览所有报告,打开它们,然后设置FormulaFieldDefinition的文本属性,那么公式仍然设置为“Crystal Syntax”,并且不会正确计算。目前,我唯一的解决方案是手动打开每个报表,编辑公式,将下拉列表从Crystal Syntax更改为Basic Syntax。

这意味着Crystal Syntax和Basic Syntax支持公式-它不会自动接受这两种语法吗?
或者您想在这两种语法之间进行转换?

我相信,@CodeByMoonlight确认这是不可用的。因此,对于像我一样有许多报告需要更新的人来说:享受手动过程,希望你永远不必再更改

您可以像这样浏览报表对象模型。 只需更改公式和公式名称

public ReportDocument GetReport(DataSet ds)
    {
        const string formula = "WhileReadingRecords;" +
                               "<<your formula>>";


        ReportDocument report = new InvoiceReport();
        report.SetDataSource(ds);

        // iterate report objects
        foreach (ReportObject ro in report.ReportDefinition.ReportObjects)
        {

            if ((ro.Kind == ReportObjectKind.FieldObject && ro.Name == "<<FormuleName>>"))
            {
                ((FormulaFieldDefinition) ((FieldObject) o).DataSource).Text = formula;
            }
        }
        return report;
    }
公共报告文档GetReport(数据集ds) { const string formula=“WhileReadingRecords;”+ ""; ReportDocument report=新发票报告(); SetDataSource(ds)报告; //迭代报表对象 foreach(report.ReportDefinition.ReportObjects中的ReportObject) { if((ro.Kind==ReportObjectKind.FieldObject&&ro.Name==“”) { ((FormulaFieldDefinition)((FieldObject)o).DataSource.Text=公式; } } 返回报告; }
当前不可能-语法类型不是任何地方的公开属性。但是为什么你想把这一个公式改成VB语法呢?因为我有上百个报告,如果我不需要的话,我无法手动打开它们。但现在我有了。