08. august 2007 - 14:44Der er
5 kommentarer og 1 løsning
fejl ved slet af fil
Jeg får følgende fejl når jeg prøver at slette den fil:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'fs.GetFile'
Koden ser således ud.. den er taget direkte fra w3schools hvorfor det undre mig at det ikke virker. Nogen der har en ide om hvad der sker og hvorfor? på forhånd tak
dim fs,f set fs=Server.CreateObject("Scripting.FileSystemObject")
if fs.FileExists(loRs.Fields("program").Value) then set f=fs.GetFile(loRs.Fields("program").Value) f.delete end if
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Er du sikker på at det felt du aflæser indeholder en streng med en sti til et filnavn som findes (eller at den bare indeholder en streng og ikke NULL fordi feltet ikke er udfyldt i databasen)?
Du skal i øvrigt være opmærksom på at FSO (FileSystemObject) arbejder med filsystem stier og ikke virtuelle stier ifht. dit websites root, dvs. at f.eks. /enfil.txt ikke nødvendigvis peger på en fil som ligger i roden af dit website, men er afhængig af hvilken mappe der aktuelt er aktiv. Hvis du ikke specifikt skifter mappe og drev til den sti som dit website ligger på, så tages der givetvis udgangspunkt i den mappe hvori IIS-applikationen, der benytter FSO-komponenten, ligger (og det er nok Windows/system32-mappen eller sådan noget).
OK!? Jeg vil tro det har noget med at gøre, at Value-egenskaben på et recordsetfelt er en variant og at VBScript måske har svært ved at typebestemme værdien (måske pga. manglende subtype-information på varianten) og det resulterer så i at der sendes en variant til funktionen i stedet for en string. Du kan muligvis komme omkring "problemet" ved at lave en eksplicit typekonvertering af den variant i kaldet:
set f=fs.GetFile(CStr(loRs.Fields("program").Value))
...hvis altså det er vigtigt for dig at du kan gøre det hele i én arbejdsgang... :)
Det virker så ikke helt alligevel.. jeg får denne fejl besked
Der opstod en Microsoft VBScript-kørselsfejl fejl '800a0046'
Tilladelse nægtet
Den fejl kommer både på min egen computer og den server jeg lægger det op på. CHMOD er nu ellers sat til 666 så den burde have skrive rettigheder.
Jeg har også oplevet noget underligt.
Jeg har testet følgende kode på min egen maskine. Hvis jeg prøver at slette en fil på c: virker dert. Prøver jeg at slette en fil som ligger i min hjemmemappe i min IIS(eller bare en fil på et andet drev end c:) så får jeg ovenstående fejlmeddelelse og jeg har også givet skriverettigheder på min IIS
dim fs,f set fs=Server.CreateObject("Scripting.FileSystemObject")
path="c:\test.txt"
if fs.FileExists(path) then fs.deleteFile(path) end if
Nu har jeg test følgende kode.. hvilket virker. Så det må betyde at fejlen ikke ligger i kode eller stien til filen da den får fat i filen og kan udskrive modified dato.
dim fs,f set fs=Server.CreateObject("Scripting.FileSystemObject") path=CStr(loRs.Fields("program").Value)
if fs.FileExists(path) then set f=fs.GetFile(path) response.write("The file was last modified on: " & f.DateLastModified) end if
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.