17. april 2005 - 23:16
Der er
4 kommentarer og
1 løsning
Let problem med VB i Access
Function FindNavn(arnr)
Dim Dbs As Database, rst As Recordset
Set Dbs = CurrentDb
Set rst = Dbs.OpenRecordset("SELECT [Navn] FROM [Hunde]")
FindNavn = rst![Navn]
rst.Close
End Function
Hvorfor virker det ikke.
Jeg har det i et visual basic modul i Access 2002
Jeg har en tabel (Hunde) med et felt(Navn)
Jeg har tilføjet en reference til "Microsoft DAO 3.6 object library
Jeg får fejlen: "Type mismatch" i linien: "Set rst = Dbs.OpenRecordset("SELECT [Navn] FROM [Hunde]")"
Sandsynligvis er svaret let, men jeg har aldrig arbejdet i Access før.
Mads M Pedersen
17. april 2005 - 23:40
#1
Kan ikke lige huske om det er nødvendigt, men prøv:
Dim Dbs As Database, rst As DAO.Recordset
18. april 2005 - 08:44
#4
Ja, det er altid en god ide at skrive DAO eller ADODB foran (afhængigt af om man vil bruge DAO- eller ADO-metoderne).
Når Mads får en fejl nu, skyldes det, at hans "Microsoft ActiveX Data Object 2.x Library" står først i forhold til hans "Microsoft DAO 3.x Object Library" i referencerne.
Når Access støder på det reserveret ord "Recordset", så bladre den gennem alle bibliotekerne (referencerne), startende fra oven, indtil den finder ordet. Og herefter gælder kun den syntaks og de metoder, egenskaber og hændelser, som står i det bibliotek.
Hvis man ved, at man kun vil bruge DAO-syntaks, bør man helt fjerne referencen til "Microsoft ActiveX Data Object 2.x Library" (og omvendt), da det betyder at Access skal bladre gennem flere biblioteker hver gang en kommando skal findes. Det samme gælder alle mulige andre referencer, som man ikke bruger (De er selvfølgelig indekseret, men alligevel sløver det ned).
Det er også derfor at rækkefølgen ikke er ligegyldig. VBA, Access og OLE bør altid ligge øverst. Herefter følger DAO og/eller ADO og tilsidst alle de andre referencer, som man får lagt på (f.eks. Word, Excel, Outlook m.m.). Så hvis man har en Outlook-reference, som man ved kun bruges sjældent, bør den stå nederst.
Well, begejstringen løb vist lidt af med mig her ;o)