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])
=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
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
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
(c) Alan ford