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

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

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.

0
Nathan Koop 10 Июн 2009 в 21:27

4 ответа

Лучший ответ

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

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

1
Samuel Carrijo 10 Июн 2009 в 17:44

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

0
Brownman98 24 Июн 2009 в 19:37

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

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

"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
Jason Plank 11 Окт 2011 в 16:18

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

1
user93805user93805 10 Июн 2009 в 17:37