:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки ::
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  


Форумы  :: FAQ FoxPro

Почему возвращается только часть числа. Первые символы
Дата: 06.01.10 16:39:54 ОтветитьЦитировать

Вопрос

При чтении числовых данных с SQL-сервера возвращается только часть числа. Первые символы или только целая часть без дробной части.

Причина

Причина в настройках конкретного соединения с SQL-сервера. Явно или не явно установлены региональные настройки. Обратите внимание, речь идет не о настройках собственно сервера, а о настройках соединения с сервером!

Проблема здесь в том, что числовые данные как правило, конвертируются в поля типа Numeric в среде FoxPro. А поля типа Numeric в FoxPro физически хранятся как символьные данные. Это значит, что в принципе, в такое поле можно записать любой символ. Вот ODBC и записал, например, символ запятой в соответствии с региональной настройкой.

Но при чтении данных для FoxPro символ запятой - это не есть символ, относящийся к числовым данным (символом-разделителем целой и дробной части непосредственно в таблице является точка). Следовательно, будут прочитаны как число только те символы, которые стоят ДО символа запятой.


Решение

Решение зависит от того, каким способом были установлены соответствующие настройки соединения.

MS SQL - сервер

Если Вы использовали для установки соединения предварительно настроенный DSN, то зайдите в настройки DSN-соединения и снимите "птичку" с настройки

"Use regional settings when outputting currency, numbers, dates, and times"

Если Вы использовали для установки соединения строку SQLStringConnect(), то убедитесь, что в ней нет опции Regional или же она имеет значение Regional=No


Oracle - сервер

Здесь придется явным образом менять настройку текущей сессии через прямую команду SQLExec() примерно так

SQLExec(m.nOraConnect,[ALTER SESSION SET NLS_NUMERIC_CHARACTERS='. '])
Ratings: 0 negative/0 positive


Тема Просмотров Написано Написано
  Работа с удаленными данными, SQL-серверами 5449 Владимир Максимов 24.02.06 18:19
  Как определить причину ошибки 6713 Владимир Максимов 24.02.06 18:42
  Как подавить выдачу системного окна настройки соединения в случае ошибки 6116 Владимир Максимов 24.02.06 19:13
  Как вызвать хранимую процедуру сервера 6269 Владимир Максимов 24.02.06 19:33
  Как передать параметры в хранимую процедуру сервера 6675 Владимир Максимов 24.02.06 19:44
  Как получить значение выходного параметра процедуры сервера 6426 Владимир Максимов 24.02.06 19:57
  Как получить значение функции сервера 5523 Владимир Максимов 24.02.06 20:11
  Почему возвращается только часть числа. Первые символы 4486 Владимир Максимов 06.01.10 16:39


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

19.10.2019 00:35:51 exec: 0.03
Mem: 1.191 Mb

© 2006 Fox Club 
Яндекс.Метрика