OleDB 无法确定十进制值

OleDB Could Not Determine the Decimal Value

我正在尝试从 FoxPro 获取 table 到 C#。我正在使用以下语句;

sqlCmd.CommandText = @"SELECT ew.ew_pplid, ew.ew_name, ew.ew_from, ew_to, ew.ew_totdays
                       FROM empwork ew
                       INNER JOIN employs emp ON ew.ew_pplid = emp.em_pplid
                       WHERE emp.em_netname NOT LIKE '' 
                       AND TRIM(emp.em_netname) <> '' 
                       AND emp.em_type <> 2
                       AND ew.ew_from > ?";
sqlCmd.Parameters.AddWithValue("pDate", Convert.ToDateTime("01/08/2016"));

但我遇到了以前从未见过的错误;

The Provider could not determine the Decimal value. For example, the row was just created, the default for the Decimal column was not available, and the consumer had not yet set a new Decimal value.

有没有人以前见过这个错误,如果有我该如何解决这个问题?

如果日期时间因错误消息而窒息,您可以尝试通过

稍作改动
 AND ew.ew_from > CTOD( ? )";

参数作为日期的字符串

sqlCmd.Parameters.AddWithValue("pDate", "01/08/2016");

VFP 的命令 CTOD() 表示最新字符,并且由于您已经处于预期的 month/day/year 格式,应该通过。

如果失败实际上是在另一个字段上,例如 "ew.ew_totdays",您始终可以从更新查询开始,以将返回的字段限制为仅 ID 键,而不要使用 where 子句。然后,如果它通过,则一次添加一个字段。数据中某处可能有 NULL 值。

如果所有字段都正确,那么您可能必须应用基于 WHERE 子句和剥离条件的查询,一次一个部分,直到应用所有字段。