DecimalSeparator
От: linker Россия  
Дата: 25.06.08 11:05
Оценка:
Вообщем проблема в следующем,
            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 точка.Что делать?
... << RSDN@Home 1.2.0 alpha rev. 789>>
Re: DecimalSeparator
От: mrozov  
Дата: 25.06.08 12:41
Оценка:
Здравствуйте, linker, Вы писали:

L>Полазил почитал.Все говорят про локаль.Но у меня локаль русская соответсвенно NumberFormat.NumberDecimalSeparator=",", а в value точка.Что делать?


Может стоит сменить локаль для потока?
Re: DecimalSeparator
От: _FRED_ Черногория
Дата: 25.06.08 12:44
Оценка:
Здравствуйте, 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.
Re[2]: DecimalSeparator
От: linker Россия  
Дата: 25.06.08 12:45
Оценка:
Здравствуйте, mrozov, Вы писали:

M>Здравствуйте, linker, Вы писали:


L>>Полазил почитал.Все говорят про локаль.Но у меня локаль русская соответсвенно NumberFormat.NumberDecimalSeparator=",", а в value точка.Что делать?


M>Может стоит сменить локаль для потока?


Для чьего потока, у меня в потоке локаль та которая и в Access
... << RSDN@Home 1.2.0 alpha rev. 789>>
Re[2]: DecimalSeparator
От: linker Россия  
Дата: 25.06.08 12:46
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>_Тип_ переменной value — строка?

неа, Decimal
... << RSDN@Home 1.2.0 alpha rev. 789>>
Re: DecimalSeparator
От: mrozov  
Дата: 25.06.08 12:52
Оценка:
Здравствуйте, linker, Вы писали:

L>Полазил почитал.Все говорят про локаль.Но у меня локаль русская соответсвенно NumberFormat.NumberDecimalSeparator=",", а в value точка.Что делать?


А ежели вот так написать —
command.Parameters.Add("column", OleDbType.Decimal).Value = value.ToString();
?
Re[3]: DecimalSeparator
От: _FRED_ Черногория
Дата: 25.06.08 12:58
Оценка:
Здравствуйте, linker, Вы писали:

_FR>>_Тип_ переменной value — строка?

L>неа, Decimal

т.е.
value.GetType() == typeof(decimal)

? Тогда не ясно, в каком месте ошибка вылетает? В каком месте (в какой строке) появилась точка вместо запятой?
... << RSDN@Home 1 alpha 3 rev. 0>>
Help will always be given at Hogwarts to those who ask for it.
Re[2]: DecimalSeparator
От: linker Россия  
Дата: 25.06.08 13:08
Оценка:
Здравствуйте, mrozov, Вы писали:

M>Здравствуйте, linker, Вы писали:


L>>Полазил почитал.Все говорят про локаль.Но у меня локаль русская соответсвенно NumberFormat.NumberDecimalSeparator=",", а в value точка.Что делать?


M>А ежели вот так написать —

M>command.Parameters.Add("column", OleDbType.Decimal).Value = value.ToString();
M>?

Так то ясен пень будет запятая.
... << RSDN@Home 1.2.0 alpha rev. 789>>
Re[4]: DecimalSeparator
От: linker Россия  
Дата: 25.06.08 13:08
Оценка:
Здравствуйте, _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>В каком месте (в какой строке) появилась точка вместо запятой?

Точка все время, запятой и не было.
... << RSDN@Home 1.2.0 alpha rev. 789>>
Re[5]: DecimalSeparator
От: _FRED_ Черногория
Дата: 25.06.08 13:10
Оценка:
Здравствуйте, linker, Вы писали:

_FR>>? Тогда не ясно, в каком месте ошибка вылетает?

L>Ошибка вылетает при command.ExecuteNonQuery();

А результат исключение.ToString() можешь показать?
... << RSDN@Home 1 alpha 3 rev. 0>>
Help will always be given at Hogwarts to those who ask for it.
Re[6]: DecimalSeparator
От: linker Россия  
Дата: 25.06.08 13:34
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, linker, Вы писали:


_FR>>>? Тогда не ясно, в каком месте ошибка вылетает?

L>>Ошибка вылетает при command.ExecuteNonQuery();

_FR>А результат исключение.ToString() можешь показать?


Да тоже самое

http://files.rsdn.ru/16752/untitled.GIF это занчение параметра

http://files.rsdn.ru/16752/2.GIF эот исключение

Запрос оставил просто
      update table set column=:par
      
      //параметр
      command.Parameters.Add("par", OleDbType.Decimal).Value = value.ToString();
      command.ExecuteNoQuery();
... << RSDN@Home 1.2.0 alpha rev. 789>>
Re: DecimalSeparator
От: vitz  
Дата: 25.06.08 15:03
Оценка:
Здравствуйте, linker, Вы писали:

это не ответ на вопрос а скорее углубление вопроса.
Есть подозрение, что DecimalSeparator тут не причем (а может и причем какимто левым местом).
Если создадим в Аксесе базу с таблицей с полем типа "Действительное" (извините русская версия но мапится оно какраз на Decimal),
накидаем простеньки ДатаСет (мастером, без рук, для чистоты эксперемента).
Добавим в таблицу строку (акцесом) с нашим вожделенным Decimal значением.
то даже тупое
TestDataSet ds = new TestDataSet();

TestTableAdapter ad = new TestTableAdapter();
ad.Fill(ds.Test);
ds.Test.Rows[0].SetModified();
ad.Update(ds);


кидает тоже исключение

для float и double такого не наблюдается
Re[2]: DecimalSeparator
От: linker Россия  
Дата: 26.06.08 07:05
Оценка:
Здравствуйте, 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()
... << RSDN@Home 1.2.0 alpha rev. 789>>
Re[3]: DecimalSeparator
От: arkhivania  
Дата: 26.06.08 07:49
Оценка:
Здравствуйте, linker, Вы писали:

L>Так то ясен пень будет запятая.


тогда ToString(CultureInfo.InvariantCulture)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.