Crystal Reports - параметры по умолчанию - PullRequest
0 голосов
/ 20 декабря 2008

В отчетах Crystal вы можете определить значения по умолчанию для параметров отчета.

Например, я мог бы иметь диапазон дат и установить начало по умолчанию 12/01/2008 и конец по умолчанию 12/31/2008.

Можно ли изменить эти значения по умолчанию во время выполнения? Например:

1 - по умолчанию первый и последний дни текущего месяца?

2 - По умолчанию в первый и последний дни финансового календаря частной компании? (то есть посмотрите в базе данных)

3 - первые и последние дни текущего года?

Вы поняли. Это возможно? Я даже был бы открыт для решения, которое включало бы запуск внешнего приложения для доступа к отчетам и их изменения, если кто-нибудь знает, как это сделать.

Edit:

Чтобы ответить на вопрос, заданный Филиппом Грондиером, большинство из этих отчетов запускаются из приложения. Я надеялся на что-то более простое, чем манипулирование кристаллическим объектом во время выполнения; Сейчас у меня есть руки, чтобы разобраться с другими частями этого API. Хотя я мог бы заглянуть в будущее.

Ответы [ 2 ]

1 голос
/ 18 ноября 2009

Прочитайте мою публикацию Crystal Reports: параметры именованных диапазонов дат . Может быть, вы сможете использовать эту технику для своих целей.

1 голос
/ 20 декабря 2008

Планируете ли вы запустить свой Crystal Report из интерфейса Crystal Reports или в виде надстройки, встроенной в другую программу (вы можете, например, использовать поддержку выполнения CrystalX ActiveX Designer Designer - craxdrt.dll - в коде VB)? В этом последнем случае можно манипулировать каждым объектом отчета перед его запуском. Такие объекты, как параметры, могут быть обновлены в соответствии с вашими потребностями.

В качестве простого примера такого обновления во время выполнения моя подпрограмма печати отчета всегда будет проверять, есть ли в отчете поле с именем «printBy». Если это поле найдено, его значение будет сопоставлено с именем домена пользователя, который запрашивает отчет, и будет распечатано.

На более высоком уровне вы можете даже изменить форму строки SQL отчета, чтобы добавить специальные фильтры, которые могут быть унаследованы из вашего кода. При этом вам могут даже не понадобиться параметры: пусть ваш код добавляет значения фильтрации «на лету»

РЕДАКТИРОВАТЬ: некоторые примеры кода:

(m_rapport - это объект CRAXDRT.report, ActiveSession - мой текущий объект сеанса)

If m_rapport.ParameterFields.Count > 0 Then
    For i = 1 To m_rapport.ParameterFields.Count
        If m_rapport.ParameterFields(i).Name = "{?PUB_DateDebutPeriode}" Then
            m_rapport.ParameterFields(i).AddCurrentValue CDate(DateValue(sessionActive.dateDebutPeriode))
        End If
        If m_rapport.ParameterFields(i).Name = "{?PUB_DateFinPeriode}" Then
            m_rapport.ParameterFields(i).AddCurrentValue CDate(DateValue(sessionActive.dateFinPeriode))
        End If
        If m_rapport.ParameterFields(i).Name = "{?PUB_id_Personne}" Then
            m_rapport.ParameterFields(i).AddCurrentValue StringFromGUID(clientActif.id_Personne)
        End If
    Next i
Endif

У меня также есть другая функция для изменения источника данных отчета во время выполнения, чтобы отчеты могли выполняться на разных серверах / в разных местах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...