Berechnung Arbeitszeit?

  • VB.NET

Es gibt 51 Antworten in diesem Thema. Der letzte Beitrag () ist von MR_NMS.

    Das kommt jetzt drauf an. An sich ist das, ich glaub im Parent-Child-View zu sehen: Schau mal bei EdRs VVV rein.
    Du ziehst also aus dem Datenquellenfenster nicht die SchichtenTabelle als DGV auf's Form, sondern wenn Du die MitarbeiterTabelle anklickst, kommen da die mitarbeiterabhängigen Schichten:

    Ich mach es allerdings anders. Ich erstelle für alle MA gleichzeitig in einem DGV einen Plan. Da kann ich besser schauen, ob genügend Personal da ist und weil bei mir die Mitarbeiter bestimmte Funktionen haben und manche Anwesenheitspflicht haben.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    OK!
    Das macht auch Sinn!
    Wie hast du den die Beziehung zwischen Schicht und Mitarbeiter gemacht?



    Was mache ich falsch?
    Es wird nur der letzte Mitarbeiter eingefügt???


    VB.NET-Quellcode

    1. For Each Mitarbeiter In UmsatzDS.MitarbeiterDT
    2. With DataGridView1
    3. For i = 0 To 3
    4. If Mitarbeiter.ID >= 1 Then
    5. .Rows(DataGridView1.RowCount - 1).Cells(0).Value = Mitarbeiter.Name
    6. .Rows(DataGridView1.RowCount - 1).Cells(1).Value = Mitarbeiter.ID
    7. End If
    8. Next i
    9. End With
    10. Next


    Geht einfach ohne Schleife und mit

    VB.NET-Quellcode

    1. ​ .Rows.Add(Mitarbeiter.Name)


    Beiträge zusammengefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „MR_NMS“ ()

    Neu

    Guten Morgen!
    Ich arbeite mit

    VB.NET-Quellcode

    1. Databinding
    , komme dann doch an Grenzen wo ich nicht weiterkomme!
    Dann versuche ich andere Weg und komme dann manchmal wieder zurück auf den richtigen Weg :)

    Aktuell habe ich das Problem, das ich ein DgV mit 2 Datatable füllen möchte.
    MitarbeiterDT und SchichtenDT, es besteht eine Beziehung zwischen den Beiden FK_MitarbeiterDT_SchichtenDT.
    Wie bekomme ich es hin, das nun das Dgv die Mitarbeiter die vorhanden sind ausgibt und ich die jeweiligen Schichten eintragen kann?

    Zur Zeit ist das Dgv an FK_MitarbeiterDT_SchichtenDT gebunden
    Bilder
    • Beziehung.JPG

      160,2 kB, 1.440×1.440, 17 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MR_NMS“ ()

    Neu

    Ein DGV kann immer nur 1 (Haupt)Datenquelle haben. Einer ComboBox-Spalte kann man noch eine eigene geben. Aber das ist m.E. bei den VVVs bei Joining-View dabei. Wenn Du aus Post#41, Bild#1 die markierte Tabelle auf Dein Form als DGV ziehst, erhältst Du im DGV all die Schichten, die dem aktuell gewählten Mitarbeiter zugeordnet sind. Aber woher weiß das Programm, wer der aktuell gewählte Mitarbeiter ist? Indem Du ein 2. DGV auf Dein Form ziehst, welches die Mitarbeiter anzeigt. Das schaffst Du, indem Du aus dem Datenquellenfenster eben die entsprechende DataTable als DGV auf's Form ziehst (Post#41, Bild#1, 2. Zeile (Mitarbeiter).
    Aber das ist alles in den view Views zu erfahren. Vielleicht habe ich Dich aber auch falsch verstanden. Dann brauch ich wohl eine Umformilierung des Problems von Dir.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Neu

    Hi!
    Die Anzeige der Schichten des jeweiligen Mitarbeiter bekomme ich hin.
    In dem Bild .Aktuell ist zu sehen, wie es angezeigt wird!
    Hinter dem gewählten Mitarbeiter sind alle jemals eingegebenen Schichten.
    Jetzt könnte man dort die Schichten auch eintragen!

    Jetzt möchte ich aber, das der Benutzer ein DgV hat wo alle Mitarbeiter zu sehen sind und hinter dem jeweiligen Mitarbeiter die Schicht eingeben kann!
    Bei dieser Ansicht kann der Benutzer alle Mitarbeiter auf einmal sehen, die aktuell zu bearbeitende Schicht und hat so einen besseren überblick!
    Bilder
    • Aktuell.JPG

      89,2 kB, 1.926×698, 16 mal angesehen
    • Ansicht.JPG

      303,11 kB, 2.950×680, 13 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MR_NMS“ ()

    Neu

    Nun, das ist eine gute Frage, auch an unsere tDS-Experten wie @ErfinderDesRades und @VB1963. Ich habe das DGV komplett per Code befüllt. Also: Mitarbeiter durchgehen, sich die Schichten für einen bestimmten Tag aus der Schichtentabelle raussuchen, ins DGV reinschreiben (Ausschnitt aus dem Datenmodell anbei). Und beim Speichern alles wieder aus dem DGV rauszerren.* Mit einer Zwischentabelle und DataBinding hier komplett zu arbeiten habe ich gedanklich versucht, habe ich aber nach wenigen Minuten abgebrochen, weil m.E. nicht umsetzbar. Aber da wissen unsere Experten bestimmt mehr.

    * gelogen: Bei jeden CellEndEdit speichere ich die aktuell eingetragene Tagesschicht des gewählten Mitarbeiters ab
    Bilder
    • PartialModel.png

      3,88 kB, 459×131, 10 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Neu

    Das war ja auch meine Idee!
    Deswegen der Anfang:

    VB.NET-Quellcode

    1. For Each Mitarbeiter In UmsatzDS.MitarbeiterDT
    2. With DataGridView1
    3. If Mitarbeiter.ID >= 1 Then
    4. .Rows.Add((Mitarbeiter.ID), Mitarbeiter.Name)
    5. End If
    6. End With
    7. Next


    Da ich sonst keinen anderen Plan zum befüllen hatte!

    Neu

    Ah, ok. Aber was hat es mit der IF-Bedingung auf sich? Ist der Mitarbeiter mit der ID Null ein besonderer? Und nur zur Sicherheit: Hast Du AutoIncrementSeed und AutoIncrementStep abgeändert, sodass positive IDs entstehen? Und wozu fügst Du dem DGV IDs hinzu? Die sollten in nem DGV nirgends zu sehen sein. Zur späteren Identifikation? Ist die ID-Spalte im DGV unsichtbar?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Neu

    ich kann nicht alle Posts hier vollständig verfolgen. Generell muss man sagen, dass Kalender-Ansichten überaus schwierig sind, und dasses da keine Patentrezepte gibt.
    Hängt auch mit den vielen Möglichkeiten zusammen, wie KalenderAnsichten gestaltet sein können (Schichtplan ist eine davon).
    Bei vielen Ansichts-Konzepten kann man nichtmal mehr Databinding ansetzen, zB wenn die Ansicht verlangt, dass die Tabelle inne Breite erweiterbar sein soll (Zeitachse horizontal statt von oben nach unten).

    Wie dem auch sei - für das Bild aus post#46 gäbe es eine Möglichkeit mit Databinding.
    Nämlich man müsste eine DataTable schaffen, die halt so aufgebaut ist wie im Bild. An Spalten wäre genau das anzubringen, was das Bild zeigt:
    WocheID | PersonID | MontagVon | MontagBis | MontagGes | DienstagVon | DienstagBis | DienstagGes | MittwochVon | MittwochBis | MittwochGes | DonnerstagVon | DonnerstagBis | DonnerstagGes | ...

    Man könnte diese Tabelle "MitarbeiterWoche" nennen, denn jeder Datensatz beschreibt die ganze Arbeitswoche eines Mitarbeiters.

    Dann brauchst du pro Woche pro Mitarbeiter jeweils einen solchen Datensatz - klassische m:n-Relation.

    Vonne Anzeige her wäre das recht gut zu handeln, auch mit Databinding, aber die Verarbeitung der Daten dürfte recht unlustig werden. Man will ja nicht mit Wochen hantieren, sondern mit Tagesarbeitszeiten, oder sogar einzelnen Einsätzen.
    Wie gesagt: Endlos viel Möglichkeiten möglich, und jede hat gravierende Vorteile und ebenso auch gravierende Nachteile.

    Neu

    Ok!
    Danke für die Info und ich werde es so einmal umsetzen.
    Ich denke mal, das ich eine Combobox im DGV nutzen werde, die alle Mitarbeiter auflistet um die jeweilige Schicht zu planen.


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MR_NMS“ ()