AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.11.2010, 14:30   #1  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Как сменить региональные стандарты...
Добрый день всем. Вот такой вопрос у меня. Есть выгрузка в dbf. Там значения типа real должны иметь разделитель целой и дробной части "." (точку)(иначе ошибка и ничего не выгружается). Но если я в региональных стандартах выставляю точку как разделитель целой и дробной части то выгрузка работает но куча отчётов написано на Excel-е перестают работать. Вот стоит задача сменить кратковременно региональные стандарты на машине на время выгрузки в dbf. Давным давно я как то в делфях это проходил, но сейчас мне это не найти. да и может в аксапте есть свои способы.
Заранее всем спасибо за помощь!
Старый 09.11.2010, 14:58   #2  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Выгрузка в DBF, пример. Работают оба:
X++:
INSERT INTO [FILE.DBF] (NUM, PROD, KOL, SKIDKA, PRICE, PRICE2)   VALUES('S10307','QWERTY','2,00','0,00','20,00','20,00')
//            или так
INSERT INTO [FILE.DBF] (NUM, PROD, KOL, SKIDKA, PRICE, PRICE2)   VALUES('S10307','QWERTY',2.00,0.00,20.00,20.00)
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
За это сообщение автора поблагодарили: raniel (1).
Старый 09.11.2010, 15:10   #3  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Poleax вот не поверишь, но когда летом делал выгрузку ...ни в какую не хотело выгружаться с запятой...а сейчас работает.....чудеса... :-)

Хотя всё же если кто знает как добраться до региональных стандартов то напишите. мне это просто уже интересно.

Последний раз редактировалось raniel; 09.11.2010 в 15:21.
Старый 09.11.2010, 15:49   #4  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Можно получить региональные настройки для RU (Ax2009)
X++:
\Classes\WinAPI\getUserLocaleDecimalSeparator_RU
\Classes\WinAPI\getUserLocaleThousandSeparator_RU
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 09.11.2010, 15:54   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вы делаете распространенную ошибку путая то, как данные отображаются и то, как данные хранятся.

Так вот, внутри файла DBF при хранении данных должен использоваться только и исключительно символ точки. И никакие региональные настройки на это повлиять не в силах.

Но вот когда Вы читаете (просматриваете) содержимое файла DBF, то способ отображения данных может зависеть от региональных настроек. Но может и не зависеть. Смотря чем (какой программой) Вы просматриваете его содержимое.

Другими словами, региональные настройки (если они вообще учитываются программой просмотра или редактирования DBF-файлов) влияют на символ-разделитель только внутри этой самой программы. В файл DBF символ-разделитель по любому будет вставлен как точка.

Хотя, а что Вы подразумеваете под фразой "выгрузка в DBF"? Какими именно командами это делается?
Старый 09.11.2010, 16:01   #6  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
ну вот Poleax выше показал пример....я именно так и выгружаю...
Старый 09.11.2010, 17:05   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Разве Axapta может выгружать в файл DBF напрямую, без обертки в виде ADO или ODBC? Вот я и спрашиваю, как ты формируешь строку для передачи драйверу. Может проблема именно в формировании этой строки?
Старый 09.11.2010, 17:33   #8  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Вот както так:
loginProperty.setOther(strfmt("DRIVER=Driver do Microsoft dBase (*.dbf);"));

odbcConnection = new OdbcConnection(loginProperty);
statement = odbcConnection.createStatement(ResultSetType::ForwardOnly, ResultSetConcurrency::Updatable);
Старый 10.11.2010, 12:09   #9  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Я не про это.

Чтобы сделать запись в DBF таблицу, предварительно необходимо создать символьную строку

X++:
strCommand = "INSERT INTO ..."
statement.executeUpdate(strCommand)
Другими словами, ты должен выполнить преобразование числа в строку. Причем это преобразование должно выполняться в среде X++. Вот я и спрашиваю как ты преобразуешь число в строку?

strFmt(), num2str()

StrFmt() и параметр -1 в num2str() используют при преобразовании текущие региональные настройки. Именно это и может приводить к ошибкам. Нужно как-то так

X++:
strLTrim(num2str(123.456, 20, 18, 1, 0))
Т.е. явно указать, что разделитель целой и дробной части - это точка, а разделителя тысяч быть не должно. Вне зависимости от региональных настроек.
За это сообщение автора поблагодарили: raniel (1).
Старый 11.11.2010, 11:29   #10  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Согласен видимо в этом и была проблемка...но сейчас всё ок....я передаю real как строку и всё ок.
Теги
dbf

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сменить DataSource у Grid Андрей К. DAX: Программирование 19 06.02.2008 17:34
Как сменить заставку при запуске Axapta Кандидат DAX: Программирование 27 17.11.2005 12:41
Региональные настройки в винде BVN DAX: Программирование 3 21.09.2005 13:25
Как заставить Аксапту использовать региональные настройки Windows? ravil DAX: Администрирование 15 28.07.2004 14:33
Как сменить группу у ОС? mad_pilot DAX: Функционал 1 04.11.2002 15:48
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:56.