Avatar billede Laitings Nybegynder
11. november 2002 - 15:59 Der er 8 kommentarer og
1 løsning

fejlfinding i script! Hjææælp!

Dette er et script som skulle løbe et bibliotek igennem og lægge navnene fra billeder ind i en Access database. Samtidigt opretter det en record for hvert underbibliotek (kategorier)
Men scriptet virker ikke og der er ingen fejlmeddelelse, den står bare og tygger på scriptet! Hvad går der galt.!? Og hvorfor kommer der ingen fejlmeddelse?

Jeg håber nogen kan hjælpe mig med at løse det, eller fortælle mig hvordan jeg fejltester det!? Indtil videre har jeg testet databaseforbindelsen og den virker, men her stopper mine færdigheder som script-fejlfinder!

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("billeder.mdb")

Set fso = CreateObject("Scripting.FileSystemObject")

function lookinfolder (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  'Response.Write objFolder.path & "<br>"
 
  call saveFiles (objFolder.Path)
 
  For each Folder in objFolder.SubFolders
    call lookinfolder (Folder.path)
  next
 
  Set objFolder = Nothing
end function

function saveFiles (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  Set objFiles = objFolder.Files
  catID = ""
  for each file in objFiles
    if InStr(1,"gif,jpg,jpeg,bmp", LCase(fso.GetExtensionName(file.name))) > 0 then
      if catID = "" then catID = findCatID(objFolder.name)
      SQL = "INSERT INTO billeder (katID, billedenavn) VALUES (" & catID & ", '" & file.name & "')"
      Conn.Execute (SQL)
      'Response.Write " : Filnavn : " & file.name & " ... katID = " & catID     
    end if
  next
  Set objFolder = Nothing
  Set objFiles = Nothing
end function

function findCatID (foldernavn)
Set rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT ID, kategorinavn FROM kategori WHERE kategorinavn = '" & foldernavn & "'"
rs.Open SQL, Conn, 1, 3
if rs.EOF then
  rs.AddNew
  rs("kategorinavn") = foldernavn
  rs.Update
  findCatID = rs("id")
else
  findCatID = rs("id")
end if
rs.Close
end function

sti = "."
strPhysicalPath = Server.MapPath(sti)

lookinfolder (strPhysicalPath)

Response.Write "Sådan .... fædig"

Conn.Close
Set Conn = Nothing
Set fso = Nothing
%>
</BODY>
</HTML>

TAK TIL EAGLEEYE SOM LAVET SCRIPTET TIL AT STARTE MED! :-)
Avatar billede Laitings Nybegynder
11. november 2002 - 16:01 #1
Se eventuelt det oprindelige indlæg: http://www.eksperten.dk/spm/281323
Avatar billede eagleeye Praktikant
12. november 2002 - 09:08 #2
Prøv at ændre denne function:

function lookinfolder (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  'Response.Write objFolder.path & "<br>"
 
  call saveFiles (objFolder.Path)
 
  For each Folder in objFolder.SubFolders
    call lookinfolder (Folder.path)
  next
 
  Set objFolder = Nothing
end function


Til dettte:

function lookinfolder (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  Response.Write objFolder.path & "<br>"
 
  'call saveFiles (objFolder.Path)
 
  For each Folder in objFolder.SubFolders
    call lookinfolder (Folder.path)
  next
 
  Set objFolder = Nothing
end function



Det løser ikke problemmet, den vil ikke forsøge at gemme til databasen den vil bare udskrive de foldere den er løbet igennem.
Avatar billede Laitings Nybegynder
12. november 2002 - 11:12 #3
Det har jeg prøvet, men siden loader slet ikke. Det må jo næsten betyde at problemet ligger i lookinfolder funktionen, eller hvad!?
Avatar billede eagleeye Praktikant
12. november 2002 - 18:29 #4
Så prøv at rette den til:


function lookinfolder (foldernavn)
  Set objFolder = fso.getFolder( foldernavn )
  Response.Write objFolder.path & "<br>"
 
  'call saveFiles (objFolder.Path)
 
  'For each Folder in objFolder.SubFolders
  '  call lookinfolder (Folder.path)
  'next
 
  Set objFolder = Nothing
end function


Så skulle den bare udskrive den folder som den bliver kald med en gang.
Avatar billede Laitings Nybegynder
12. november 2002 - 19:13 #5
Der sker stadig ingenting når siden prøver at loader, måske er det fso.getFolder( foldernavn ) der ikke funker som den skal?

Jeg har prøvet at skrive som det eneste:

Set fso = CreateObject("Scripting.FileSystemObject")

Set objFolder = fso.getFolder( foldernavn )
Response.Write objFolder.path & "<br>"

...men der bliver ikke udskrevet noget!?
Avatar billede eagleeye Praktikant
12. november 2002 - 19:15 #6
Ja det kan være det er den som giver problemmer: Prøv sådan her:

function lookinfolder (foldernavn)
'  Set objFolder = fso.getFolder( foldernavn )
  Response.Write foldernavn & "<br>"
 
  'call saveFiles (objFolder.Path)
 
  'For each Folder in objFolder.SubFolders
  '  call lookinfolder (Folder.path)
  'next
 
'  Set objFolder = Nothing
end function

Så udskriver den bare den folder den er kaldt med.
Avatar billede eagleeye Praktikant
12. november 2002 - 19:21 #7
Hvilken Server køre du scriptet på. Hvis det er NT/2000/XP så tjek at Internet Guest Account / IUSR_MASHINENAME har rettgihed til List Folder Contents
Avatar billede Laitings Nybegynder
12. november 2002 - 20:33 #8
Det funkede med det første du skrev. Den skrev stien på folderen. Men den kolder hver gang jeg prøver noget med fso!
Avatar billede Laitings Nybegynder
13. november 2002 - 15:48 #9
nu funker det
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