Odbc fejl når jeg kører et VBS Script
Hej EksperterJeg 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