[ mika @ 07.12.2004. 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. |