03. september 2003 - 13:12Der er
28 kommentarer og 2 løsninger
Dim som Database og Recordset
Jeg har i VBA følgende 2 linjer
Dim DataBase As Database Dim PostSæt As Recordset
De startes ved et tryk på en knap på en formular, og så er der en masse anden kode, som udføres.
Problemet er, at jeg får fejlmeddelelsen "User-defined type not defined", når jeg prøver at køre det...men i Hjælp står der at man godt kan gøre sådan.
Referere? Normalvis (er vant til at programmere i VBA i Access 97) plejer jeg bare at kunne starte med at dimensionere mine variabler, også som Database og Recordset...og det med Variant ved jeg godt, det fungerer jo også fint uden dem...men det SKAL da være muligt at definere som Database og Recordset...ved bare ikke hvad der går galt :-(
Nu du nævner der med at referere, kommer jeg til at tænke på, om det kan skyldes nogle indstillinger i Access? Det skal siges, at jeg bruger min skoles computere, derfor har jeg ingen anelse om hvordan Access er sat op.
I Access97 var DAO standard. Det er det iklke i nyere versioner. Gå ind under Tools - References og find MS DAO 3.6 Object Library. Hak det af, og se om det ikke hjælper.
Nu gik jeg ind i Tools->References og opdagede at MS DAO 3.6 Object Library ikke var slået til, så det er den nu, og nu kan jeg godt deklarere variablerne som Database og Recordset, men når jeg så når til følgende linje:
Set PostSæt = DB.OpenRecordset("SELECT * FROM Ord ORDER BY Ord")
får jeg en "Type Mismatch" fejl. Hvad er der NU galt? :-(
Det første "Ord" er navnet på tabellen, mens det næste er navnet på et felt af typen Tekst...og jeg sammenligner jo ikke noget med noget som helst inden jeg kommer til Set PostSæt linjen...så det kan da ikke være det :-(
Nej, det er måske ikke logisk, men selv når det er ændret, er det samme fejl.
Jeg har prøvet alle tænkelige ændringer og kommet frem til dette.
Set PostSaet = DB.OpenRecordset("SELECT * FROM Hejsa ORDER BY Kode")
PostSaet fordi den måske ikke kan tage æ, Hejsa som det nye navn på min tabel (som faktisk eksisterer...jeg HAR tjekket), og Kode som navnet på et af felterne i min tabel.
Og inden da har jeg defineret DB med følgende sætning.
Okay...det virkede, da jeg satte DAO på. Men da jeg programmerede i Access 97, var det ikke nødvendigt med dette...jeg kunne blot skrive Dim PostSæt as Recordset, og så virkede det fint. Men hvordan kan det så være at jeg er nødt til at skrive DAO nu for at få det til at virke?
Hvis du f.eks vil eksportere data fra Access til Excel, skal du lave en reference til Excel i Tools > References > og browse ned igennem bibliotekerne til du ser dit Excel bibliotek og derefter sørge for, at der er et checkmærke i boksen i venstre side. Hvis ikke du gør det, kan Access ikke "se" Excel, og eksporten lykkes ikke.
Hvis du koder i Access97 og bruger en DAO kode som du startede dit spørgsmål med, så kører det fint. Men bruger du den samme kode i 2000 går det galt, hvis ikke du har en reference til DAO, da DAO er standard i 97 medens ADO er standard i 2000.
Hvis du benytter andre "programmer", skal du sørge for, at fortælle programmet "hvilket sprog der skal tales". Ellers "misforstår" Access din kode.
Open a form in design view and then go into the code. Then on the menu select the Tools-References menu. Now you will see a list of References which have a v beside them. Find the one containing ADO 2.X where X is a number between 1 and 9 Remove the v
Jeg har engang læst en længere smøre om det, men det var på så højt et plan, at jeg opgav. Så der melder jeg pas, men er da interesseret i en letforståelig forklaring.
well Microsoft has made changes to many of their products over the years and data access is one of them. DAO is an older technology although still prefered by many. ADO is newer but has been out for a number of years now. ADO .NET is the newest technology and I expect it will come to Access soon!
Okay...jeg har prøvet det med at fjerne fluebenet for ADO, men databasen går helt kold, så jeg opgiver lige det for nu.
Men det lyder jo alt sammen fornuftigt nok, så jeg kan vist godt give point nu :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.