| |
VB.NET - Ein- und UmsteigerArbeitszeiten im Chart (Auswertungen) | | | Autor: ERBRU | Datum: 09.12.18 11:32 |
| https://picload.org/view/dclipaip/09-12-_2018_11-07-54.png.html
habe mir eine Arbeitszeit, Gleitzeit Anwendung erstellt
nun möchte ich die Daten in eine Auswertung DGV und (Chart) packen.
die Auswertung möchte ich im Chart pro Monat sehen also von Monat 01-18 bis Monat 12-18 usw.
pro Monat soll mir angezeigt werden:
Anwesend = in Tage
Entnahme Gleitzeit = in Tage
Frei = in Tage
TU = in Tage
Gleitzeit Summe pro Monat
es gibt eine Tabelle mit den Spalten
ID = Autowert
Tag = DateTime
Beginn = Uhrzeit
Ende = Uhrzeit
Pause = Integer
SollAZ = Integer
IstAZ = Integer
Gleitzeit = Integer
CumGleitzeit = kummulierte Gleitzeit
Bemerkung = Text (String)
wer kann helfen ? | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: ERBRU | Datum: 16.12.18 10:35 |
| Kann mir da einer bei der abfrage der daten helfen
35 mal gelesen aber keine Antworten.
Abfrage: ?? | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: Manfred X | Datum: 17.12.18 13:48 |
| Hallo!
Du bist der Meinung, eine kommentarlose Auflistung
von Tabellenspalten - auch ohne Angabe wie die Tabellenzeilen
definiert sind (pro Person, pro Logvorgang, pro Datum),
wäre hinreichend, um einen speziellen Chart abzuleiten? | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: ERBRU | Datum: 17.12.18 14:36 |
| Ok die Tabelle bezieht sich derzeit auf eine Person
Auf meine mehr sind derzeit nicht vorgesehen
Dazu müsste ich noch eine Tabelle führen
Oder habe ich dich falsch verstanden?
Also pro Datum?
Beitrag wurde zuletzt am 17.12.18 um 14:39:21 editiert. | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: Manfred X | Datum: 17.12.18 21:49 |
| Irgendwelche Erklärungen zu dem Inhalt dieser Spalten
scheinen nicht erforderlich zu sein ???
Einige spontane Rätsel:
Wieso sind in einem Gleitzeit-System der Beginn und
das Ende der Arbeitszeit an nahezu allen Werk-Tagen identisch?
Handelt es sich dabei um die Kernarbeitszeit?
Wieso sind an arbeitsfreien Daten keine DBNull-Werte für
die Arbeitszeiten eingetragen?
Wieso ist die IST-Az meist länger als die Soll-AZ?
Handelt es sich bei dem Inhalt Tabelle um Testdaten?
(So hohe Arbeitszeitüberhänge - 20000 min - sind gewöhnlich nicht
zugelassen?)
Gibt es keine Urlaubs- oder Krankentage?
Wo/Wie werden solche Fehltage verzeichnet und wie werden sie
bei der Arbeitszeitbestimmung verrechnet?
Was bedeutet "Entnahme GLZ"? Abfeiern von Zeit-Überhängen durch
freie Tage?
Können Zeitüberhänge auch als Überstunden ausgezahlt werden?
Beitrag wurde zuletzt am 17.12.18 um 21:53:09 editiert. | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: ERBRU | Datum: 18.12.18 08:50 |
| Einige spontane Erklärungen
Ja meine Kernarbeitszeit ist in der Regel
07:00 - 16:00 (mein schichtmodell 40845P)
Also soll 408 und soll 45 Minuten Pause.
Urlaubstage? Ja das Kürzel TU steht für tarifurlaub
Entnahme glz bedeutet ich entnehme von meinem Gleitzeit Konto
Ein paar freie Tage. Überstunden = MA den Posten habe ich noch gar nicht berücksichtigt
Danke für die Frage. Ok hoffe konnte deine fragen einigermaßen beantworten welchen Einfluss das nun auf ein paar Auswertungen hat habe ich noch nicht verstanden.
Und Nu? | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: Manfred X | Datum: 18.12.18 09:25 |
| In einem Gleitzeitmodell gibt es gewöhnlich ein
Zeitintervall zum Eingleiten (z.B. 6:00 bis 9:00 Uhr)
und ein Zeitintervall zum Ausgleiten (z.B. 15:00 bis 18:00 Uhr).
Die betrieblich vorgegebene Kernarbeitszeit ist in diesem Beispiel
der Zeitraum von 9:00 bis 15:00 Uhr.
Die Dauer des Intervall der Kernarbeitszeit beträgt meist etwa
fünf Stunden (netto, ohne Pausen). Insofern kann ich
Deine diesbezüglichen Angaben nicht einordnen (Kernzeit von 7:00
bis 16:00 Uhr ???). Das gilt - wie erwähnt - auch für die hohen Werte,
die im Gleitzeitkonto eingetragen sind.
======================================================================
Realisiert werden solche Charts durch eine Datenbindung des MS-Chart-Control
an die entsprechende Tabellen-Spalte oder an eine aufbereitende LINQ-Abfrage,
wie bereits vor einiger Zeit an Beispielen in Fortg.-Forum demonstriert. | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: ERBRU | Datum: 18.12.18 13:10 |
| Hallo Manfred x
Du hast natürlich Recht mit den Zeitintervallen
Doch mein zeitintervall hat sich über einige Jahre
So eingeschlichen und nehme mir ab und an 1 Woche extra.
Und hast recht mit den abfragen, brauche da doch noch ein wenig Nachhilfe
Man kann die nicht 1:1 übernehmen.
Bitte und Danke
Muss ja die möglichen Überstunden = MA anders aufbereiten?
Also bist du noch dabei? | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: Manfred X | Datum: 18.12.18 20:34 |
| Wie oft soll man Dir diesen Kram eigentlich
noch demonstrieren?
Option Infer On
Public Class frmLinqGroup
Dim dt As New DataTable
Dim cht As New System.Windows.Forms.DataVisualization.Charting.Chart With
{.Parent = Me, .Size = New Size(400, 400)}
Private Sub frmLinqGroup_Load(sender As Object,
e As EventArgs) Handles MyBase.Load
'Testdaten
dt.Columns.Add("Datum", GetType(Date))
dt.Columns.Add("Anwesend", GetType(Integer))
Dim basedate As Date = CDate("2.5.2016")
Dim minutes() As Integer = {320, 410, 490}
Dim rndm As New Random(12345)
For i As Integer = 0 To 1000
Dim dtx As Date = basedate.AddDays(i)
Dim min As Integer = minutes(rndm.Next(0, 3))
If dtx.DayOfWeek.Equals(DayOfWeek.Saturday) OrElse
dtx.DayOfWeek.Equals(DayOfWeek.Sunday) Then min = 0
dt.Rows.Add(dtx, min)
Next i
'Gruppieren der Anwesenheitstage pro Monat
Dim q = From row As DataRow In dt.AsEnumerable
Let mnt As String = DateAndTime.MonthName(DirectCast(row( _
"Datum"), Date).Month)
Let yr As Integer = DirectCast(row("Datum"), Date).Year
Let anw As Boolean = DirectCast(row("Anwesend"), Integer) > 0
Where anw
Group By yr, mnt Into Group, Count()
'optional: Aufbereitung der Abfrage als Tabelle
Dim dtb As New DataTable
dtb.Columns.Add("year-mnt", GetType(String))
dtb.Columns.Add("count", GetType(Integer))
For Each at In q
With at
'anonymer Typ in Datatable-Zeile, Jahr-Monat zusammenbauen
dtb.Rows.Add(.yr.ToString & "-" & .mnt, .Count)
End With
Next at
'Einrichtung des Chart
With cht
.DataSource = dtb
.ChartAreas.Add("Base")
.ChartAreas("Base").AxisX.Interval = 1
.DataSource = dtb
.Series.Add("Anw")
With .Series("Anw")
.XValueMember = "year-mnt"
.YValueMembers = "Count"
.ChartArea = "Base"
.ChartType = DataVisualization.Charting.SeriesChartType.Bar
End With
.Titles.Add("Anwesenheitstage pro Monat")
End With
End Sub
End Class | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: ERBRU | Datum: 18.12.18 21:46 |
| Du hast ja Recht ich arbeite dran
Danke melde mich dann auch wie es dann ausschaut | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: ERBRU | Datum: 14.01.19 20:05 |
| Hallo Manfred X,
ich hatte ja angedeutet das ich mich noch mal Melde
dein Chart sieht nun so aus:
https://picload.org/view/dciodrig/14-01-_2019_19-31-39.png.html
Dim dt As DataTable = AblageDB.Arbeitszeiten
Dim year_selected As Integer = CInt(cboYear.SelectedItem)
'Häufigkeitstabelle aus Datensätzen erstellen
Dim dc As New DataTable
With dc.Columns
.Add("Month", GetType(String))
.Add("Freq. done", GetType(Integer))
.Add("Freq. todo", GetType(Integer))
End With
dc.PrimaryKey = {dc.Columns("Month")}
For i As Integer = 0 To dt.Rows.Count - 1
Dim dr As DataRow = dt.Rows(i)
If DirectCast(dr("Tag"), Date).Year = year_selected Then
'sortierbarer Jahr-Monat-String
Dim ym As String = _
dr.Field(Of Date)("Tag").Year.ToString & "-" & _
dr.Field(Of Date)("Tag").Month.ToString("00")
Dim el As String = dr.Field(Of String)("Bemerkung")
'Datensatzsuche nach Monat in Häufigkeitstabelle
'gemäß Primärschlüssel
Dim dcr As DataRow = dc.Rows.Find({ym})
If dcr Is Nothing Then
dcr = dc.Rows.Add({ym, 0, 0})
End If
Dim fcol As String
If el = "Anwesend" Then
fcol = dc.Columns(1).ColumnName
Else
fcol = dc.Columns(2).ColumnName
End If
'Häufigkeit bestimmen
dcr(fcol) = CInt(dcr(fcol)) + 1
End If
Next i
Dim bs As New BindingSource With {.DataSource = dc}
bs.Sort = "Month ASC"
'Chart für Häufigkeiten erstellen
End With mein aktueller Stand gefällt mir noch nicht aber so ähnlch soll es mal aussehen:
https://picload.org/view/dciodrir/14-01-_2019_19-22-41.png.html
wie kann das mit obigen Code erreicht werden?
meinen Code kann ich aufgrund der "größe" hier nicht ablegen | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: ERBRU | Datum: 15.01.19 06:42 |
| Guten Morgen,
hier noch der Code wie ich die DGV fülle ich möchte ja wie im vorigen Post erwähnt das "Jahr"
Private Sub An_Abwesenheit_User_fill()
dgv_AZ_GLZ_Auswertung.Rows.Clear()
'col_SB_Stoerdauer_Maschine
Dim Abfrage = From Eintrag In AblageDB.Arbeitszeiten
Where Eintrag.RowState <> DataRowState.Deleted
Order By Eintrag.User
Group By Art = Eintrag.UserID Into UGruppe = Group
Dim User As String
Dim gleitzeit As Double
Dim D_von, D_bis As Date
Dim ue As ArbeitszeitenRow
For Each Reihe In Abfrage
ue = Reihe.UGruppe.First
D_von = (From drv In Reihe.UGruppe Select drv.Tag).Min
D_bis = (From drv In Reihe.UGruppe Select drv.Tag).Max
Dim rowUser = AblageDB.Arbeitszeiten.First(Function(f) f.ID = _
ue.UserID)
If Not rowUser Is Nothing Then
User = rowUser.User
gleitzeit = Reihe.UGruppe.Sum(Function(f) f.Gleitzeit)
dgv_AZ_GLZ_Auswertung.Rows.Add({ue.UserID, ue.User, _
Reihe.UGruppe.Count, gleitzeit, D_von, D_bis})
End If
Next
End Sub | |
Re: Arbeitszeiten im Chart (Auswertungen) | | | Autor: ERBRU | Datum: 16.01.19 12:59 |
| Hallo Forum,
irgendwie komm ich nicht ganz dahin, was ich möchte die Abfrage macht mir sorgen.
Dim Abfrage = _
From row In Me.AblageDB.Arbeitszeiten.AsEnumerable _
Let Jahr = CInt(row.Field(Of Date)("Tag").ToString("yyyy")) _
Order By row.Tag _
Group row By Jahr Into Group _
Select Jahr, Group, _
Gleitzeitminuten = Group.Sum(Function(row) row.Gleitzeit), _
Arbeitszeitminuten = Group.Sum(Function(row) row.IstAZ) damit habe ich nun das Jahr wie gewünscht aber bin noch unglücklich!
https://picload.org/view/dcioclig/dgv_jahr.png.html
ich möchte ja das Jahr in der DGV auswählen und dann ein Monatschart der Anwesenheitsarten erstellen.
bin für jede Hilfe Dankbar. Eventuell hat mich nun jemand verstanden was ich erreichen möchte. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevDTA 3.0 Pro
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|