Zato što u prethodnom dijelu koda ti je recordset otišao otišao do kraja (točnije iza zadnjeg),
a ti s if(!m_rs.IsBOF()) testiraš uvijet da li se recordset nalazi prije prvog.
Jedino "efikasno" što mi pada na pamet je to da pogledaš s kojim flagovima
otvaraš recordset, jer ukoliko je CRecordset::forwardOnly flag aktivan, tada niti ne možeš koristiti ništa drugo do MoveNext.
Pozdrav
[Ovu poruku je menjao Alex21 dana 11.04.2006. u 07:43 GMT+1]
Sto se tice flagova, nisam nista konkretno postavljao.
Otvaram samo sa m_rs.Open(), rekordset mi je tipa snapshot
I jos kad sam kod tipa rekordseta, po vasem iskustvu koji je bolje kristiti i u kojim prilikama,
snapshot ili dynaset.
Ne shvatam u cemu je problem ovo mi se nije desavalo u VS6.0 i VS7.0
Mogu to rijesiti sa m_rs.Requery() ali ne znam koliko je to dobro ako se radi sa nekoliko hiljada rekorda.
MOZE LI MI NEKO OBJASNITI KAKO JE NAJBOLJE KREIRATI REKORDSET ZA RAD SA VISE HILJADA REKRDA,
KOJE FLAGOVE KORISTITI, KAKO UCITAVATI REKORDE ITD. I DA NEMAM PROBLEMA SA MoveFirst();
Malo sam provjerio dokumentaciju:
IsBOF() testira da li se nalaziš prije prvog recorda, a IsEOF() testira da li se nalaziš nakon zadnjeg recorda.
Ono što bi tebe moglo mučiti jest podrška za scrolanje. Socrolanje je implementirano preko Move funkcija koje tebe i zezaju.
Da li će postojati podrška za scrolanje ovisi o ODBC driveru kojeg koristi tvoja aplikacija i da li je ODBC Cursor Library učitan u memoriju ( za snapshot tipove).
Moguće je da se je nešto promijenilo kod novog VS-2005.
Učitavanje Cursor Library kontroliraš s CDatabase::Open( ..., ..., ..., BOOL bUseCursorLib = TRUE).
Za dynaset tip se ne smije koristiti ovaj flag.