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

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

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

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

Dim recEmployees as ADODB.Recordset

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

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

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

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

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

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

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
CRecordSet::GetRecordCount возвращает совсем не то...?
    #32076862
Ф.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ф.
Гость
Всем спасибо. Как делал руками, так, видимо и придётся делать:)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / CRecordSet::GetRecordCount возвращает совсем не то...?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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