Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / CRecordSet::GetRecordCount возвращает совсем не то...? / 7 сообщений из 7, страница 1 из 1
28.11.2002, 16:12
    #32073513
SAT71
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CRecordSet::GetRecordCount возвращает совсем не то...?
CDatabase db;
CRecordSet* rs;
rs = new CRecordSet(&db);
db.OpenEx("...");
rs->Open();
int i = rs->GetRecordCount;
// Ну или примерно так...

А пробегать по всему своему рекордсету циклом как-то долго и неправильно... Так вот вопрос: Как стандартными функциями узнать сколько записей в рекордсете?(::MoveLast, но m_lCurrentRecord содержит тоже не не то...)
...
Рейтинг: 0 / 0
02.12.2002, 14:00
    #32074614
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CRecordSet::GetRecordCount возвращает совсем не то...?
Надо сменить тип курсора у рекордсета на клиентский - обязательно до его открытия.

По умолчанию рекордсет создается с серверным курсором - т.к. рекордсет не выкачивает данные полностью, а берет по одной с сервера. Поэтому он, естесственно, не знает, сколько записей.

На си я с ADO не работал, т.ч. код конкретный не напишу. На VB это выглядит так:

Dim recEmployees as ADODB.Recordset

Set recEmployees = New ADODB.Recordset
recEmployees.CursorLocation = adUseClient

recEmployees.Open "SELECT * FROM TBL_Employees",...
...
Рейтинг: 0 / 0
02.12.2002, 14:08
    #32074622
Glass
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CRecordSet::GetRecordCount возвращает совсем не то...?
я, пардон, не заметил... это DAO, да?

С DAO тоже были такие проблемы... мне кажется, рекордсет в ДАО открывается асинхронно, поэтому так выходит...

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

По-дурацки, конечно, но работало.
...
Рейтинг: 0 / 0
02.12.2002, 14:30
    #32074635
SAT71
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CRecordSet::GetRecordCount возвращает совсем не то...?
Да нет, это ODBC... И по идее, всё должно работать, тип курсора и так snapshot, хотя и с dynaset-ом тоже не работает:(

Люди!!! Помогите!!! Очень критично!!!
...
Рейтинг: 0 / 0
03.12.2002, 09:44
    #32074931
nandji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CRecordSet::GetRecordCount возвращает совсем не то...?
Это оптимизация такая CRecordset не знает сколько записей содержит и сразу не считает количество записей.
...
Рейтинг: 0 / 0
06.12.2002, 10:54
    #32076576
sb32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CRecordSet::GetRecordCount возвращает совсем не то...?
Читай ремарк к этой функции:

long GetRecordCount( ) const;

Return Value

The number of records in the recordset; 0 if the recordset contains no records; or –1 if the record count cannot be determined.

Remarks

Call this member function to determine the size of the recordset.

Caution The record count is maintained as a “high water mark” — the highest-numbered record yet seen as the user moves through the records. The total number of records is only known after the user has moved beyond the last record. For performance reasons, the count is not updated when you call MoveLast. To count the records yourself, call MoveNext repeatedly until IsEOF returns nonzero. Adding a record via CRecordset:AddNew and Update increases the count; deleting a record via CRecordset::Delete decreases the count.
...
Рейтинг: 0 / 0
06.12.2002, 17:14
    #32076862
Ф.
Ф.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CRecordSet::GetRecordCount возвращает совсем не то...?
Всем спасибо. Как делал руками, так, видимо и придётся делать:)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / CRecordSet::GetRecordCount возвращает совсем не то...? / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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