Avatar billede Laitings Nybegynder
10. oktober 2005 - 21:42 Der er 2 kommentarer og
1 løsning

lille ændring i database script

Jeg har følgende script som løber biblioteker igennem på min harddisk og tilføjer navne på billeder samt navnene på bibliotekne i en database . Problemet er bare at det tilføjer også billeder der allerede eksisterer i databasen. Hvordan undgår jeg det?

Håber på hjælp!

-M

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)
    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
Avatar billede softspot Forsker
10. oktober 2005 - 21:59 #1
Umiddelbart ville jeg foreslå at du lægger et opslag ind foran din insert som checker om filnavnet (i den pågældende folder) allerede eksisterer og så kun hvis den ikke gør, indsætte filnavnet...
Avatar billede Laitings Nybegynder
10. oktober 2005 - 22:21 #2
Så blev den løst. Den endelige kode ser således ud:

<%
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)
        searchSQL = "SELECT COUNT (*) as et FROM billeder WHERE billedenavn Like '" & file.name &"'"
        rs4 = Conn.Execute(searchSQL)
        if rs4("et") = "0" then
              SQL = "INSERT INTO billeder (katID, billedenavn) VALUES (" & catID & ", '" & file.name & "')"
              Conn.Execute (SQL)
        end if
        else
    end if
  next
  Set objFolder = Nothing
  Set objFiles = Nothing
  Set et = 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
%>
Avatar billede softspot Forsker
10. oktober 2005 - 22:25 #3
Typisk giver man point til dem som kommer med en løsning og ikke til sig selv, men hey!, det var jo dig der satte koden sammen og testede og alt muligt... ;)
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