sorry war in der falschen Rubrik
mit dieser Funktion werte ich Daten pro Woche aus, nun soll auch der Monat möglich sein?
die Funktion stammt ursprünglich von Manfred X
beim Monat habe ich fehlendes Wissen den richtig zu erwischen.
es wird zum Schluss auch ein Chart gezeichnet
Private Function GetFreq1(ByVal week As Integer, _
year As Integer) As DataTable
'Dim year As Integer = cbx_Jahr.SelectedValue
Dim dt As DataTable = ABLAGEPUAM.Vorgang
Dim cal As Globalization.Calendar = _
Globalization.CultureInfo.CurrentCulture.Calendar
Dim q = From row As DataRow In dt
Let wk As Integer = _
cal.GetWeekOfYear(row.Field(Of Date)("angelegtam"), _
Globalization.CalendarWeekRule.FirstFourDayWeek, _
DayOfWeek.Monday)
Where year = row.Field(Of Date)("angelegtam").Year _
AndAlso wk = week _
AndAlso row.Field(Of Integer)("IDAblage") = row.Field(Of _
Integer)("IDAblage")
Group By art = row.Field(Of String)("Ablagename") Into Count()
Dim df As New DataTable
df.Columns.Add("Ablagename") : df.Columns.Add("Count", GetType( _
Integer)) : df.Columns.Add("Cum", GetType(Double)) _
: df.Columns.Add("CumPerc", GetType( _
Double))
For Each el In q
df.Rows.Add(el.art, el.Count)
Next el
Dim bs As New BindingSource With {.DataSource = df}
bs.Sort = "Count DESC"
Dim sm As Integer = 0
For i As Integer = 0 To bs.Count - 1
Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
'Häufigkeiten kumulieren
sm += CInt(row("Count"))
row("cum") = sm
Next i
'Kumulierte Werte in Prozentanteile umrechnen
For i As Integer = 0 To bs.Count - 1
Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
row("CumPerc") = Math.Round(CInt(row("Cum")) / sm * 100, 2)
Next i
'Daten in der DGV anzeigen
DGV1.DataSource = bs
With DGV1
.Columns(0).AutoSizeMode = DataGridViewAutoSizeColumnsMode.Fill
.Columns(1).Width = 60
End With
With DGV1
.EnableHeadersVisualStyles = False
.ColumnHeadersDefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleCenter
.ColumnHeadersDefaultCellStyle.BackColor = Color.DimGray
.ColumnHeadersDefaultCellStyle.ForeColor = Color.FloralWhite
.BackgroundColor = Color.LightGray
.Font = New Font("Consolas;", 9.5, FontStyle.Regular)
.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
.ColumnHeadersHeight = 38
.ColumnHeadersHeightSizeMode = _
DataGridViewColumnHeadersHeightSizeMode.DisableResizing
.RowHeadersVisible = False
.GridColor = System.Drawing.Color.DarkGray
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.DefaultCellStyle.WrapMode = DataGridViewTriState.True
.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
End With
With DGV1.DefaultCellStyle
.SelectionForeColor = Color.OldLace
.SelectionBackColor = Color.Olive
.BackColor = Color.LightGray
.ForeColor = Color.Black
.Font = New Font("Consolas;", 8.0, FontStyle.Regular)
End With
With DGV1.AlternatingRowsDefaultCellStyle
.SelectionForeColor = Color.OldLace
.SelectionBackColor = Color.Olive
.BackColor = Color.WhiteSmoke
.ForeColor = Color.Black
.Font = New Font("Consolas;", 8.0, FontStyle.Regular)
End With
'Ende Auswertung
'Chart anzeigen
End Function |