OleDB не смог определить десятичное значение


Я пытаюсь получить таблицу из FoxPro в 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.

Кто-нибудь видел эту ошибку раньше, и если да, то как я могу обойти это?

1 2

1 ответ:

Если if задыхается от даты и времени с ложным сообщением, вы можете попробовать с небольшим изменением через

 AND ew.ew_from > CTOD( ? )";

И параметр в виде строки только даты

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

Команда CTOD () VFP означает "от символа к дате", и поскольку вы уже находитесь в ожидаемом формате месяц/день/год, следует пройти через него.

Если сбой на самом деле происходит на другом поле, таком как "ew.ew_totdays", вы всегда можете начать с обновления запроса, чтобы ограничить поля, возвращаемые только ключом ID, оставить где один пункт. Затем, если он пройдет, добавляйте по одному полю за раз. Вы можете иметь нулевое значение где-то в данных.

Если все поля в порядке, то вам, возможно, придется применить запрос, основанный на предложении WHERE и критериях удаления по одной части за раз, пока не будут применены все.