Coldfusion:处理Date Field中的Null值

时间:2011-01-04 23:21:20

标签: sql-server-2008 datetime coldfusion coldfusion-8

我有这种形式的各种员工认证,我需要输入一个日期。有时这个日期将是未来几个月,其他日期将是未定义的,null。

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

  

传递给addEmployee函数的CPRADULTEXP参数不是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>    

现在它传递的是null值,数据库被设置为处理/接受空值。

我该如何解决?

1 个答案:

答案 0 :(得分:3)

你遗漏了最重要的部分 - 实际的CFC和执行插入的查询。发生的事情是您的<cfargument>标记被输入为'date',因此当您传递空字符串时,验证失败。 (这是我不输入我的论点的原因之一)。

您需要关闭类型检查或将参数类型更改为“string”或“any”。现在,当你这样做时,你还需要更改你的<cfqueryparam>标签(你 使用<cfqueryparam>,不是吗?!)这样的事情:< / p>

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

那会解决你的问题......