Problema
Usando el proveedor de datos OLEDB para FoxPro 9.0 al intentar actualizar o insertar en una tabla que tuviera una columna de tipo OleDbType.DBTimeStamp se genera el siguiente error:
Data type mismatch in criteria expression
Causa
El problema es causado por la columna DateTime al pasarle los milisegundos ya que este tipo de dato OleDbType.DBTimeStamp no los soporta.
Solución
Eliminar los milisegundos. Tener en cuenta que el parametro en el CommandText debe estar con signo ?, ya que si se usa @ se genera error. El siguiente es un ejemplo donde se asume que el DbCommand “cmd” ya esta definido .
cmd.CommandText = “INSERT INTO flor (bar_flor,fecha_actu) VALUES (”,?)”;
DbParameter par = cmd.CreateParameter();
par.DbType = System.Data.DbType.DateTime;
par.ParameterName = “@fecha_actu”;
par.Value = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day,
DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
cmd.Parameters.Add(par);
dbConn.Open();
result = cmd.ExecuteNonQuery();
Leave a Reply