:: Visual Foxpro, Foxpro for DOS
ODBC драйвер подержки VarChar
Владимир Максимов

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
Я что-то не пойму, при работе через ODBC поддержка VarChar не происходит?

lcStringConnect = 'DRIVER=SQL Server;SERVER=...;DataBase=...;Trusted_Connection=Yes'
lnCH = SQLStringConnect(m.lcStringConnect)
lcStringStatment = 'CREATE TABLE #test (f1 VarChar(10)) SELECT * FROM #test'
=SQLExec(m.lnCH,m.lcStringStatment)
=AFIELDS(laFields)
?laFields[1,2]

Т.е. на MS SQL 2000 создал поле типа VarChar, а у клиента то же самое поле уже имеет тип Character. Это проблема драйвера?




------------------
Ratings: 0 negative/0 positive
Re: ODBC драйвер подержки VarChar
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
А где же
? CURSORSETPROP("MapVarchar", .T., 0)
По дефолту то маппинг не включен Для совместимости надо полагать...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: ODBC драйвер подержки VarChar
Владимир Максимов

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
Ну... просто нет слов... (кроме матерных). Если по умолчанию сделана настройка SET VARCHARMAPPING ON, то почему настройка курсоров ей противоречит? Должно быть что-то одно! Ладно, спишем это недоразумение на то, что это beta-версия.

Еще один вопрос уже собственно не связанный с VFP9, но также по ODBC

Если я использую для связи с MS SQL настроенный DSN и выставляю в нем птичку в пункте "Use regional settings when outputting currency, numbers, dates, and times" (обычно я этого не делаю, просто экспериментировал)

То получается странная вещь.

При чтении числовых данных в поля типа Numeric записывается физически (смотрел в FAR) что-то вроде

" 12а345,67"
вместо положенного
" 12345.67"

В результате, при просмотре через Browse-окно эти данные отображаются как символьные строки в числовом представлении. Но при чтении/записи таких данных в качестве числа берется естесственно только цифры до первого символа отличного от цифры или точки. Т.е. в данном случае это будет число 12.

Самое забавное, что такой глюк наблюдается и в Access (смотреть можно, писать нельзя!). Это глюк драйвера ODBC для MS SQL или здесь какие-то другие причины?




------------------
Ratings: 0 negative/0 positive
Re: ODBC драйвер подержки VarChar
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Я не думаю что тут хоть как-то виноват фокс. Примерно такие-же "глюки" есть
и в Oracle - скажем MS-овский драйвер неправильно определяет тип для
вычисляемых полей запроса - вместо Double или иного с плавающей точкой даёт
Numeric да ещё и с кривой размерностью (я даже не знаю как лечить, ибо
юзаю). А вот Oracle-вский драйвер наподобии твоего себя ведёт - в дробных
Numeric-ах вместо десятичной точки ставит запятую - и потом в Browse всё
выглядит прилично!(кстати это недекларированная особенность - не
"вычислять/проверять" такие поля, а просто показывать "как есть") а при
попытке обращения естественно дробная часть теряется. Лечится такое
поведение путём вправления мозгов самому серверу (раз уж этот ODBC драйвер
не занимается никакой конвертацией типов) - ALTER SESSION SET
NLS_NUMERIC_CHARACTERS = '. ' - заметь, что второй символ это как раз
разделитель тысячных разрядов, возможно что если его выставить в какую-нить
кавычку или букву то получим в точности твою проблему...
В общем надо настраивать сервер и ODBC - это проще нежели делать всякие
"обходные манёвры".
Кстати если мне не изменяет склероз с MS SQL имелась и иная проблема - фокс
достаёт image поля как General, тогда как они по сути Memo(binary) и если в
RV/CA можно настроить маппинг, то в SPT нельзя и придётся извращаться чтобы
таки достать данные из такого поля... Но тут лучше спросить у тех кто более
плотно с MS SQL работает - я лишь только только начал смотреть на эту СУБД.




------------------
WBR, Igor
Ratings: 0 negative/0 positive


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

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

© 2000-2024 Fox Club 
Яндекс.Метрика