Установите для поля параметров Crystal Reports значение NULL во время выполнения

#crystal-reports #vb6 #crystal-reports-8.5

Вопрос:

У меня есть отчет Crystal Reports 8.5, в котором в качестве источника данных используется хранимая процедура. Эта хранимая процедура имеет несколько параметров, некоторые из которых являются необязательными и обязательными Null при выполнении процедуры.

В VB6 я попытался очистить параметр, но затем Crystal Reports предлагает пользователю ввести значение. Затем я попытался установить его в Nothing значение, но это приводит к ошибке недопустимого типа. Пример этой ParameterField детали приведен в приведенном ниже коде.

 Dim crApp As CRAXDRT.Application
Dim crRep As CRAXDRT.Report

Set crApp = New CRAXDRT.Application
Set crRep = crApp.OpenReport(ReportFile, 1)

'Option 1
crRep.ParameterFields(1).ClearCurrentValueAndRange '<-- This won't set it to Null but it clears the current value. User gets a prompt to enter a value.

'Option 2
crRep.ParameterFields(1).ClearCurrentValueAndRange
crRep.ParameterFields(1).AddCurrentValue Nothing '<-- Setting it to nothing gives an error at runtime
 

Итак, как задать параметр Null во время выполнения?

Ответ №1:

Вы должны установить поле параметров равным Empty .

 crRep.ParameterFields(1).ClearCurrentValueAndRange
crRep.ParameterFields(1).AddCurrentValue Empty
 

Это значение будет установлено Null при выполнении хранимой процедуры. Иногда вам даже приходится устанавливать его в Empty то время как текущее значение уже есть Empty . Потому что, когда вы Print составляете отчет, он все еще может запрашивать у пользователя ввод.