vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Arbeitszeiten 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 ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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: ??
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel