powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Формат номера - разделитель дробной части
4 сообщений из 4, страница 1 из 1
Формат номера - разделитель дробной части
    #39625460
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Уважаемый форум,

Это однозначно боян, но проблема была и остается: есть приложение на Access 2016, которое должно работать для разных региональных настроек, в том числе европейских и американских. Соответственно, в для отображения и использования одного и того же числа системой применяются разные разделители, которые полностью изменяют значение этого числа, в зависимости от региона.

Вопрос(ы):
- есть ли рецепт, как совместить европейские и американские региональные особенности в одном приложении БЕЗ изменения разделителя руками в системе?
- можно ли изменить только разделитель в системе, не привлекая пользователя, из VBA и как?
- можно ли определить какой разделитель используется в системе из VBA и как?

Спасибо!
...
Рейтинг: 0 / 0
Формат номера - разделитель дробной части
    #39625510
IFKСоответственно, в для отображения и использования одного и того же числа системой применяются разные разделители, которые полностью изменяют значение этого числа, в зависимости от региона. Т.е. отображение числа с точкой или запятой в качестве разделителя "полностью изменяют значение этого числа"? Или проблема глубже? Поясните

Проверить и изменить значения региональных настроек можно с помощью API функций GetProfileString и WriteProfileString. Но изменение настроек "без спросу" может навредить другим программам на компе. Поэтому это крайне рискованный шаг.
Есть простой способ получить значение десятичного разделителя:
Код: vbnet
1.
2.
?Format(0,".")
,


IFK- есть ли рецепт, как совместить европейские и американские региональные особенности в одном приложении БЕЗ изменения разделителя руками в системе?
В Excel-е уже давно можно указывать свой десятичный разделитель и разделитель триад вместо системных.
В Аксе 2010 этой возможности нет, но, возможно, уже есть в Аксе 2016. Но даже если и есть, это поможет, если настройки касаются конкретной БД и если у всех юзеров стоит нужная версия Акса.
...
Рейтинг: 0 / 0
Формат номера - разделитель дробной части
    #39625520
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Кривцов Анатолий,

Да, именно так. Одно и то же число при вводе пользователями с разными региональными настройками учитывается системой по-разному и отсюда вытекают ошибки, потому что при разработке не получается учесть региональные настройки: точка и запятая есть везде, но используются по-разному.

Согласен, что изменение настроек без спросу чревато. Поэтому и прошу помощи, может идеи как есть. :(

Можно ли подробнее про использование GetProfileString?

Да, в Екселе есть, в Аксессе 2016 нет - проверил, не нашел ничего даже отдаленно похожего.
...
Рейтинг: 0 / 0
Формат номера - разделитель дробной части
    #39626319
Фотография xax_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я использую такую функцию:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Function Separator(DecimalSeparator As String)
'Изменение региональных настроек
Const PatchSeparator = "HKEY_CURRENT_USER\Control Panel\International\sDecimal"
Dim MyReg As Object
Set MyReg = CreateObject("WScript.Shell")
If MyReg.RegRead(PatchSeparator) <> DecimalSeparator Then
    MyReg.RegWrite PatchSeparator, DecimalSeparator, "REG_SZ"
End If
Set MyReg = Nothing
End Function


При запуске приложения можете проверять, что является разделителем, и менять на нужный Вам. А при закрытии возвращать исходный. Если дело только в разделителе целой и дробной части.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Формат номера - разделитель дробной части
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]