簡體   English   中英

如何以編程方式將Crystal Reports公式從Crystal語法更改為Basic語法-在Visual Studio 2005中

[英]How to programmatically change a Crystal Reports formula from Crystal Syntax to Basic Syntax - in Visual Studio 2005

我想以編程方式在很多報告中更改公式,就像在這個問題中一樣 ,但是我還需要在Crystal語法和Basic語法之間更改公式。 我在對象模型中看不到任何方法。 可能嗎?

即我有一個名為“ Period”的公式,該公式已在許多報告中存在,並且當前已在Crystal Syntax中定義。 我想將公式設置為“基本語法”並提供公式的更新文本。 我不需要自動將當前的定義從crystal轉換為basic。 我已經有了新的公式文本。

如果僅瀏覽所有報告,將其打開,然后設置FormulaFieldDefinition的Text屬性,則公式仍將設置為“水晶語法”,並且無法正確評估。 目前,我唯一的解決方案是手動打開每個報表,編輯公式,將下拉菜單從“ Crystal語法”更改為“基本語法”。

這個http://msdn.microsoft.com/zh-cn/library/ms225743%28VS.80%29.aspx說,Crystal語法和Basic語法支持公式-它不自動接受它們嗎? 還是要在這兩種語法之間轉換?

我相信@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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM