C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
ADO. MS SQL. TADODataSet::CursorLocation, Или это АЦтой, или я не всё постиг
olegenty
Отправлено: 23.07.2004, 11:49


Ветеран

Группа: Модератор
Сообщений: 2412



Суть такая:
Есть базёнка на MSSQL
Есть таблички, завязанные JOINом.
Возвращается надор данных порядка сотен тысяч записей, которые надо отобразить в гриде.

Может я что-то не понимаю, но единственный способ это сделать — на серверном сурсоре, т.е. TADODataSet::CursorLocation = clUseServer

Что и пытаюсь сделать. Но! в SELECT инструкции есть ORDER BY. и, блин, при любой попытке выполнения такой инструкции с серверным курсором, возникает ошибка: "Текущий проводник не поддерживает необхоимые интерфейсы для сортировки и фильтрации". Да, коннекчусь посредством OLE DB Provider for Microsoft SQL Server.

Ладно, думаю, не хочешь так — заполню временную таблицу отсортированным набором, да и верну её клиенту. Пишу процу, заполняю, запускаю прогу — та же ошибка...!!!

Ребят, кто знает, чё за ######, мать её так??? Сервер не умеет сортировать??? Или я чего-то не понимаю???

olegenty
Отправлено: 27.07.2004, 10:32


Ветеран

Группа: Модератор
Сообщений: 2412



Если кому инетерсно, что проблема снялась созданием INDEXED VIEW.
то есть
1. Создаём VIEW по селекту с JOIN
2. Создаём индекс/индексы
3. На клиенте создаём SELECT FROM VIEW, и если в ORDER BY указать поля, по которым есть индекс, то CursorLocation = clUseServer начинает работать так, как ему и положено.
4. Наслаждаемся.

P.S. а SQL.RU меня разочаровал — за три дня я не получил ответа, пришлось методом чтения BOOKS ONLINE самому найти решение. smile.gif
FoxVID
Отправлено: 03.08.2004, 09:45


Ученик-кочегар

Группа: Участник
Сообщений: 29



QUOTE
SQL.RU меня разочаровал — за три дня я не получил ответа, пришлось методом чтения BOOKS ONLINE самому найти решение

Так это же самый надежный вариант поиска решения. biggrin.gif

Вернуться в Работа с базами данных в C++Builder