dbGrid 1.8rc1 показывает другие данные чем в 1.6

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

t-ea
новенький
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Сообщение t-ea »

DBF — это база KLADR налоговой службы РФ.
Использовать её я собираюсь очень редко и только как справочную — для поиска, то есть эта база у меня только для чтения.

Первым делом я естественно попробовал tDBF, но он не знает 866 кодовой страницы. Учитывая это, и то, что эта база периодически изменяется, и поэтому вариант — один раз переконвертировал в «удобный» формат и забыл про DBF — здесь не проходит, пришлось подключать ODBC.

Не найдя в MSE встроенного компонента для MS SQL пришлось и её, пока эсперементирую, подключить через тот же ODBC. Чуть позже, может быть попробую Zeos — я просто не знал что он поддерживает MS SQL.
GrayEddy
постоялец
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение GrayEddy »

В MSE 1.8 msesqlquery напрочь отказывается работать, если в таблице есть поля, тип которых nchar и nvarchar.

Текст запроса: select orderid, shipname, shippeddate from orders
Для этих полей выводятся сообщения: Datatype mismatch dataset 'msesqlquery1' field 'shipname' expected: 'ftWideString' actual 'ftUnknown'.

Тип поля shipname - nvarchar(40).

Если изменить запрос и убрать shipname - все ОК.
Юзаю MS SQL, доступ через ODBC.
База Northwind, таблица Orders.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

Ответ Мартина пол поводу N[VAR]CHAR :

Код: Выделить всё

Probably not. I don't have MS SQL so you must fix it your self. Is utf-8 and
field type conversion no option?
GrayEddy
постоялец
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение GrayEddy »

В опциях проекта encode выставлен в utf8. Результат отрицателен.
Для encode = locale аналогично.
Сходил на форум, смотрю - вы уже отписались об этой проблеме.
Если я правильно понял, надо завести новый тип поля ftUt8ToString.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

В M$ SQL N*CHAR - не UTF8, а галимый ftWideString.

( это PostgreSQL умеет хранить юникод в UTF8 - чтобы место на диске не раздувать без причины )

Ответ Мартина :

Код: Выделить всё

Can the problem be reproduced with the free MS SQLServer Express edition on
Windows 2000? Can the reporter provide a testcase? If I get a testcase and
a link to SQLServer Express edition download which runs on Windows 2000
I'll try to fix the issue.

Суть проблемы - Мартин не уверен, что нынешняя реализация FPC SQLDB ODBCConnection умеет читать и записывать UCS2-поля при общении "клиент-сервер". В принципе, когда сильно нужно, Мартин делает свои "форки" - но ODBC пока в список нужных кому-либо не попадал ( потому что у самого ODBC-режима есть несколько неприятных ограничений ). Есть желание помочь довести до ума ?
GrayEddy
постоялец
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение GrayEddy »

Спасибо, не стоит, задача неактуальная и решается другими средствами (коллега пишет на C#). Считайте, что это был эксперимент на проверку возможностей MSE увидеть MS SQL, он меня удовлетворил. Лазарус в аналогичной ситуации не взлетел.
Ответить