Avatar billede horus Nybegynder
04. juli 2001 - 12:32 Der er 20 kommentarer og
1 løsning

ADO & Access97

Hejsa,

Jeg er ved at forsøge at konvertere en Access97 database fra DAO til ADO - men jeg kan SKISME ikke finde ud af noget så simpelt som at åbne en tabel via kode... med dao skrev jeg sårn cirka:

Dim dbs as database
Dim rst as recordset

set dbs = CurrentDb
set rst = dbs.Openrecordset(\"TABELNAVN\")

...

Og så kunne jeg gøre hvad jeg nu ville med tabellen...

Med ADO har jeg læst mig frem til at man kan bruge CurrentProject.Connection - men ak - Access97 vil ikke kendes ved CurrentProject :-( Det vil A2K tilgengæld og det på trods af at jeg har samme ADO bibliotek tilsluttet a97 som A2k - den eneste forskel jeg kan se er at A97 refererer til et Microsoft Access 8.0 Object Library - mens A2K refererer til vers. 9 af samme bibliotek....

Er der nogen der kan hjælpe mig med at få åbnet en tabel via ADO ? Og evt. komme med en henvisning til hvor jeg kan læse mere om ADO og Access97 - alt hvad jeg kan finde har været med AD0 og VB, Java, C+, Perl osv. men ikke access97 - eller også er det udelukkende henvendt på A2K - og jeg vil ikke bruge A2K, men gerne ADO - nogen der kan hjælpe ?

På forhånd tak,

Horus
www.HuskDet.Nu - så glemmer du aldrig...

Avatar billede terry Ekspert
04. juli 2001 - 12:54 #1
Taken from HELP

ActiveCommand Property Example (VB)



This example demonstrates the ActiveCommand property.

A subroutine is given a Recordset object whose ActiveCommand property is used to display the command text and parameter that created the Recordset.

Public Sub Main()
    ActiveCommandX
End Sub

Public Sub ActiveCommandX()
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
Dim strPrompt As String, strName As String

strPrompt = \"Enter an author\'s name (e.g., Ringer): \"
strName = Trim(InputBox(strPrompt, \"ActiveCommandX Example\"))
cmd.CommandText = \"SELECT * FROM Authors WHERE au_lname = ?\"
cmd.Parameters.Append _
    cmd.CreateParameter(\"LastName\", adChar, adParamInput, 20, strName)

cnn.Open \"DSN=Pubs;Provider=MSDASQL; uid=sa; pwd=;\"
cmd.ActiveConnection = cnn
Set rst = cmd.Execute(, , adCmdText)
ActiveCommandXprint rst

rst.Close
cnn.Close
End Sub


There is quite a bit of help to be had in Access itself, but I would suggest that you purchase a  good book.
Avatar billede horus Nybegynder
04. juli 2001 - 13:00 #2
Tak for dit forslag terry,

MEN

Dit eksempel som er taget fra hjælpen åbner en database og tabel via en DSN forbindelse og det er jeg jo ikke interesseret i - jeg vil åbne en tabel inde fra den database jeg koder i - desuden tror jeg at du har taget eksemplet fra hjælpen i A2K - og jeg vil jo bruge ADO i A97 - A97 (min i hvert fald) indeholder ikke nogen hjælpefil vedr. ADO !

Horus
www.HuskDet.Nu - så glemmer du aldrig...

Avatar billede terry Ekspert
04. juli 2001 - 13:16 #3
horus, you need a reference to ADO. Tools-references.

Yes I did take it from Access XP, but ADO is ADO
04. juli 2001 - 13:25 #4
Hey Horus, my old friend :o)

Jeg tror at dette vil hjælpe dig lidt på vej:

Public Function test()
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
   
    Set cn = New ADODB.Connection
    cn.Provider = \"Microsoft.Jet.OLEDB.3.51\"
    cn.Open currentdb.Name, \"administrator\", \"\"
    rs.Open \"Select * From Test\", cn, adOpenKeyset, adLockOptimistic
    \'do as you please here
    \'...
    rs.close
    cn.close
   
End Function

/Thomas
Avatar billede horus Nybegynder
04. juli 2001 - 13:38 #5
YO - Thomas my main - long time no mail - Står al ting vel til ? :-)

Tak for dit forslag....

Jeg får dog en fejl ved linien:

cn.open CurrentDB.Name, \"administrator\", \"\"

Den siger:

Cannot start your application. The workgroup information file is missing or opened exclusive by another user.

Samme besked i både A2K og A97 :-(

Noget guld at spytte ud ? :-)

Horus,
www.HuskDet.Nu - så glemmer du aldrig...

04. juli 2001 - 13:41 #6
Alt er vel :o) Forhåbentlig også hos dig?

prøv at skifte \"administrator\" ud med \"Admin\" eller hvad der nu måtte være et gyldigt brugernavn.
I det sidste \"\" skal du naturligvis angive et eventuelt password.
Avatar billede horus Nybegynder
04. juli 2001 - 13:47 #7
Jo tak - har lige haft 2 ugers ferie - en af de travle - nu er knægten jo ved at være næsten 2, så vi har været i Ålborg Zoo, Legoland, Randers Regnsskov, Kbh. Zoo og Tivoli, samt diverse småture - så NU trænger jeg til ferie :-)

Har prøvet at ændre username og pwd - no luck :-(

Fungerer det hos dig ?

Horus
www.HuskDet.Nu - så glemmer du aldrig...

04. juli 2001 - 14:17 #8
fungere hos mig??
Vil det sige, at du også afprøver din kode inden du sender den ud til kunderne??? Satans til perfektionisme, du lægger for dagen ;o)

Nej, det fungerer heller ikke hos mig - har lige prøvet! :o(

kigger lige lidt videdere på det...
Avatar billede horus Nybegynder
04. juli 2001 - 14:18 #9
Thomas - YOU LIFESAVER :-)

Det virkede alligevel - jeg havde ikke lige prøvet at indsætte admin, for jeg benytter en anden arbejdsgruppe end system.mdw - så jeg prøvede den bruger jeg plejer at logge ind med - det virkede ikke ?!? Men admin virker - og det selvom der ikke findes nogen admin bruger, men en administrator bruger ?!? Go figure :-)

Nå, men nu lader det til at virke - nu jeg har dig :-)

RecordCount - kan det benyttes i ADO på en access tabel ? Jeg får -1 som resultat på det jeg prøver, og iflg. hjælpen sker det hvis det er tabeltyper som ADO ikke kan \"tælle\" på - man kan jo åbne tabeler med forskellige \"options\" ligesom i DAO - ved du lige umiddelbart HVORDAN man skal åbne i ADO for at kunne bruge recordcount ?

Tak for hjælpen Thomas,

Fortsat god sommer :-)

Horus
www.HuskDet.Nu - så glemmer du aldrig...

Avatar billede horus Nybegynder
04. juli 2001 - 14:20 #10
Virker det heller ikke hvis du bruger admin som du foreslår ? :-)

Horus
04. juli 2001 - 14:24 #11
mht recordcount, så plejer det at virke i ADO uden at man behøver lave en .movelast. Det skulle man jo ofte i DAO.

Men jeg har ikke nogen erfaring med at bruge ADO i Access 97 - tilsyneladende er der en del forskelle.

Men metoden med .movelast +.movefirst skulle selvfølgelig du, selvom den er langsom.

næ, min virker stadig ikke, men jeg tror at det skyldes at jeg i sin tid oprettede databasen som en anden bruger....har ikke lige prøvet på en anden database...

Når bare den virker hos dig :o) Jeg tror ikke jeg selv får brug for det (DAO fungere jo fint :o)
Avatar billede terry Ekspert
04. juli 2001 - 14:28 #12
Thomas its great to hear that others still use DAO. Why change something when it works!

Terry


Avatar billede horus Nybegynder
04. juli 2001 - 14:34 #13
Jeg prøver mig lidt frem mht. RecordCount.

eneste grund til at jeg skifter til ADO - og jeg er kun ved at lave et lille forsøg - jeg har nemlig en db der i forb. med en udskrift foretager en del beregninger, og den er KANON langsom - jeg vil så se om ADO er mærkbart hurtigere - det har jeg ladet mig fortælle at det er - personligt holdt jeg da også helst fast i dao - det kender man og som i siger så virker det - MEN hvis ADO er mærkbart hurtigere har jeg ikke noget valg i dette tilfælde...

