0 / 0 / 0
Регистрация: 20.03.2007
Сообщений: 21
1

Проблема с настройками десятичного разделителя

15.04.2007, 17:00. Показов 2877. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возникла проблема программного конструирования SQL-строки: Десятичным разделителем на моем компьютере является запятая, а в Access используется точка. Поэтому при использовании в запросе переменной типа Single итоговая строка воспринимается так, будто это не вещественное число, а два целых числа, разделенных запятыми.

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

Как можно решить эту проблему?
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2007, 17:00
Ответы с готовыми решениями:

Замена десятичного разделителя
Здравствуйте! Возникла следующая проблема: Требуется, чтобы у дробных чисел десятичный...

Как определить символ десятичного разделителя?
Подскажите, пожалуйста, как можно определить в программе какой символ является десятичным...

Замена символа десятичного разделителя в TextBox
Помогите решить проблемку с преобразованием значений в тип который воспринимает запятую. Есть 9 -...

Как преобразовать строку в число без учёта десятичного разделителя?
В системе установлен десятичный разделитель <запятая>. В строке сформировано число 2,5...

9
0 / 0 / 0
Регистрация: 15.04.2007
Сообщений: 21
15.04.2007, 18:32 2
почему же неизвестно? Очень даже легко можно узнать :-)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Public Const LOCALE_SDECIMAL = &HE
 
Declare Function GetLocaleInfo Lib 'kernel32' Alias 'GetLocaleInfoA' _
    (ByVal Locale As Long, ByVal LCType As Long, _
    ByVal lpLCData As String, ByVal cchData As Long) As Long
 
Public Function DecSeparator() As String
  Dim s As String
  s = Space(1)
  GetLocaleInfo 0, LOCALE_SDECIMAL, s, 1
  DecSeparator = s
End Function
0
Mavr
16.04.2007, 20:29 3
Узнать-то конечно можно, но что это тебе ни чего не даст. В этой ситуации, ничего не поделаешь, кроме как осведомить пользователя о необходимых Regional Setings в Control Panel. Я посвящаю этому в справочной ситеме и руководстве пользователя в разделе по установке и настройке моего софта отдельную главу.
0 / 0 / 0
Регистрация: 15.04.2007
Сообщений: 21
17.04.2007, 05:34 4
ну для того, чтобы правильно формировать строку SQL придется ВСЕГДА заменять запятую на точку. И никакие региональные настройки тебе не помогут. ODBC и Jet чихать на них хотели.
0
0 / 0 / 0
Регистрация: 15.04.2007
Сообщений: 21
17.04.2007, 05:37 5
ну для того, чтобы правильно формировать строку SQL придется ВСЕГДА заменять запятую на точку. И никакие региональные настройки тебе не помогут. ODBC и Jet чихать на них хотели.
0
0 / 0 / 0
Регистрация: 15.04.2007
Сообщений: 21
17.04.2007, 08:09 6
ну для того, чтобы правильно формировать строку SQL придется ВСЕГДА заменять запятую на точку. И никакие региональные настройки тебе не помогут. ODBC и Jet чихать на них хотели.
0
0 / 0 / 0
Регистрация: 20.03.2007
Сообщений: 21
17.04.2007, 11:33  [ТС] 7
Большое вам всем спасибо, особенно Shmuryginm за ценный кусок кода.
Процедурка по замене запятой на точку уже вовсю функционирует :-))
0
0 / 0 / 0
Регистрация: 22.11.2007
Сообщений: 4
02.12.2007, 11:19 8
Здесь когда-то помогли Mie кусочком кода по замене запятой на точку при формировании строки SQL для записи в базу. Я очень прошу прислать его и мне. Сейчас я пытаюсь использовать функцию replace, но у меня тогда не сохраняются в базу цифры после десятичного знака (база MS SQL 7, поле decimal).
0
0 / 0 / 0
Регистрация: 20.03.2007
Сообщений: 21
02.12.2007, 19:36  [ТС] 9
Собственно, приведенный во втором сообщении этого топика кусочек кода и имелся ввиду.
С его помощью и была написана функция по проверке десятичного разделителя на компьютере пользователя, и если это запятая, то она заменяется точкой.
К сожалению, прямо сейчас ее текст прислать не могу по причине нахождения в отпуске :-)). Но если очень нужно, то ответьте, на следующей неделе постараюсь его раскопать.

>>но у меня тогда не сохраняются в базу цифры после десятичного
знака (база MS SQL 7, поле decimal)

Функция возвращает строку(кажется), которую надо подставить в SQL-строку. На этом этапе никаких проблем вроде бы не должно быть. Поэтому последняя фраза не очень понятна. Может, в чем другом проблема?
0
0 / 0 / 0
Регистрация: 09.05.2007
Сообщений: 130
02.12.2007, 19:54 10
A 4to, programmno smenit' razdelitel' nikaqk nel'zja?
0
02.12.2007, 19:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2007, 19:54
Помогаю со студенческими работами здесь

Как получить знак десятичного разделителя для текущей культуры
Как получить знак десятичного разделителя для текущей культуры? Добавлено через 27 минут Ответ:...

проблема с настройками в css
Кто сможет помочь? при раскрытии всех пунктов меню, оно накладывается на нижнюю часть...

Проблема с сетевыми настройками
Доброго времени суток. Столкнулся с такой траблой: ноутбук с win 8.1 подключен к корпоративной...

Использование разделителя в RecycleView
Ув. программисты, подскажите, пожалуйста, как решить следующую проблему: Имеется 8 итемов в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru