Hallo!
Vielleicht irgend so was ....
Projektverweis (Net) auf "System.Windows.Forms.Datavisualization" ist erforderlich.
Public Class frmFileHourCounter
'Das Chart-Control
Dim cht As New System.Windows.Forms.DataVisualization.Charting.Chart With
{.Parent = Me, .Size = New Size(600, 500)}
Private Sub frmFileHourCounter_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
Me.Size = New Size(610, 520)
Dim folder As String = "C:\output" 'Ordner mit den Dateien
Dim criticalday As Date = New Date(2015, 5, 25) 'Erstell-Datum
'Stunden-Verteilung der Datei-Erstellzeiten am kritischen Tag
Dim dt As DataTable = GetFileHourCounter(folder, criticalday)
'Einrichten des Chart
With cht
.ChartAreas.Add("Base")
.Series.Add("MyChart")
With .Series("MyChart")
.ChartArea = "Base"
.ChartType = _
DataVisualization.Charting.SeriesChartType.Line
.Color = Color.Blue
.BorderWidth = 3
.XValueMember = dt.Columns(0).ColumnName
.YValueMembers = dt.Columns(1).ColumnName
End With
With .ChartAreas("Base").AxisX
.Interval = 1
.Maximum = 24
.Minimum = 1
.LabelStyle.Angle = 45
.Title = "Erstellzeit der Dateien in " & folder & _
" am " & criticalday.Date.ToString("dd.MM.yyyy")
.TitleFont = New Font("Arial", 12, FontStyle.Bold)
End With
With .ChartAreas("Base").AxisY
.Title = "Anzahl der Dateien"
.IntervalType = _
DataVisualization.Charting.DateTimeIntervalType.Auto
End With
.DataSource = dt 'Datenbindung herstellen
End With
End Sub
Public Function GetFileHourCounter(ByVal folder As String, _
ByVal criticalday As Date, _
Optional ByVal IncludeSubDirs As Boolean = False, _
Optional ByVal searchpattern As String = "*.*") As DataTable
If Not IO.Directory.Exists(folder) Then Return Nothing
Dim so As IO.SearchOption = IO.SearchOption.TopDirectoryOnly
If IncludeSubDirs Then so = IO.SearchOption.AllDirectories
Dim dt As New DataTable
'Datatable einrichten (pro Zeile eine Stunde)
dt.Columns.Add("Uhrzeit")
dt.Columns.Add("Datei Anzahl", GetType(Integer))
For i As Integer = 0 To 23
dt.Rows.Add(i.ToString("00") & " bis " & _
(i + 1).ToString("00") & " Uhr", 0)
Next i
Dim ct As Date, hr, c As Integer
For Each file As String In IO.Directory.GetFiles _
(folder, searchpattern, so)
ct = New IO.FileInfo(file).CreationTime
If ct.Date = criticalday.Date Then
'Stunde ermitteln und eintragen
hr = ct.Hour
c = CInt(dt.Rows(hr)("Datei Anzahl"))
c += 1
dt.Rows(hr)("Datei Anzahl") = c
End If
Next file
Return dt
End Function
End Class
Beitrag wurde zuletzt am 15.09.17 um 22:16:02 editiert. |