Avatar billede zamiel Nybegynder
08. august 2007 - 14:44 Der 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
Avatar billede softspot Forsker
08. august 2007 - 19:11 #1
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).
Avatar billede zamiel Nybegynder
09. august 2007 - 09:23 #2
stien var god nok. Men den kunne ikke lide at få den fra et recordset. Det virker hvis jeg lægger det i en variable først og så bruger den. strange
Avatar billede softspot Forsker
09. august 2007 - 09:34 #3
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... :)
Avatar billede zamiel Nybegynder
10. august 2007 - 10:05 #4
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
Avatar billede zamiel Nybegynder
10. august 2007 - 10:44 #5
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
Avatar billede zamiel Nybegynder
30. august 2007 - 15:02 #6
lukket
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
Kurser inden for grundlæggende programmering

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