Я пытаюсь вставить значение из поля формы в поле ДЕНЬГИ SQL Server, используя ColdFusion. Если сумма всего в долларах или центы больше 12, вставка идет нормально.
Но если сумма центов меньше 12, то, согласно сгенерированной ошибке, система конвертирует сумму денег в формат даты перед вставкой, без моего запроса об этом. И затем, конечно, он выдает ошибку, потому что я пытаюсь вставить дату в поле ДЕНЬГИ. (!)
Я пытался использовать CFQUERYPARAM с типом CF_SQL_DECIMAL, но это не сработало. Любые мысли будут с благодарностью.
Вот код формы:
<CFFORM ACTION="_execute_project_payment.cfm?action=Add" METHOD="post" NAME="FormX">
<CFOUTPUT>
<INPUT TYPE="hidden" NAME="projectID" VALUE="#projectID#">
<TR>
<TD CLASS="label" ALIGN="right" VALIGN="top">Payments:</TD>
<TD>
$<CFINPUT NAME="payment" TYPE="TEXT" VALIDATE="FLOAT" SIZE="15" REQUIRED="YES" MESSAGE="You must enter a payment amount."> Date:
<CFINPUT TYPE="text" name="payment_date" id="payment_date" SIZE="12" VALIDATE="DATE" REQUIRED="YES" MESSAGE="You must enter a payment date.">
<img src="cal_icon.gif" id="trigger_payment_date"
style="cursor: pointer; border: 0px;"
title="Date selector"
onmouseover="this.style.background=’red’;"
onmouseout="this.style.background=’’" />
<script type="text/javascript">
Calendar.setup({
inputField : "payment_date",
ifFormat : "%m/%d/%Y",
button : "trigger_payment_date",
align : "Tl",
singleClick : false
});
</script>
<INPUT TYPE="Submit" VALUE="Add">
<BR>
</TD>
</TR>
</CFOUTPUT>
</CFFORM>
А вот и вставка:
<CFSET paydateODBC = CreateODBCDate(FORM.payment_date)>
<CFQUERY NAME="add_project_payment" DATASOURCE="#dsource#" USERNAME="#usern#" PASSWORD="#passw#">
INSERT INTO project_payments (
projectID,
payment,
payment_date
)
VALUES (
#projectID#,
#FORM.Payment#,
#paydateODBC#
)
</CFQUERY>
А вот и ошибка, при попытке ввести 666.10 в качестве оплаты:
[Macromedia][SQLServer JDBC Driver][SQLServer]Conversion failed when converting datetime from character string.
The error occurred in C:\Websites\qrpqiy\toubltracker\_execute_project_payment.cfm: line 21
19 : #projectID#,
20 : #FORM.payment#,
21 : #paydateODBC#
22 : )
23 : </CFQUERY>
SQLSTATE 22007
SQL INSERT INTO project_payments ( projectID, payment, payment_date ) VALUES ( 433, {d '0666-10-01'}, {d '2009-05-15'} )
VENDORERRORCODE 241