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

ADO, DAO, i nedoumice oko RecordsetClone...

[es] :: Access :: ADO, DAO, i nedoumice oko RecordsetClone...

[ Pregleda: 2492 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mika
NBG-ML

Član broj: 55
Poruke: 640
*.privsav.co.yu.



+1 Profil

icon ADO, DAO, i nedoumice oko RecordsetClone...07.12.2004. u 15:44 - pre 236 meseci
Poštovanje.

Imam jednu veliku nedoumicu i nisam uspeo nigde da iskopam objašnjenje.
Na continuous formi imam jednu kontrolu čiji je control source:
Code:

=Test([ID])


Funkcija Test() je ovde prikazana samo radi ilustracije, uprošćena:

Code:

Function Test(Key)

    Dim rst As ADODB.Recordset
    
    Set rst = Me.RecordsetClone
    rst.Find ("[ID] = " & Key)
    
    Test = rst("Amount")
End Function


Forma je bound za Query.
Konkretno, funkcija koja mi treba jeste da izračuna "nešto", za svako pojedinačno polje u continuous formi, ali to je nebitno sad, izbacio sam kalkulaciju radi jednostavnosti primera. Ono što mene interesuje, jeste zašto gornji kod neće da radi? Koristim ADO recordset, kao što je i preporučeno, i na formi mi u datoj kontroli izbacuje #Error. Ali, kada promenim kod u sledeći:

Code:

Function Test(Key)

    Dim rst As Recordset    'Ovde je izbaceno "ADODB."
    
    Set rst = Me.RecordsetClone
    rst.FindFirst ("[ID] = " & Key)    'Ovde je FindFirst umesto Find
    
    Test = rst("Amount")
End Function


Ovo sad radi kako treba.
E sad, kapiram ja da ovo drugo radi zato sto sam rst deklarisao kao DAO a ne kao ADO recordset, ali mi nije jasno zašto, koji je uzrok? Zar ADO ne podržava RecordsetClone?

Mislim, ja mogu da ostavim ovaj drugi kod u bazi da mi radi, ali zar nije preporučeno (od strane MS-a) migriranje na ADO i njegove metode? Konačno, zašto kod broj 1. neće da radi?

Puno pozdrava, Mika.


Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
213.149.112.*



Profil

icon Re: ADO, DAO, i nedoumice oko RecordsetClone...08.12.2004. u 10:49 - pre 236 meseci
I ja imam isti (slican) problem. U pitanju je find metoda. Kod ADO-a nece da radi, dok na DAO oce. Mada u sustini find je vrlo los nacin za navigaciju. Moja ti je preporuka da koristis SQL dje god mozes. Npr za tvoj slucaj
Na afterupdate event polja ID ides:
dim rst as adodb.recordset
dim strsql as string
strsql = "SELECT Amount FROM Tabelakojajeizvorzaformu WHERE ID =" + cstr(Me!ID)
rst.open strsql,currentproject.connection,adopenstatic
Me.TOPOLJE.Value = rst!Amount
 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.privsav.co.yu.



+1 Profil

icon Re: ADO, DAO, i nedoumice oko RecordsetClone...08.12.2004. u 10:57 - pre 236 meseci
Citat:

U pitanju je find metoda. Kod ADO-a nece da radi, dok na DAO oce.


Kod mene Find baš radi za ADO recordsete a za DAO neće, što je i normalno, zato što je Find metoda za ADO, a DAO ima svoj ekvivalent - FindFirst metodu.

Mislim da je ipak brže ići preko Find iz tog razloga što je recordset već otvoren, i ne troši se vreme oko otvaranja novog recordseta. Ako grešim, neka me neko ispravi.
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
213.149.112.*



Profil

icon Re: ADO, DAO, i nedoumice oko RecordsetClone...08.12.2004. u 11:06 - pre 236 meseci
Kod mene find ne radi na ADO recordsetu, dok mi findfirst/next/last radi na DAO. Zasto find na ADO nece ne znam. Jos sam u nekim knjigama citao da je find najsporiji moguci nacin pretrage, posle njega je seek, ali on pretrazuje samo tabele ili tabelarne recordsete i to radi preko indeksa, i na kraju kao najbrzi SQL. Naravno nemam potvrdu ovoga ali ja od tada find izbjegavam i sve radim preko SQL-a, a on nikad ne pravi probleme.

Pozdrav.
 
Odgovor na temu

[es] :: Access :: ADO, DAO, i nedoumice oko RecordsetClone...

[ Pregleda: 2492 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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