Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

rst.MoveLast problem

[es] :: Access :: rst.MoveLast problem

[ Pregleda: 2064 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

duledixi
Banja Luka

Član broj: 62165
Poruke: 67
*.teol.net.



+3 Profil

icon rst.MoveLast problem08.11.2010. u 11:36 - pre 164 meseci
Navedeni kod odradjuje poao u 99% slucajeva ali ponekad se desi sledece:
U tabeli Kalkulacija ima 170 rekorda
rst.MoveLast ne ide na poslednji rekord nego zaglavi na 77. rekordu i tada slijedi poruka
"Kalkulacija nije otvorena, otvorite novu !"
Kad mi se to desi uradim Compact and Repair baze i sve profunkcionise normalno.
Moje pitanje je da li se neko susretao sa ovakvim problemom i u cemu je problem?
Da napomenem da je na bazi postavljeno Compact on close ali i tada se pojavi pomenuti problem.

Code:
Dim Msg, Style, Title, Response
Dim rst As Recordset
Set baza = OpenDatabase("C:\Program Files\Starsoft\PCKasaBL_dat.mdb")
Set rst = baza.OpenRecordset("Kalkulacija")

rst.MoveLast
If rst!knjizen = 1 Then
    MsgBox "Kalkulacija nije otvorena, otvorite novu !"
    DoCmd.Close
    DoCmd.OpenForm "FormKalkulacija", , , , acFormEdit
    Exit Sub
End If

 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: rst.MoveLast problem08.11.2010. u 14:27 - pre 164 meseci
Tesko je dati precizan odgovor bez probanja raznih varijanti. Evo ti nekih od mogucnosti kada se ovakvi problemi mogu (ali i ne moraju) ocekivati:
- imas i ADP i DAO reference, pa DIM rs as recordset zbuni Access, on misli da je ADO a ti mislis da je DAO, pa uvedes Access pokusa da u letu interpretira sta se desava i ponekad se zaglavi, ali ne uvek nazalost. Stavi DIM rs AS DAO.recordset, mozda pomogne. Naravno, DIM Baza AS DAO.Database.

- drugi razlog moze biti sto otvaras istu tabelu dva puta, jednom kroz recordset, a onda kroz formu, pa jos za edit. Program ne zna da je tvoj recordset read only, mozda i to treba da definises prilikom otvaranja rekordseta.

Mozda je najbolje da potpuno izbegnes rekordsete. Tebe interesuje neki poslednji rekord, sta god 'poslednji' znacilo. Postoje drugi nacini da se pristupi 'poslednjem' rekordu u tabeli. Ako koristis DLAST ili DMAX, dobices ID za trazeni rekord. Onda upotrebis DoCmd.OpenForm sa WhereCondition parametrom. I potpuno izbegnes recordsete i nezgrapan kod.
Pogledaj komentare na kod, mozda nesto pomogne...
Code:

Dim Msg, Style, Title, Response
Dim rst As Recordset 'koja vrsta rekorsedta, DAO ili ADO?
'Gde je DIM za varijablu 'baza'?
Set baza = OpenDatabase("C:\Program Files\Starsoft\PCKasaBL_dat.mdb")
Set rst = baza.OpenRecordset("Kalkulacija")

rst.MoveLast
If rst!knjizen = 1 Then
    MsgBox "Kalkulacija nije otvorena, otvorite novu !"
    DoCmd.Close  'sta si ovde zatvorio? rs ili formu? rs ne mozes ovako zatvoriti.
    DoCmd.OpenForm "FormKalkulacija", , , , acFormEdit 'koji ti je uslov z aotvaranje forme?
    Exit Sub
End If
'gde zatvaras recordset?



 
Odgovor na temu

duledixi
Banja Luka

Član broj: 62165
Poruke: 67
*.teol.net.



+3 Profil

icon Re: rst.MoveLast problem08.11.2010. u 20:06 - pre 164 meseci
Hvala na brzom i opseznom odgovoru pokusacu sa tvojim prijedlozima pa da vidim koji ce od njih da rijesi ovaj iritirajuci problem.
Prvo cu da probam da formulisem DAO reference.
Sto se tice koda, ovo je samo dio koji sam iskopirao, slijedi objasnjenje:

Code:
Dim Msg, Style, Title, Response
Dim rst As Recordset 'koja vrsta rekorsedta, DAO ili ADO?      'Ovo cu da prepravim
'Gde je DIM za varijablu 'baza'?                 'Varijabla postoji samo sam je ispustio prilikom kopiranja
Set baza = OpenDatabase("C:\Program Files\Starsoft\PCKasaBL_dat.mdb")
Set rst = baza.OpenRecordset("Kalkulacija")

rst.MoveLast
If rst!knjizen = 1 Then
    MsgBox "Kalkulacija nije otvorena, otvorite novu !"
    DoCmd.Close  'sta si ovde zatvorio? rs ili formu? rs ne mozes ovako zatvoriti.       'Ovdje se zatvara forma
    DoCmd.OpenForm "FormKalkulacija", , , , acFormEdit 'koji ti je uslov z aotvaranje forme?       ' Uslov nije postavljen jer je po meni nepotreban 
    Exit Sub
End If
'gde zatvaras recordset?   ' rst.Close postoji samo je ispusten prilikom kopiranja
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: rst.MoveLast problem08.11.2010. u 21:20 - pre 164 meseci
OK, probaj sa referencama. Ako si zatvorio rekordset, imas sve DIM koji trebaju, probaj da vidis da li su reference problem.

Bez obzira na rference, meni se cini verovatnije da ti otvaranje forme dok je rekordset otvoren pravi problem. Ako je svrha otvaranja rekordseta da dodjes do poslednjeg rekorda i nesto iz njega procitas, onda ti zaista rekordset ne treba uopste. Razmisli o tom resenju.
 
Odgovor na temu

duledixi
Banja Luka

Član broj: 62165
Poruke: 67
*.teol.net.



+3 Profil

icon Re: rst.MoveLast problem09.11.2010. u 13:38 - pre 164 meseci
Hvala jos jedanput na savjetima, budem probao.
Pozz
 
Odgovor na temu

[es] :: Access :: rst.MoveLast problem

[ Pregleda: 2064 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.