using (OleDbConnection conn = new OleDbConnection(....))
{
OleDbCommand command = new OleDbCommand("update table", conn);
command.Parameters.Add("column", OleDbType.Decimal).Value = value; //value тоже decimal
...
}
Вылетает ошибка не соответсвие типов, из-за того что value=0.01,а должно быть 0,01.То есть дело в разделители.
Полазил почитал.Все говорят про локаль.Но у меня локаль русская соответсвенно NumberFormat.NumberDecimalSeparator=",", а в value точка.Что делать?
Здравствуйте, linker, Вы писали:
L>Полазил почитал.Все говорят про локаль.Но у меня локаль русская соответсвенно NumberFormat.NumberDecimalSeparator=",", а в value точка.Что делать?
Здравствуйте, linker, Вы писали:
L>Вообщем проблема в следующем,
L> command.Parameters.Add("column", OleDbType.Decimal).Value = value; //value тоже decimal
L>Вылетает ошибка не соответсвие типов, из-за того что value=0.01,а должно быть 0,01.То есть дело в разделители. L>Полазил почитал.Все говорят про локаль.Но у меня локаль русская соответсвенно NumberFormat.NumberDecimalSeparator=",", а в value точка.Что делать?
_Тип_ переменной value — строка?
... << RSDN@Home 1 alpha 3 rev. 0>>
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, mrozov, Вы писали:
M>Здравствуйте, linker, Вы писали:
L>>Полазил почитал.Все говорят про локаль.Но у меня локаль русская соответсвенно NumberFormat.NumberDecimalSeparator=",", а в value точка.Что делать?
M>Может стоит сменить локаль для потока?
Для чьего потока, у меня в потоке локаль та которая и в Access
Здравствуйте, linker, Вы писали:
L>Полазил почитал.Все говорят про локаль.Но у меня локаль русская соответсвенно NumberFormat.NumberDecimalSeparator=",", а в value точка.Что делать?
А ежели вот так написать —
command.Parameters.Add("column", OleDbType.Decimal).Value = value.ToString();
?
Здравствуйте, mrozov, Вы писали:
M>Здравствуйте, linker, Вы писали:
L>>Полазил почитал.Все говорят про локаль.Но у меня локаль русская соответсвенно NumberFormat.NumberDecimalSeparator=",", а в value точка.Что делать?
M>А ежели вот так написать — M>command.Parameters.Add("column", OleDbType.Decimal).Value = value.ToString(); M>?
Здравствуйте, _FRED_, Вы писали:
_FR>Здравствуйте, linker, Вы писали:
_FR>>>_Тип_ переменной value — строка? L>>неа, Decimal
_FR>т.е. _FR>
_FR>value.GetType() == typeof(decimal)
_FR>
Да так и есть. _FR>? Тогда не ясно, в каком месте ошибка вылетает?
Ошибка вылетает при command.ExecuteNonQuery();
---------------------------
---------------------------
Data type mismatch in criteria expression.
---------------------------
OK
---------------------------
_FR>В каком месте (в какой строке) появилась точка вместо запятой?
Точка все время, запятой и не было.
Здравствуйте, _FRED_, Вы писали:
_FR>Здравствуйте, linker, Вы писали:
_FR>>>? Тогда не ясно, в каком месте ошибка вылетает? L>>Ошибка вылетает при command.ExecuteNonQuery();
_FR>А результат исключение.ToString() можешь показать?
это не ответ на вопрос а скорее углубление вопроса.
Есть подозрение, что DecimalSeparator тут не причем (а может и причем какимто левым местом).
Если создадим в Аксесе базу с таблицей с полем типа "Действительное" (извините русская версия но мапится оно какраз на Decimal),
накидаем простеньки ДатаСет (мастером, без рук, для чистоты эксперемента).
Добавим в таблицу строку (акцесом) с нашим вожделенным Decimal значением.
то даже тупое
TestDataSet ds = new TestDataSet();
TestTableAdapter ad = new TestTableAdapter();
ad.Fill(ds.Test);
ds.Test.Rows[0].SetModified();
ad.Update(ds);
Здравствуйте, vitz, Вы писали:
V>Здравствуйте, linker, Вы писали:
V>это не ответ на вопрос а скорее углубление вопроса. V>Есть подозрение, что DecimalSeparator тут не причем (а может и причем какимто левым местом). V>Если создадим в Аксесе базу с таблицей с полем типа "Действительное" (извините русская версия но мапится оно какраз на Decimal), V>накидаем простеньки ДатаСет (мастером, без рук, для чистоты эксперемента). V>Добавим в таблицу строку (акцесом) с нашим вожделенным Decimal значением. V>то даже тупое V>
V>TestDataSet ds = new TestDataSet();
V>TestTableAdapter ad = new TestTableAdapter();
V>ad.Fill(ds.Test);
V>ds.Test.Rows[0].SetModified();
V>ad.Update(ds);
V>
V>кидает тоже исключение
V>для float и double такого не наблюдается
Интересно как тпереь это побороть.
(OleDbType.Varchar)=value.ToSting()