|
|
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
Вобщем проблема такая: я использую VFP8SP1 и Oracle 8.1.7 (и оракловый /не MS/ ODBC драйвер) есть у меня таблица на сервере. в одно дробное поле: Код: plaintext Код: plaintext 1. 2. 3. когда я делаю запрос Код: plaintext Код: plaintext Код: plaintext 1. 2. 3. если я активирую какую-нибудь ячейку этого BROWSE-окна, то данные в этой ячейке отображаются так: Код: plaintext 1. 2. 3. как вы заметили, данные в активнной ячейке отображаются с нулевой дробной частью и через точку, в то время, как в остальных ячейках эта дробная часть отображается как надо, но через запятую. хотя, в активной ячейке может быть и запятая, если установить Код: plaintext Код: plaintext 1. 2. 3. команда ?MyCur.F тоже отображает лишь ноли в дробной части. даже этот код не помогает вытащить настоящую (ненулевую) дробную часть: Код: plaintext 1. 2. 3. 4. 5. только без исправления системных региональных стандартов ! (поскольку я считаю это примером дурного тона - подстраивать систему под себя, а не наоборот) я прикрепил картинку, если не верите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 07:29 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
Уверен, что размерность (8.3) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 09:13 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
уверен. но это не суть важно важно, что запятая, а не точка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 09:26 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
Система не причем - думаю это в настройках ODBC драйвера - типа отключить Local Setting ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 09:32 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 10:20 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
всё я нашел причину нужно прописать строковый параметр в реестре в HKLM\Software\Oracle\ALL_HOMES\HOMEX (X в конце - это номер дома, в котором живет драйвер) строковый параметр NLS_NUMERIC_CHARACTERS = ".," (без ковычек) и все заработает нормально со следующей коннекции ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 10:22 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
Не надо лезть в системный реестр, когда дело явно в настройках соединения (DSN). Попробуй получить с сервера значение больше 1000. Т.е. чтобы появился (если есть) разделитель троек цифр. Например 123456.78 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 10:25 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
ВладимирМНе надо лезть в системный реестр, когда дело явно в настройках соединения (DSN)а если я не пользуюсь источниками данных, а соединяюсь по строке соединения через драйвер ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 09:11 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
А в строке соединения параметр Regional уже отменили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 09:27 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
проходящийА в строке соединения параметр Regional уже отменили?кстати, где взять полное описание параметров строки подключения ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 10:13 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
--Eugene--всё я нашел причину нужно прописать строковый параметр в реестре в HKLM\Software\Oracle\ALL_HOMES\HOMEX (X в конце - это номер дома, в котором живет драйвер) строковый параметр NLS_NUMERIC_CHARACTERS = ".," (без ковычек) и все заработает нормально со следующей коннекции ! Вообще-то в Oracle есть команды ALTER SESSION SET..., позволяющие менять параметры сессии, в том числе и региональные параметры. В частности, для данного случая Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 10:26 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
но это же не выход точнее выход, но через не то место ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 10:32 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
--Eugene--но это же не выход точнее выход, но через не то место Не знаю, как в FoxPro, а в Oracle подобные вещи применяются достаточно часто. Например, формат даты в Oracle по умолчанию - dd-mon-yyyy, т.е. месяц тремя буквами. Путем подобной установки дату приводят к любимому виду dd.mm.yyyy (если не хочется в каждом sql писать to_date...) :)) PS Подчеркиваю, что установки изменяются только для текущего сеанса, а не для всей базы в целом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 10:48 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
дак вотыменно, что только для текущей сессии, а не для всей базы а если я отконнекчусь и заново ? - опять прописывать это дело ? а по поводу даты всеравно же биндим переменные в SQLEXEC() с помощью знаков вопроса (?) - такшто дата без разницы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 11:53 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
1. А для всей базы - это неаккуратно. Что, если с ней работает не только это приложение и каждому нужны свои настройки? 2. Не думаю, что вызвать одну процедуру в начале сеанса - это напряг. Тем более, что обычно приложение коннектится 1 раз в начале работы и разрывает соединение в конце 3. Не помню, как в 8.1.7, но в 9 есть возможность в базе прописать триггер на logon и там делать эту установку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 12:11 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
--Eugene--нужно прописать строковый параметр в реестре в HKLM\Software\Oracle\ALL_HOMES\HOMEX (X в конце - это номер дома, в котором живет драйвер) строковый параметр NLS_NUMERIC_CHARACTERS = ".," (без ковычек) Есть такая проблема, решения сам не нашел, попробовал выше указанное - не то... На самом деле проблема с ODBC драйверами Oracle-драйвер: Код: plaintext 1. Код: plaintext 1. Решалось это обходным путем Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 18:16 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
Сергей А.М. --Eugene--нужно прописать строковый параметр в реестре в...Есть такая проблема, решения сам не нашел, попробовал выше указанное - не то... На самом деле проблема с ODBC драйверами Oracle-драйвер: Код: plaintext 1. я серьезно, работает и Код: plaintext Код: plaintext я пользую Oracle 8.1.7, драйвер Oracle ODBC driver 8.01.07.810 а в VFP8SP1: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 06:37 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
Пролема в том что в Oracle тип вашего поля N(n) тоесть не указано явно число цифр после дробной части я для себя решил следуюшим способом в селекте использую функцию округления для таких полей поскольку знаю точно что клиентское приложение которое туда записывает данные (слиент на java) для нужных мне полей не пишет более двух знаков после запятой. Ну а если таблицы оракла используете только вы как для ввода так и для вывода информации тогда укажите явно в оракле количество знаков после запятой но учтите что в оракле в общую длину числогого поля не входит точка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 11:10 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
--Eugene--HKLM\Software\Oracle\ALL_HOMES\HOMEX (X в конце - это номер дома, в котором живет драйвер) Тогда прошу уточнить У меня есть HKLM\Software\Oracle\ALL_HOMES\ID0 HKLM\Software\Oracle\HOME0 а Вашей ветки нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 11:14 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
Вот не было печали... Решил на всякий случай проверить, как у меня фокс отображает дробные числа с 10го оракла... Оказалось, что проблема в точности, как у --Eugene-- . Почти решилось настройкой в ODBC драйвере на "Use Oracle NLS settings". Запятые теперь не показывает, но если в дробном числе нет целой части, то нолик в начале не рисуется, а когда становишься на него - он появляется. Даже не знаю что и делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 12:34 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
cbani1Пролема в том что в Oracle тип вашего поля N(n) тоесть не указано явно число цифр после дробной частиэто точно. вот с этим точно косяк. ваша правда Сергей А.М.Тогда прошу уточнить У меня есть HKLM\Software\Oracle\ALL_HOMES\ID0 HKLM\Software\Oracle\HOME0 а Вашей ветки нетой, блин, my bad, my bad канешна HKLM\Software\Oracle\HOMEX (где X - номер дома) dmitryxпроблема в точности, как у --Eugene--. ...если в дробном числе нет целой части, то нолик в начале не рисуется, а когда становишься на него - он появляется. Даже не знаю что и делать... - домножать поля ораклового селекта на 1 (select field*1 from table). тогда он отображает корректно, округляя , а не обрезая результат до стольких позиций после запятой, сколько указано в SET DECIMALS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2006, 03:58 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
--Eugene-- , не помогает домножение. Собственно у меня обрезается не дробная часть, с ней то как раз все нормально, а вот 0 в начале не показывается пока не станешь в ячейку. И еще "забавный" эффект - если у числа дробная часть меньше чем описано в CursorSchema (у меня N(12, 4) ), то, когда становишься в ячейку с числом, она добивается нулями до 4х знаков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2006, 11:42 |
|
||
|
Проблема с разделителем дробной части в клиент-сервер приложении
|
|||
|---|---|---|---|
|
#18+
Hi Eugene! AFAIR если в запросе используется функция, то через родной Oracle-вский ODBC (по крайней мере те версии что я использовал) возвращается поле, имеющее тип Double (в фоксе B) - при этом не возникает проблем с обработкой таких полей (они содержат число с полной точностью допускаемой данным типом в фоксе), но возможны проблемы с отображением, т.к. параметр типа B регулирует как раз число отображаемых по умолчанию десятичных знаков - но видимо использование чёткой маски должно помочь :) А вот с MS драйвером возможны проблемы - он для "вычислимых" полей норовит поставить неадекватный тип - Numeric(20,0) или что-то такое - напрочь забывая про дробную часть (хотя реально в поле то может быть прописано число с десятичной точкой - но фокс ограниченный таким типом не сможет правильно обрабатывать да и отображать поля). P.S. Интересный вариант - сменить параметр NLS_LANG на AMERICAN_AMERICA.CL8MSWIN1251 - либо во всей клиентской системе (в реестре или в глобальных настройках переменных окружения) либо только для "своего" приложения, запуская его через батник, где прописана локальная переменная окружения - SET NLS_LANG=... Это кстати помогает иногда при некорректных файлах с локализованными сообщениями об ошибках (когда русские сообщения об ошибках приходят в кривой кодировке - или когда нужно получать именно английские сообщения об ошибках). Что важно - это будет работать и для других приложений использующих Oracle Client (конечно если они внутри себя этот-же параметр не меняют) - например для консольных утилит... Правда там возможно дополнительно потребуется не 1251 кодировка а 866-я... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2006, 18:24 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33804545&tid=1591340]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 356ms |

| 0 / 0 |
