Avatar billede jensen65 Nybegynder
07. april 2015 - 08:51 Der er 12 kommentarer og
1 løsning

Odbc fejl når jeg kører et VBS Script

Hej Eksperter
Jeg er administrator og udvikler af en lille medlems database på vores lille lokal radio her på sydfyn. Databasen er lavet efter en bog om access og fungerer egentlig fint nok.

Problemmet er at vi hvert år har en stor lodtrækning blandt alle medlemmer, og fik i den forbindelse udarbejdet et VBS script der laver en en tilfældig udtrækning af medlemmerne.
Kort fortalt, (eller hvad jeg har forstand på :) så har vi et felt der hedder katagori og her står et tal afhængig af hvor mange "lodder" de har købt. Dvs betaler de 500,- for deres medlemsskab har de 30 lodder og jeg skriver 30 i katagori feltet.
Scriptet gør så det, at det vist nok ligger alle dem med X antal lodder sammen og laver en tilfældig udtrækning heraf.
Det har virket fint indtil i år, hvor det pludselig ikke virker mere og jeg får følgende fejl:

Microsoft ODBC Driver Manager Datakildenavnet blev ikke fundet, og der er ikke angivet en standard driver.
Kode: 80004005
Kilde: Microsoft OLE DB Provider for ODBC Drivers


Jeg sætter hele scriptet ind herunder.

Option Explicit

Dim myDB, myRS, myDict, strout, tjekSum, randIndex, i, iusers, userkat, vinderNr

Set myDB = CreateObject("ADODB.Connection")
Set myRS = CreateObject("ADODB.Recordset")

' GAMLE DATABASE FORBINDELSER
' myDB.Open "File Name=db.udl;"
' myDB.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=Medlemmer 2004.mdb;Uid=admin;Pwd=radio1516;"

' TILRETTET DATABASE FORBINDELSE
myDB.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=Medlemmer 2004.mdb;SystemDB=Sikret.mdw;", "jensen", "jensen65"

Set myRS = myDB.Execute("SELECT SUM(Katagori) FROM Private;")
tjekSum = myRS(0)
myRS.close
Set myRS = Nothing

Set myRS = myDB.Execute("SELECT Medlemsnr,Katagori FROM Private;")
Set myDict = CreateObject("Scripting.Dictionary")

While Not myRS.EOF
    iusers=iusers+1
    For userkat = 1 to myRS(1)
        i = i+1
        myDict.add i, Trim(myRS(0))
    Next
    myRS.MoveNext
Wend
myRS.close
Set myRS = Nothing
strout=strout&"Antal medlemmer: "&iusers&vbcrlf
strout=strout&"Sum af kategorier: "&tjekSum&vbcrlf
strout=strout&"Antal lodsedler: "&myDict.count&vbcrlf

Randomize
randIndex = Int((tjekSum * Rnd) + 1)
strout=strout&"Tilfældigt index: "&randIndex&vbcrlf
vinderNr = myDict.item(randIndex)
strout=strout&vbcrlf&"Udtrukket medlemsnr.: "&vinderNr&vbcrlf

myDB.Execute("INSERT INTO Vindere (vinderMedlemsnr) VALUES("&vinderNr&");")

Set myRS = myDB.Execute("SELECT Medlemsnr, Katagori, Navn, Adresse, Postnr FROM Private WHERE Medlemsnr="&vinderNr&";")
If not myRS.eof Then
    strout=strout&"Kategori: "&myRS("Katagori")&vbcrlf
    strout=strout&"Navn: "&myRS("Navn")&vbcrlf
    strout=strout&"Adresse: "&myRS("Adresse")&vbcrlf
    strout=strout&"Postnr: "&myRS("Postnr")&vbcrlf
End If
myRS.close
Set myRS = Nothing

Set myDict = Nothing
myDB.close()
Set myDB = Nothing

MsgBox (strout)


Håber det giver mening for nogle af jer og i kan finde fejlen, da det er utroligt vigtigt for os på radioen. Personen der har lavet scriptet er ikke mere kontaktbar, så her er der ikke noget hjælp at hente.

Er der nogen derude der har brug for databasen, sender jeg den gerne. Fylder ca 12MB.

Da det som sagt er meget vigtigt for os, sætter jeg max point på.

MVH
Jensen65
Avatar billede supertekst Ekspert
07. april 2015 - 09:18 #1
Du er velkommen til at sende filen. @-adresse under min profil. Hvilken version af Access anvendes?
Avatar billede jensen65 Nybegynder
07. april 2015 - 09:34 #2
Hej Super
Access på radioen er vist nok 2003 og den jeg prøver med herhjemme er Office 365. Det er samme fejl jeg får i dem begge.

Kigger lige under din profil og sender dig hele databasen incl. scriptet. :)
Avatar billede jensen65 Nybegynder
07. april 2015 - 09:58 #3
Har læst en del herinde på lignende problemmer, og jeg skal nok lige nævne at vi sidste år kørte på XP 32 bit og kører i år på Win 7 64 bit. Det samme gør jeg herhjemme hvor jeg også forsøger at løse problemmet.

Kan problemmet have noget at gøre med ODBC manager, og skal vi tilrette noget i denne?

Damn det er tungt det her. :D
Avatar billede supertekst Ekspert
07. april 2015 - 09:58 #4
Hej Jensen65

Er modtaget - vender tilbage.
Avatar billede terry Ekspert
07. april 2015 - 14:31 #5
32 or 64 bit office (Access)?
If 64 then I suggest you change back to 32 bit
Avatar billede jensen65 Nybegynder
07. april 2015 - 20:40 #6
Hi Terry
I know how to see wether windows is 32 or 64 bit but not access. How do i do  that?

And can i change it back without reinstall the whole Office package?
Avatar billede terry Ekspert
08. april 2015 - 08:22 #7
Not sure about office 365 but 2013 choose file menu then Account. Then you will see an About Access button. Press this and you will see the Access version installed.
Unless you have specifically chosen to install the 64 bit version then I guess you have the 32 bit version installed.

http://www.cnet.com/how-to/how-to-install-the-64-bit-version-of-office-365/

If necessary, you can uninstall Access then re-install.


You should also check that you have no missing references under tools-references.
Avatar billede jensen65 Nybegynder
08. april 2015 - 08:42 #8
Hi Terry
Yeah i found it now, and it is the 32 bit version, so thats not the issue. :)
Avatar billede terry Ekspert
08. april 2015 - 10:31 #9
ok, lets wait and see what supertekst comes up with
Avatar billede supertekst Ekspert
08. april 2015 - 14:54 #10
VBA-kode er indlagt i et Module i Access som en tilnærmelsesvis efterligning af Scriptet.
Er leveret.
Avatar billede jensen65 Nybegynder
08. april 2015 - 15:22 #11
Det er sgu bare ok Super. Smid et svar så jeg kan give dig dine velfortjente point. :)
Avatar billede supertekst Ekspert
08. april 2015 - 17:27 #12
Svar
Avatar billede jensen65 Nybegynder
08. april 2015 - 22:22 #13
Tak for hjælpen Super. Det var sgu godt gået. :)
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