:: Главная :: Решения :: Статьи :: Проект "Русский 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-серверами 5834 Владимир Максимов 24.02.06 18:19
  Как определить причину ошибки 7112 Владимир Максимов 24.02.06 18:42
  Как подавить выдачу системного окна настройки соединения в случае ошибки 6640 Владимир Максимов 24.02.06 19:13
  Как вызвать хранимую процедуру сервера 6656 Владимир Максимов 24.02.06 19:33
  Как передать параметры в хранимую процедуру сервера 7169 Владимир Максимов 24.02.06 19:44
  Как получить значение выходного параметра процедуры сервера 6866 Владимир Максимов 24.02.06 19:57
  Как получить значение функции сервера 5962 Владимир Максимов 24.02.06 20:11
  Почему возвращается только часть числа. Первые символы 5391 Владимир Максимов 06.01.10 16:39


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

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

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