Blog Schröder

Sammlung von Codeschnipseln zu Programmierproblemen.
Daten aus fremden Quellen unterliegen deren Rechten.
Siehe auch: Disclaimer auf www.computer-schroeder.de

Montag, 15. Oktober 2007

Access: Dateisystem

Das Beispiel:
Zugriff auf Ordner mit Vorlagen

In Modul (erlaubt zentralen Zugriff):
Public tmplateList 'enthält die Namen der Dateien

Bei Startform (einmalig, da hier der aufwendige Zugriff):
Dim filesys
Dim tmplatePath
Set filesys = CreateObject("Scripting.FileSystemObject")
Set tmplatePath = filesys.GetFolder(_
Application.CurrentProject.Path & templatePath & "\")
Set tmplateList = tmplatePath.files 'enthält die Liste

Eintragen in Combobox (im Combo-Form):
Dim f 'Vollständiger Name mit Pfad
Dim n 'nur der Dateiname ohnePfad und Endung
For Each f In tmplateList
If Right(f, 4) = ".dot" Then
n = Left(f, Len(f) - 4)
n = Right(n, Len(n) - InStrRev(n, "\"))
kmbDateilist.AddItem (f & ";" & n)
End If
Next

Labels: , , , , , ,

Freitag, 24. August 2007

Dateisystem

Private Sub deleteOldLogFiles(ByVal logFileStorageDays As Integer)
'alle LogfileInfos holen
Dim logFiles() As IO.FileInfo
Try
'Zugriff auf das Verzeichnis
Dim LogFile As New IO.FileInfo(myLogFilePath & myLogFileName)
logFiles = LogFile.Directory.GetFiles("*" & myLogFileExtension, IO.SearchOption.TopDirectoryOnly)
Catch ex As Exception
MsgBox ("Path not found." & ex.Message)
Exit Sub
End Try

Dim aktCount As Integer = logFiles.Length
Dim x As Integer 'Hilfsindex
Dim fN As IO.FileInfo 'zu löschende Datei
'suche, solange die existierende Anzahl größer als erlaubt ist
Do While aktCount > logFileStorageDays
fN = Nothing
Dim oldest As DateTime = Date.MaxValue
For Each i As IO.FileInfo In logFiles
If Not i Is Nothing Then
If i.CreationTime < oldest Then
fN = i 'ist derzeit die älteste
oldest = i.CreationTime
End If
End If
Next
'If fN Is Nothing Then Exit Sub 'sollte nicht passieren

fN.Delete() 'lösche die älteste Datei
aktCount -= 1
For Each i As IO.FileInfo In logFiles
If Not i Is Nothing Then
If fN.CreationTime = i.CreationTime Then
x = Array.IndexOf(logFiles, fN)
logFiles(x) = Nothing 'auch aus dem Array nehmen
Exit For
End If
End If
Next
Loop
End Sub

Labels: , , , ,