16. februar 2004 - 14:43Der er
24 kommentarer og 1 løsning
filliste til database
Jeg ønsker at indlæse alle filnavne, fra en cd ind i en database.
Hvordan gør jeg det nemmest ?
Jeg har tænkt på at lave lykker inden i hinanden, men det kan jo hurtigt blive en kæmpe mudderkode, så hvis nogen har en god ide, så vil jeg gerne høre den.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Loop over alle filnavne - for hvert filnavn, tilføjer du til databasen...
Går ud fra at du selv kan finde ud af at smide dem i en database. Måden du finder ALLE filnavne på er fx. ved en rekursiv funktion, der kalder sig selv:
Dim fso As Scripting.FileSystemObject Set fso = New Scripting.FileSystemObject DeleteFile ".txt", fso.GetFolder("c:\temp")
Private Sub FindFile(pattern As String, folder As Scripting.folder) Dim tmpFolder As Scripting.folder Dim tmpFile As Scripting.File If folder.SubFolders.Count > 0 Then For Each tmpFolder In folder.SubFolders FindFile pattern, tmpFolder Next End If If folder.Files.Count > 0 Then For Each tmpFile In folder.Files If lcase(right(tmpFile.Name,4)) = lcase(pattern) Then 'TILFØJ tmpfile.Name TIL DATABASE End If Next End If End Sub
Du kan jo omskrive, hvis du ikke behøver et pattern.
Sub iterateFolder(p_strFolder As String) Dim objFSO As FileSystemObject Dim objFolder As Folder Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(p_strFolder)
For Each subFolder In objFolder.SubFolders iterateFolder (subFolder.Path) Next
If (Not IsEmpty(objFolder.Files)) Then For Each objFile In objFolder.Files ' INSERT INTO DATABASE Next End If End Sub
denne kalder du så med:
Call iterateFolder("c:\en folder")
Husk at lave en reference til "Microsoft Scripting Runtime" i dit projekt
Jeg omskriver lige min løsning, så den er til at bruge via Copy-Paste
Dim fso As Scripting.FileSystemObject Set fso = New Scripting.FileSystemObject PutFilesInDatabase fso.GetFolder("c:\temp")
Private Sub PutFilesInDatabase(folder As Scripting.folder) Dim tmpFolder As Scripting.folder Dim tmpFile As Scripting.File If folder.SubFolders.Count > 0 Then For Each tmpFolder In folder.SubFolders PutFilesInDatabase tmpFolder '< BEMÆRK - funktionen kalder sig selv. Det er det smarte :o) Next End If If folder.Files.Count > 0 Then For Each tmpFile In folder.Files 'TILFØJ tmpfile.Name TIL DATABASE Next End If End Sub
martin_moth >> det er helt i orden. jeg var jo også 10 minutter senere end dig ... jeg får tage "straffen" for at ikke refreshe inden jeg poster et svar :o]
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.