1

あらゆる種類の従業員証明書が記載されたこのフォームを持っているので、日付を入力する必要があります。この日付が数か月先になる場合もあれば、日付が未定義でnullになる場合もあります。

CFCにnull値を渡そうとすると、常に次のようなエラーが発生します。

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値を渡しており、データベースはnullを処理/受け入れるように設定されています。

どうすれば修正できますか?

4

1 に答える 1

3

最も重要な部分、つまり実際のCFCと挿入を行うクエリを省略しています。何が起こっているのかというと、<cfargument>タグは「date」と入力されているため、空の文字列を渡すと検証は失敗します。(これが、引数を入力しない理由の1つです)。

型チェックをオフにするか、引数の型を「文字列」または「任意」に変更する必要があります。さて、それを行うときは、タグ(使用しているのではないですか?!)も次のように変更する必要<cfqueryparam>あります。<cfqueryparam>

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

それはあなたを修正します...

于 2011-01-04T23:57:19.927 に答える