1

我有这个表格,里面有各种员工证明,我需要输入一个日期。有时该日期将是未来几个月的日期,有时该日期将未定义,为空。

每当我尝试将空值传递给我的 CFC 时,我总是会收到如下所示的错误:

传递给 addEmployee 函数的 CPRADULTEXP 参数不是日期类型。

我的表格代码:

<!--- 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>    

现在它正在传递该空值,数据库设置为处理/接受空值。

我该如何解决?

4

1 回答 1

3

您忽略了最重要的部分 - 实际的 CFC 和执行插入的查询。发生的情况是您的<cfargument>标签输入为“日期”,因此当您传递空字符串时,验证失败。(这是我不输入论点的原因之一)。

您需要关闭类型检查或将参数类型更改为“字符串”或“任何”。现在,当您这样做时,您还需要将<cfqueryparam>标签(您正在使用<cfqueryparam>,不是吗?!)更改为以下内容:

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

那会解决你的...

于 2011-01-04T23:57:19.927 回答