Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / DATABASE – БАЗЫ ДАННЫХ, ПЕРЕМЕЩЕНИЕ. / 7 сообщений из 7, страница 1 из 1
21.03.2005, 16:20
    #32971749
ГЛУПЫШ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DATABASE – БАЗЫ ДАННЫХ, ПЕРЕМЕЩЕНИЕ.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
VISUAL C++  6 . 0  
ПОЧЕМУ  
rs.MoveFirst(); 
НЕ СТАВИТ УКАЗАТЕЛЬ НА ПЕРВУЮ ЗАПИСЬ 
После определения EOF? Первый раз проходит до EOF, 
Затем надо вновь поставить НА НАЧАЛО.

try
{
// Открываем базу через DSN
m_database.Open(_T("PersonalDepartment"),FALSE,FALSE);
}
catch(CDBException* e)
{
//обрабатываем исключительные ситуатции
 AfxMessageBox( 
             "Сообщение из Constructor of class Document\n" + e->m_strError, 
               MB_ICONEXCLAMATION );
      e->Delete();
    }

if(!pDoc->IsBaseOpen())  // ОТКРЫТИЕ б.д. 
{ 
AfxMessageBox(_T("База данных не была открыта!\n”
“Продолжение невозможно."));
return;
}

CRecordset rs(&(pDoc->m_database)); 

CString strQuery="SELECT TN, POCADA, KP, TS, PP"; 
		strQuery+=" FROM  IDENTITY"; 
		strQuery+=" where  IDENTITY.TN >= 1802"; 
		strQuery+=" Order  By IDENTITY.TN";

try
{	
rs.Open(dbOpenDynaset,strQuery, 0 ); 
}
catch(CDBException* e)
{
 AfxMessageBox( 
               e->m_strError, 
                MB_ICONEXCLAMATION );
        e->Delete();
	return;
}

// счётчик  количества прочитанных строк
int m_nQuantityRecords =  0 ; 

while( !rs.IsEOF( ) )
{
rs.MoveNext( ); // переход на следующую запись таблицы
m_nQuantityRecords++;
}
m_sWork2.Format("m_nQuantityRecords = %d",m_nQuantityRecords);
MessageBox(m_sWork2); 
rs.MoveFirst();  // ПОЧЕМУ НЕ СТАВИТ УКАЗАТЕЛЬ НА ПЕРВУЮ ЗАПИСЬ ?

СПАСИБО
...
Рейтинг: 0 / 0
21.03.2005, 17:55
    #32972045
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DATABASE – БАЗЫ ДАННЫХ, ПЕРЕМЕЩЕНИЕ.
Не знаю, но я бы отдельным recordset посчитал бы кол-во записей в любом случае.
select count() from ....
Это очевидно эффективнее.
...
Рейтинг: 0 / 0
21.03.2005, 18:22
    #32972121
vitvsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DATABASE – БАЗЫ ДАННЫХ, ПЕРЕМЕЩЕНИЕ.
2 ГЛУПЫШ
у тебя MoveFirst не ставит на первую запись или ты ХОЧЕШЬ, чтобы MoveNext сбрасывало начало?
...
Рейтинг: 0 / 0
21.03.2005, 18:50
    #32972177
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DATABASE – БАЗЫ ДАННЫХ, ПЕРЕМЕЩЕНИЕ.
ГЛУПЫШ
ПОЧЕМУ
rs.MoveFirst();
НЕ СТАВИТ УКАЗАТЕЛЬ НА ПЕРВУЮ ЗАПИСЬ


Потому, что, наверное, rs OpenForwardOnly
...
Рейтинг: 0 / 0
21.03.2005, 22:12
    #32972410
ГЛУПЫШ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DATABASE – БАЗЫ ДАННЫХ, ПЕРЕМЕЩЕНИЕ.
Автор:
Зачем это нужно?
отчёт создаю, для определения области
печати надо сначала знать сколько же строк
будет извлечено, от их количества
зависит область печати.
Такова ситуация.

Если стоит Forward Only ,
то как открыть базу с ВОЗМОЖНОСТЬЮ
ЕЁ ОБНОВЛЯТЬ ?

СПАСИБО
...
Рейтинг: 0 / 0
22.03.2005, 10:51
    #32972973
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DATABASE – БАЗЫ ДАННЫХ, ПЕРЕМЕЩЕНИЕ.
А rs->GetRecordCount() не подходит для определения количества строк в наборе записей?
...
Рейтинг: 0 / 0
22.03.2005, 10:52
    #32972979
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DATABASE – БАЗЫ ДАННЫХ, ПЕРЕМЕЩЕНИЕ.
Alex_VCА rs->GetRecordCount() не подходит для определения количества строк в наборе записей?
Пардон, спутал с ADO...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / DATABASE – БАЗЫ ДАННЫХ, ПЕРЕМЕЩЕНИЕ. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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