我的Ms-Access
数据库表中有一个短日期格式的日期字段。
我在DateTimePicker
dd/MM/yyyy
日期格式的C#计划short
控件中
我尝试使用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.
答案 0 :(得分:2)
将Parameters.AddWithValue更改为Parameters.Add
Cmd.Parameters.Add("@MyFrom", DbType.DateTime);
如果您使用Parameters.AddWithValue
,则需要将Value
作为秒Parameter
传递,而不是数据类型
Cmd.Parameters.AddWithValue("@MyFrom", dt_From.Value);
您还需要将CommandType
设置为Text
答案 1 :(得分:0)
答案 2 :(得分: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,这是使用的日期。
管道字符(|)不能用在日期值中,即使用后面的引号括起来。