Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 2.543 pregleda

Najnovija ↓

Problem u Visual c++ 2005 sa MoveFirst... 10.04.2006. u 09:02 · pre 250 meseci #1
Pozdrav svima, imam jedan problemcic.
Instalirao sam Visual Studio 2005.
U MFC aplikaciji sa MFC ODBC Consumerom kreirao sam CRecordest.

Problem je sledeci:
CRec m_rs;
// CRec mi je kreirana klasa CRecordset-a
m_rs.Open();
long count;
while (!m_rs.IsEOF())
m_rs.MoveNext();

count = m_rs.GetRecordCount();

if (!m_rs.IsBOF())
m_rs.MoveFirst();


//OVAJ DIO SA m_rs.MoveFirst() MI NE RADI ???????
//NECE DA MI SE POZICIONIRA NA PRVI REKORD, NE RADI MI NI m_rs.MovePrev()
Re: Problem u Visual c++ 2005 sa MoveFirst... 10.04.2006. u 10:42 · pre 250 meseci #2
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.
Re: Problem u Visual c++ 2005 sa MoveFirst... 10.04.2006. u 18:01 · pre 250 meseci #3
Isto mi se desava i bez provjere if (!m_rs.IsBOF())

stavim samo:
m_rs.MoveLast();
pa poslije toga:
m_rs.MoveFirst();
ili:
m_rs.MovePrev();

A sto se tice provjere "if(!m_rs.IsBOF())", zar ona ne znaci "ako je m_rs tj. pozicija trenutnog
rekorda razlicita od BOF", ILI GRIJESIM???

I jos nesto, ovaj mi primjer normalno radi u Visual C++ 6.0 i 7.0 ...

Re: Problem u Visual c++ 2005 sa MoveFirst... 11.04.2006. u 07:42 · pre 250 meseci
izmenjeno 1 put, poslednji put Alex21 11.04.2006. u 07:43
  1. Alex2111.04.2006. u 07:43zapis iz teksta poruke
#4
U pravu si. Moja greška.

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
Re: Problem u Visual c++ 2005 sa MoveFirst... 12.04.2006. u 18:57 · pre 250 meseci #5
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();

Hvala svima ...
Re: Problem u Visual c++ 2005 sa MoveFirst... 13.04.2006. u 13:29 · pre 250 meseci #6
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.

Nisam u tome, tako da sam svoje savjete ispucao.

Pozdrav



Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme