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

ADO, DAO, i nedoumice oko RecordsetClone...

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

[ Pregleda: 925 | Odgovora: 3 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mika
NBG-ML

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



Profil

icon ADO, DAO, i nedoumice oko RecordsetClone...07.12.2004. u 15:44

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
07.12.2004. u 15:44 

Mikelly

Član broj: 16730
Poruke: 256
213.149.112.*



Profil

icon Re: ADO, DAO, i nedoumice oko RecordsetClone...08.12.2004. u 10:49
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
08.12.2004. u 10:49 

mika
NBG-ML

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



Profil

icon Re: ADO, DAO, i nedoumice oko RecordsetClone...08.12.2004. u 10:57
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
08.12.2004. u 10:57 

Mikelly

Član broj: 16730
Poruke: 256
213.149.112.*



Profil

icon Re: ADO, DAO, i nedoumice oko RecordsetClone...08.12.2004. u 11:06
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.
08.12.2004. u 11:06 

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

[ Pregleda: 925 | Odgovora: 3 ]

Postavi temu Odgovori

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