Внедрение значения в текст - PullRequest
0 голосов
/ 10 июня 2009

У меня есть текст договора, который может измениться.

В настоящее время (не действующая система) хранится в поле базы данных (мы определяем, какой текст контракта получить, используя другие поля таблицы) Мне, однако, необходимо отобразить конкретную дату (на основе индивидуального контракта) в этом тексте.

IE (но 12 января, меняется в зависимости от индивидуального контракта):

бла-бла-бла ... 12 января 2009 года ... бла-бла-бла

но все остальное в тексте договора такое же.

Я ищу способ вставить дату в этот текст. Аналогично .NET

Console.Write("Some text here {0} and some more here", "My text to inject");

Есть ли что-то подобное? Или мне нужно разделить текст на два поля и просто объединить?

Я всегда отображаю эту информацию с помощью Crystal Reports, поэтому, если я могу ввести данные через Crystal, то это нормально.

Я использую Crystal Reports, SqlServer 2005 и VB.net.

Ответы [ 4 ]

1 голос
/ 10 июня 2009

Вы можете использовать некоторую «зарезервированную строку» (например, «{0}») как часть контракта, а затем выполнить замену после чтения из базы данных.

Если для этой зарезервированной строки нет опций (например, если в контракте могут содержаться строковые символы любого типа в любой последовательности, что я считаю маловероятным), вам, вероятно, придется разделить на 2 текстовых поля

1 голос
/ 10 июня 2009

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

Если данные хранятся в базе данных, текст формулы должен выглядеть следующим образом:

"Some static text "  & totext({yourRecord.yourDateField}, "yyyy") 

Или вы можете указать его в качестве параметра перед показом отчета:

    Dim parameterValue As New CrystalDecisions.Shared.ParameterDiscreteValue
    value.Value = yourDate
    Dim parameter As New CrystalDecisions.Shared.ParameterField
    parameter.ParameterFieldName = "MyParam"
    parameter.CurrentValues.Add(value)
    parameter.HasCurrentValue = True
    Me.CrystalReportViewer1.ReportSource = rapport
    Me.CrystalReportViewer1.ParameterFieldInfo.Clear()
    Me.CrystalReportViewer1.ParameterFieldInfo.Add(parameter)

Тогда текст формулы должен выглядеть так:

"some static text " & {?MyParam}
1 голос
/ 10 июня 2009

Вы пытались поместить текстовый маркер, такой как {0} выше, который можно заменить в коде отчетов Crystal?

0 голосов
/ 24 июня 2009

Я предполагаю, что у вас есть источник данных, связанный с вашим отчетом. Вы можете перетащить поле из капли Database Explorer туда, где оно должно появиться. Таким образом, при каждом запуске отчета всегда будет отображаться правильный текст.

...