Crystal Reports - Как передать текст поля формулы в SubReport в C #? - PullRequest
0 голосов
/ 25 октября 2018

У меня есть подотчет в основном отчете с именем SubReport1, и он получает поле формулы с именем SubReportFormula1.

Чтобы передать значение, подобное этому, в основной отчет, мне просто нужно установить:

ReportDocument Report = new ReportDocument();
Report.Load(RPTPath);
Report.DataDefinition.FormulaFields["MainReportFormula1"].Text = "'Hello'";
crystalReportViewer1.ReportSource = Report;

Даже если я хочу установить значение параметра в SubReport, это просто:

Report.SetParameterValue("SubReportParam1", "value 1", "SubReport1");

Вопрос:

Как передать определенное поле формулыв подотчете с использованием Crystal Reports в C # (Visual Studio 2017)?

1 Ответ

0 голосов
/ 25 октября 2018

Чтобы передать значение из подотчета обратно в основной отчет, вам нужно будет использовать переменную, объявленную в поле формулы с общей областью действия.Переменные могут иметь одну из 3-х различных областей действия в Crystal Report (Local, Global и Shared).Локальные переменные могут использоваться только в одном разделе, глобальные переменные имеют область действия, охватывающую разделы, но между вложенными отчетами и основным отчетом могут использоваться только общие переменные.

Чтобы создать переменную, необходимо создатьновое поле формулы в подотчете.Для этого поля формулы потребуется формула, подобная следующей:

Shared StringVar foo;
foo := {@FormulaFieldName};

Эта формула создаст переменную типа String с именем "foo" и заполнит ее значением из другого поля формулы с именем "FormulaFieldName",Если вам нужен тип данных, отличный от String, вы можете заменить текст StringVar на NumberVar или любое другое объявление типа данных, поддерживаемое Crystal.Однако редко требуется больше, чем типы данных String или Number.

Чтобы получить доступ к этой переменной в вашем основном отчете, вам потребуется создать еще одно новое поле формулы в основном отчете.Это новое поле формулы будет нуждаться в формуле, подобной следующей:

Shared StringVar foo;

Это поле формулы будет извлекать строковую переменную с именем "foo" и отображать значение, сохраненное в переменной ранее.

Вы также можете добавить дополнительные строки кода в формулу, если вам нужно объединить или объединить значение с другим фрагментом данных в вашем отчете.

Однако есть предостережение, о котором следует помнить с этими переменными.Вложенный отчет должен находиться в разделе отчета, который печатается перед любым разделом отчета, где используется значение переменной.Если вы поместите формулу, которая извлекает значение «foo», в раздел, предшествующий разделу, в котором расположен вложенный отчет, то «foo» еще не было присвоено значение, и оно будет обрабатываться как NULL.

...