2011-06-23 280 views
0

我在我的Ms-Access數據庫表中使用短日期格式的日期字段。插入日期到Ms-Access數據庫的問題

我在我的C#程序中dd/MM/yyyyshort日期格式DateTimePicker控制

我嘗試使用這樣的C#代碼中插入數據:

SQL = "insert into MyTbl(D_from,D_to) values (@MyFrom,@MyTo)"; 
OleDbCommand Cmd = Conn.CreateCommand(); 
OleDbParameter dateparam1 = Cmd.Parameters.AddWithValue("@MyFrom", DbType.DateTime); 
dateparam1.Value = dt_From.Value; 

OleDbParameter dateparam2 = Cmd.Parameters.AddWithValue("@MyTo", DbType.DateTime); 
dateparam2.Value = dt_To.Value; 

Cmd.CommandText = SQL; 
Cmd.ExecuteNonQuery(); 

,我得到了錯誤:Data type mismatch in criteria expression.

回答

2

變化Parameters.AddWithValue到Parameters.Add

Cmd.Parameters.Add("@MyFrom", DbType.DateTime); 

如果你使用Parameters.AddWithValue,那麼你需要的Value通過爲第二Parameter,而不是數據類型

Cmd.Parameters.AddWithValue("@MyFrom", dt_From.Value); 

,你也需要設置CommandType作爲Text

+0

感謝您的幫助,我嘗試了它 - 但仍然是相同的錯誤 – Gali

+0

OleDbCommand Cmd = Conn.CreateCommand(); Cmd.Parameters.AddWithValue(「@ MyFrom」,dt_From.Value); Cmd.Parameters.AddWithValue(「@ MyTo」,dt_To.Value); Cmd.CommandText = SQL; Cmd.ExecuteNonQuery(); – Binil

+0

嘗試上面的代碼 – Binil

0

試試這個

dateparam1.Value = dt_From.Value.ToShortDateString(); 
dateparam2.Value = dt_To.Value.ToShortDateString(); 

否則必須看看這個:

日期值必須根據ODBC規範日期格式或者分隔或日期時間分隔符(「#」)分隔。否則,Microsoft Access會將該值視爲算術表達式,不會引發警告或錯誤。例如,「1996年3月5日」的日期必須表示爲{d'1996-03-05'}或#03/05/1996#;否則,如果只提交了03/05/1993,Microsoft Access將評估爲3除以5除以1996.該值舍入到整數0,並且由於零天映射到1899-12-31,這是使用的日期。

管道字符(|)不能在日期值中使用,即使用回引號括起來也是如此。