Coldfusion: работа со значениями NULL в поле даты - PullRequest
1 голос
/ 05 января 2011

У меня есть эта форма со всеми видами сертификатов сотрудников, мне нужно ввести дату.Иногда эта дата будет месяцами в будущем, в противном случае дата будет неопределенной, ноль.

Всякий раз, когда я пытаюсь передать нулевое значение в мой CFC, я всегда получаю сообщение об ошибке:

Аргумент CPRADULTEXP, передаваемый в функцию addEmployee, не относится к типу date.

Код моей формы:

<!--- If null, set a default if not, set the default to database default --->
<cfif not isDefined("certificationsList.cprAdultExp")>
<cfinput type="datefield" required="no" name="cprAdultExp" value="" >
<cfelse>
<cfinput type="datefield" required="no" name="cprAdultExp" value="#dateformat(certificationsList.cprAdultExp, "mm/dd/yyyy")#" >
</cfif>

Процессор формы:

<!--- Is the date defined? --->
<cfif len(Trim("form.cprAdultExp"))  EQ 0>
<cfinvokeargument name="cprAdultExp" value="#CreateODBCDate(Form.cprAdultExp)#">
<cfelse>
<cfinvokeargument name="cprAdultExp" value="">
</cfif>    

В данный момент это нулевое значение передается, база данных настроена на обработку / принятиеобнуляет.

Как я могу исправить?

1 Ответ

3 голосов
/ 05 января 2011

Вы пропускаете самую важную часть - фактический CFC и запрос, который выполняет вставку. То, что происходит, - ваш <cfargument> тег, напечатанный как «дата», поэтому, когда вы пропускаете пустую строку, проверка не проходит. (Это одна из причин, по которой я не печатаю свои аргументы).

Вам нужно будет либо отключить проверку типов, либо изменить тип аргумента на «string» или «any». Теперь, когда вы это сделаете, вам также нужно будет поменять тег <cfqueryparam> (вы используете <cfqueryparam>, не так ли ?!) на что-то вроде этого:

<cfqueryparam .... null="#not len(trim(arguments.thedate))#" />

Это исправит тебя ...

...