10. oktober 2005 - 21:42Der 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
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...
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 %>
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... ;)
Synes godt om
Ny brugerNybegynder
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.