Horus
04. juli 2001 - 14:37 #14
Så vidt jeg har læst mig til (og erfaret), så er ADO kun hurtigere hvis du arbejder med ODBC eller data projects.
Så længe du arbejder i ren Access, tror jeg stadig at DAO er hurtigst, da den er mere simpel og ligetil.

Diskussionen har været oppe et par gange på dette site, men jeg kan ikke lige finde de rigtige links.
Avatar billede terry Ekspert
04. juli 2001 - 14:41 #15
horus> I havent used ADO on Access databases so I cant say for mayself if ADO is faster that DAO. But I doubt that there will be much difference at all. ADO has to go through more \"layers\" to get to the data!

You could try optimizing your queries etc. more to win there I would think!
Avatar billede horus Nybegynder
04. juli 2001 - 15:19 #16
terry og thomas,

tak for jeres kommentarer - jeg laver lige mit forsøg færdigt - så kan jeg jo selv se om det er hurtigere eller ej - ikke at jeg ikke tror på jer - men i ved jo at vi mennesker skal lære af egne erfaringer :-)

Jeg kan da lige lade jer vide hvordan resultatet af mit forsøg ender :-)

Hygge,

horus
www.HuskDet.Nu - så glemmer du aldrig...

04. juli 2001 - 15:44 #17
ja tak, det kunne være interessant :o)

og tak for point\'ene :o)
Avatar billede horus Nybegynder
05. juli 2001 - 11:50 #18
Thomas og Terry,

så er jeg færdig med at teste mht. ADO - og i havde jo (selvfølgelig :-) ret i at der ikke var det store at hente.... jeg fik dog isoleret min flaskehals - det viser sig at en sub-report er den primære årsag til at det går så langsomt.

Jeg havde lidt bøvl med at få ADO løsningen til at fungere med den forespørgsel der var sub-reportens datakilde, så jeg lavede subreporten \"unbound\" og programmerede data\'ene ind i de relevante felter i stedet - dette gav mig en ca. 60 procents hastigheds forøgelse i ADO udgaven i forhold til den \"bound\" DAO løsning. Fint tænkte jer - her sker da noget, men det anede mig at det måske ikke var ADO, men snarere det at sub-reporten var lavet unbound i stedet, så jeg tog min DAO version af samme sub-report, lavede den unbound også, og vupti så var den også lige pludselig møj hurtigere - rent faktisk var den en smule hurtigere end ADO løsningen ?!?

Jeg har godt nok tidligere læst og set at nogle vælger at lave alle deres forms og report unbound, og så bare programmere data\'ene ind, under påskud af at det skulle være hurtigere - indtil nu har jeg dog ikke hæftet mig synderligt ved det, men det kunne tyde på at der er noget om det..... det er i hvert fald en interessant iagttagelse.... sikkert værd at prøve yderligere af fremover....

Er der nogen af jer der har lignende erfaringer med unbound forms og reports ?

Nå, men jeg havde jo lovet noget feed-back - det har i så fået :-)

Hygge og tak for hjælpen

Horus
www.HuskDet.Nu - så glemmer du aldrig....

05. juli 2001 - 13:36 #19
Hey begge 2,

Det både glæder og skuffer mig, at få bekræftet at ADO IKKE er hurtigere end DAO. Det glæder mig at få ret, men det er jo sørgeligt at det nyeste produkt ikke også er det hurtigste....

Mht at arbejde med unbound forms, som du skriver, så har jeg ingen erfaring med det - rent faktisk overrasker det mig meget at det skulle være hurtigere!!!?? Hvor fedt er det? Hvordan opdaterer man records uden at det skal gøres alt for besværligt??

Men tak for tilbagemeldingen Horus :o)

Nu vil jeg gå ud og slappe af i solen - jeg er lige startet som fuldtids-freelance for 1 time siden. Sååå, hvis I mangler lidt assistance ;o)

/Thomas
Avatar billede terry Ekspert
05. juli 2001 - 13:41 #20
Hi thomas, and congratulations with your new job,
hpe it goes well for you!

Whats the hourly rate for sitting in the sun, if its good enough I may start up myself?

terry
05. juli 2001 - 13:54 #21
ah well, the rate for sitting in the sun is about 300,- pr hour. If you actually do some work, you can get 7-800 pr hour :o)
But who wants to work?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester