Novo

Forum kao aplikacija na telefonu

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

  • 4 odgovora
  • 2.990 pregleda

Najnovija ↓

rst.MoveLast problem 08.11.2010. u 12:36 · pre 194 meseca #1
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

Re: rst.MoveLast problem 08.11.2010. u 15:27 · pre 194 meseca #2
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?



:-)
Sviđa mi se1
Re: rst.MoveLast problem 08.11.2010. u 21:06 · pre 194 meseca #3
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
Re: rst.MoveLast problem 08.11.2010. u 22:20 · pre 194 meseca #4
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.
Re: rst.MoveLast problem 09.11.2010. u 14:38 · pre 194 meseca #5
Hvala jos jedanput na savjetima, budem probao.
Pozz
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme