Как программно изменить формулу Crystal Reports с Crystal Syntax на Basic Syntax - в Visual Studio 2005 - PullRequest
1 голос
/ 05 марта 2010

Я хочу программно изменить формулы во многих отчетах, как в этот вопрос , но мне также нужно изменить формулу между Crystal Syntax и Basic Syntax. Я не вижу никакого способа сделать это в объектной модели. Возможно ли это?

т.е. У меня есть формула под названием «Период», которая уже существует во многих отчетах, и в настоящее время она определена в синтаксисе Crystal. Я хочу установить формулу в основной синтаксис и предоставить обновленный текст формулы. Мне не нужно автоматически преобразовывать текущее определение из кристалла в основное; У меня уже есть новый текст формулы.

Если я просто прокручиваю все отчеты, открываю их, затем устанавливаю свойство Text в FormulaFieldDefinition, тогда формулы по-прежнему имеют значение «Crystal Syntax» и не будут оцениваться правильно. В настоящее время мое единственное решение - открывать каждый отчет вручную, редактировать формулу, менять раскрывающийся список с Crystal Syntax на Basic Syntax.

Ответы [ 3 ]

0 голосов
/ 09 марта 2010

Я верю, и @CodeByMoonlight подтверждает, что это недоступно.Так что для всех, кто находится в той же лодке, что и я, со многими отчетами для обновления: наслаждайтесь этим ручным процессом и надеемся, что вам никогда не придется возвращаться!

0 голосов
/ 04 января 2016

Вы можете пройтись по модели объекта отчета следующим образом. Просто измените формулу и название формулы.

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;
    }
0 голосов
/ 05 марта 2010

this http://msdn.microsoft.com/en-us/library/ms225743%28VS.80%29.aspx говорит о том, что формулы поддерживаются с помощью Crystal Syntax и Basic Syntax - разве он не принимает их автоматически? Или вы хотите конвертировать между этими двумя синтаксисами?

...