Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / MS ADO (+oracle, но вообще без разницы) / 5 сообщений из 5, страница 1 из 1
21.01.2016, 09:55
    #39151986
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ADO (+oracle, но вообще без разницы)
Тут обнаружил, что Recordset после запроса в GetRecordCount выдаёт -1. Я так понял, это или настройки Connection или параметры при вызове sql-я. Что где надо указать, чтобы мочь узнать точное число строк в результате из Recordset-а? Можно, конечно, select count(*) сделать, но не хотелось бы, я запрос получаю единой строкой, парсить лень.
А ещё Move(-1) с любой записи не работает. Ругается, что Backward не поддерживается, хотя в параметрах adClientDynamic, по докам можно. В результате приходится делать MoveFirst, потом Move до нужной записи. MoveLast ругается с _той_же_ ошибкой! Не понял, почему... оно же forward...
...
Рейтинг: 0 / 0
21.01.2016, 10:17
    #39152011
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ADO (+oracle, но вообще без разницы)
По синтаксису не подскажу, но знаю почему так: запрос еще не выполнен до конца когда клиент получает первые строки результата запроса. Т.е. в этот момент просто неизвестно сколько будет строк.

По-хорошему не надо пытаться получить количество там где его не надо. Во-первых лишний тормоз, во-вторых лишняя память, т.к. клиент должен сначала результат закэшировать целиком.

Если все-таки надо, то ищи как задать чтобы ответ сначала был полностью получен или как заставить получить целиком. Скорее всего свойства/методы со словом "fetch"
...
Рейтинг: 0 / 0
21.01.2016, 10:38
    #39152031
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ADO (+oracle, но вообще без разницы)
Про получить сразу, я как-то не подумал, да.

У меня задача такая: виртуальный лист-вью надо заполнять записями. У виртуального число записей сразу задаётся конкретным числом. Поэтому надо как-то синхронизовать число записей из запроса и число записей в листе. Пока сделал так: завёл параметр - число выводимых строк, задаю его руками через GUI, т.е. если не влезло всё, открыл диалог, задал побольше.
...
Рейтинг: 0 / 0
21.01.2016, 12:10
    #39152151
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ADO (+oracle, но вообще без разницы)
CEMb...Ругается, что Backward не поддерживается, хотя в параметрах adClientDynamic, по докам можно....
Вопрос из серии:
Написал программу, не работает, помогите....

1. Хоть бы код под спойлером привел
2. Что такое adClientDynamic ? Ни гугля ни MSDN ответа на данный вопрос мне не дали
https://msdn.microsoft.com/en-us/library/ee252445(v=bts.10).aspx
3. Судя по всему, неправильные параметры/тип RecordSet'а.

IMHO
ДокументацияTips for ADO Programmers
...
Setting ADO Rowset property CursorType to adOpenKeyset or adOpenDynamic is not supported by Oracle Provider for OLE DB.
...

Страница 2-22 Oracle Provider for OLE DB Developer’s Guide 11 g
https://docs.oracle.com/cd/E15296_01/doc.111/e15169.pdf
...
Рейтинг: 0 / 0
22.01.2016, 08:03
    #39152752
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ADO (+oracle, но вообще без разницы)
Упс...

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

...
пока пытался переписать код руками, кажется, нашёл "ошибку" - у меня параметры рекордсету задаются после создания, а потом он получается из Connection::Execute, стало быть, все параметры не работают, надо по-другому делать. Спасибо.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / MS ADO (+oracle, но вообще без разницы) / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]