C# 如何以编程方式将Crystal Reports公式从Crystal语法更改为基本语法-在Visual Studio 2005中
我想以编程方式更改大量报表中的公式,如中,但我还需要在Crystal语法和Basic语法之间更改公式。在对象模型中,我看不到任何方法可以做到这一点。可能吗 i、 我有一个叫做“Period”的公式,它已经存在于大量的报告中,并且目前是用Crystal语法定义的。我想将公式设置为基本语法,并提供公式的更新文本。我不需要自动将当前定义从crystal转换为basic;我已经有了新的公式文本 如果我简单地循环浏览所有报告,打开它们,然后设置FormulaFieldDefinition的文本属性,那么公式仍然设置为“Crystal Syntax”,并且不会正确计算。目前,我唯一的解决方案是手动打开每个报表,编辑公式,将下拉列表从Crystal Syntax更改为Basic Syntax。这意味着Crystal Syntax和Basic Syntax支持公式-它不会自动接受这两种语法吗?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的文本属性,那么公
或者您想在这两种语法之间进行转换?我相信,@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语法呢?因为我有上百个报告,如果我不需要的话,我无法手动打开它们。但现在我有了。