Dienstplanung

  • Hallöchen,

    wie der Name schon sagt möchte ich gern, sofern das nicht unendlich kompliziert ist, ein Dienstplan bauen.

    Mir geht es gegen den Strich das meine Excel Einträge und Formeln gelöscht werden.

    Ich habe schon eigentlich fast alles gesperrt, aber die Eingabe ansich kann man nicht sperren.

    Wie dem auch sei :)

    Mir ist klar das ich die Einträge in einer Datei ablegen muss.

    Ich möchte das die Einträge einzeln klickbar sind (in jedem Feld) dort dann editieren und löschen als option angeboten wird.
    Klickt jemand auf editieren öffnet sich ein Fenster wo er die neue Schicht eintragen kann, löschen ist denke ich selbsterklärend :)

    Hat das schon einmal jemand gemacht? Ist mein Ansatz komplett daneben? ?(

    Vielen Dank

    Nachfolgend noch der Code den ich bis jetzt gemacht habe, den Buttons sind noch keine Funktion zugeteilt / nur Spass.

    • Offizieller Beitrag

    Es gibt zwar beim Listview den Style "$LVS_EDITLABELS", aber das klappt nicht bei den SubItems.
    Ich würde lieber mit einer zweiten GUI und einem Doppelklick arbeiten:

  • Hallo Oscar,

    das sieht schon ganz schön gut aus.

    wie kann ich die Daten in einer Datei ablegen, vorallem die geänderten.

    Macht es Sinn für jeden Tag eine Datei anzulegen oder für jeden Mitarbeiter eine und die dann Einlesen?

    Am liebsten würde ich noch Einstellungen zu den Schichten hinzufügen, dass nur die Schichten eingetragen werden können die auch in Einstellungen hinterlegt sind, dort ist dann auch die Stundenzahl hinterlegt, was er dann hinten addieren soll.

    Vielen Dank.

    • Offizieller Beitrag

    Macht es Sinn für jeden Tag eine Datei anzulegen oder für jeden Mitarbeiter eine und die dann Einlesen?

    Weder noch!
    Ich würde lieber alle Daten in eine große Datei packen. Das ist wesentlich effektiver beim laden und speichern, als wenn Du 365 Einzeldateien pro Mitarbeiter einlesen musst.
    Soweit es der Arbeitsspeicher des verwendeten PCs zulässt, alle Daten in ein Array laden und das Listview nur zur Anzeige/Eingabe verwenden.
    Suchen und sortieren der Daten geht mit einem Array viel schneller, als wenn man das Listview sortieren lässt oder Daten über die Listview-Suche sucht.
    Das macht sich bei nur wenigen Einträgen im Listview nicht so bemerkbar, aber wenn dort viele Daten stehen, dann führt das zu einem blockierenden Fenster.

  • Hallo Oscar,

    da hast du wohl Recht, ich wusste das es auf Arrays hinausläuft, ich habe das noch nicht verstanden.

    Kann ich nicht Excel dateien komplett einlesen und in der Datei Änderungen vornehmen ?(

    Könnte die Datei ja sicherlich mit einem Kennwort schützen und das im Autoit einlesen.

    EDIT:

    Ok Excel einlesen ist nicht weiter schwer, aber das macht doch kein Sinn und ist unendlich umständlich wenn ich jeden Eintrag einzeln einlese.

    Nachfolgend der Code

    2 Mal editiert, zuletzt von nwmbd (30. September 2016 um 10:17)

  • Mir geht es gegen den Strich das meine Excel Einträge und Formeln gelöscht werden.

    Du erstellst Formeln / Dienstpläne in Excel und es geht Dir gegen den Strich, das andere daran handtieren?
    Also ich kann Dir den Tip geben, das Du Deine Formeln und Eingaben durch ein Passwort schützen kannst und
    das Du alleine entscheiden kannst, wo Eingaben / Änderungen vorgenommen werden dürfen.

    Wenn dieses der einzige Grund ist, das Du es nun scripten möchtest, ist dieses Problem doch somit gelöst.
    Aber als Projekt ist es dennoch eine Sache, die mein Interesse geweckt hat. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    da hast du wohl Recht, ich wusste das es auf Arrays hinausläuft, ich habe das noch nicht verstanden.

    Ich finde das als Projekt interessant und würde so ein Programm erstellen (vorausgesetzt, dass das nicht bis "morgen" fertig sein muss).
    Viele der benötigten Funktionen habe ich sowieso schon (für andere Projekte) geschrieben.

    Beschreib mal, was da alles an Daten erfasst werden soll.
    Und ist es nicht sinnvoller gleich einen ganzen Monat im Listview darzustellen (Listview kann ja horizontal scrollen)?
    Willst Du zusätzlich die Wochenstunden wissen?
    Sollen dort nur die Stunden/Tag eingetragen sein oder stehen dort auch andere (nicht numerische) Daten (Krank/Urlaub/etc.) drin?
    Wie groß darf das Fenster sein (X-Y-Auflösung des Monitors)?
    Für wie viele Mitarbeiter soll das ausgelegt sein?

  • Hallo Oscar, hallo Alina,

    vielen Dank für eure Antworten.

    Das du dies nun gleich schreiben ist natürlich sehr nett von dir, was genau würde ich schreiben, es könnten ja dann alle zusätzliche Ideen einbringen, muss ja nicht nur auf mich zugeschnitten sein.

    Sollte es etwas geben wo ich dir helfen kann schreib es mir. Ich werde zu 100% Helfen wo ich kann!

    @Alina, das ist mir klar das man dies Sperren kann, aber das Eingabefeld selbst kann man schlecht sperren :) Auch dort ist / war Code hinterlegt.

    2 Mal editiert, zuletzt von nwmbd (30. September 2016 um 18:46)

  • Entschuldigung für den Doppelpost, ich finde das ist so übersichtlicher als wenn ich das an den anderen so ranklatsche.

    Es handelt sich um ca. 20 Mitarbeiter.

    Wünsche:

    - Unendlicher Plan Verschiebung des Datum nach rechts und links. ( die Stundenanzeige bleibt immer am Ende fest, egal wie man das Datum verschiebt)
    - Vielleicht noch ein Feld wo man zu einem bestimmten Datum springen kann
    - Jeder Mitarbeiter bekommt eine eigene Einstellung (Welche Schicht kann er, gibt es minimal / maximalstunden was soll passieren wenn diese unterschritten / überschritten sind)
    - E-Mailversendung der Pläne (jeweils nur der Mitarbeiter)
    - Auswahlmöglichkeit zum Drucken (einzelne Mitarbeiter / Monatsübersicht / Tagesplan / Wochenplan)
    - Hinterlegung von Hinweisen zu bestimmten Tagen (durch Admin)


    Grundsätzliche Einstellungen
    - Login
    - Adminkonto (kann alles) / Disponent (Kann nur Schichten buchen und Drucken)
    - Logbuch über alle Tätigkeiten
    - Maximalschichten am Stück
    - Eingabe der Schichten die es gibt
    - Eingabe der Zeiten der jeweiligen Schichten
    - Pausen zwischen den Schichten (11 Stunden dürfen nicht unterschritten werden, wenn doch Info (msgbox o.ä.)
    - Feiertage rot o.ä. / Samstag grau o.ä. / Sonntag dunkelgrau o.ä.

    Frage:

    Sofern möglich, Zusammenführung aller Pläne in einem Masterplan :)

    Beispiel:
    Plan A wird durch Disponent A geschrieben
    Plan B wird durch Disponent B geschrieben
    ...
    Admin will nun wissen ob nicht Mitarbeiter A von Plan A auf Plan B aushelfen kann.
    Ich habe absolut keine Ahnung ob das überhaupt geht und was das für ein Aufwand ist.

    Frage2:

    Beim Starten des Programmes wird dem Admin die Arbeit auf einer HDD / SQL Datenbank angeboten, je nach Auswahl legt das Programm die Standartdaten an und speichert diese in einer ini o.ä.


    Allgemein:

    Jetzt wo ich mir die Punkte (und da fallen mir sicher noch viel mehr ein) so ansehe, klingt das nach sehr sehr viel Arbeit, zumindest für mich als Autoit Neuling.


    Ich helfe wie schon erwähnt bei allem was nur irgendwie geht mit.

    Sollte der Aufwand nun so enorm sein das du dafür 6 Monate benötigst oder das so nebenbei gar nicht gehen, können wir das ganze auch einfach lassen.

    • Offizieller Beitrag

    Wow! Das ist jetzt doch mal sehr viel Arbeit!
    Ich hatte mir das bei der Deiner ursprünglichen Liste doch eine Nummer kleiner vorgestellt.
    Um das alles umzusetzen braucht man als Hobby-Programmierer (nebenbei noch ein Vollzeitjob) wohl so ca. ein Jahr.
    Ich werde wohl mal einiges davon austesten und schauen, wie lange das so dauert, aber ich denke, dass das doch etwas zu viel wird.

  • Hallo Oscar,

    das wäre die XXL Umsetzung, nicht alles ist zwingend notwendig.

    Es würde natürlich reichen wenn die Basics gehen, die Wünsche wäre natürliche ein Traum.

    Basics:

    Mitarbeiter anlegen können
    Kalender unendlich
    Stunden hinten fest verankert
    Samstag Sonntag Feiertage farblich
    Schichten anlegen
    Zeiten der Schichten
    Maximalschichten
    Ruhezeiten zwischen Schichten
    Mitarbeiter Schichten zuordnen welche sie können /dürfen

    EDIT:

    Sofern das nicht viel Arbeit macht würde ich gern mal wissen wielange man dafür ungefähr brauchen würde

    Einmal editiert, zuletzt von nwmbd (30. September 2016 um 20:09)

  • Je nach Umsetzungsgenauigkeit würde ich sagen für das was du weiter oben gelistet hast (Post 9): 50-100 Stunden
    Bei der Liste in Post 11 schätz ich 20+.
    Ich habe schon mehrmals etwas ähnliches geschrieben. Ich weiß nicht mehr genau was es war und kann grad nicht nachsehen. (Bin in der Uni am Laptop... In meiner Wohnung hab ich erst ab Donnerstag Internet :( )
    Das mit dem unendlichen Kalender wäre eine Herausforderung... In Java wüsst ich wie ichs recht umsetzte, in Autoit wäre das das komplizierteste.

    Es würde für mich den Rahmen des kostenlosen sprengen...

    Falls du dich selbst daran Versuchen möchtest hätte ich hier ein paar Links:
    Listviewsubitems färben: UDF von Bugfix
    Listview Items editieren: UDF von Kanashius
    Du kannst allgemein mal diese Liste durchgehen: UDFs Bugfix

    und auch sonst die UDFs bzw. Scripte Section mal druchsehen.

    Zum Drucken würd ich dir den Tipp gehen: Erstell HTML-Dateien und Druck sie über den Browser (Geht auch im Hintergrund). Ich meine mal eine UDF zum drucken gesehen zu haben, finde sie aber gerade nicht.

    Für die Datenablegung würde ich SQLite empfehlen, ist als UDF in AutoIt dabei und ist auch recht schnell, falls die Datenmenge bei dir recht groß wird. Ist z.B. sinnvoller, wenn du zu Daten springen willst, da dann nicht durch die ganzen Dateien/Arrays iteriert werden muss. SQLite nutzt fast die gleichen Befehle wie SQL, bzw. bis auf wenige Ausnahmen funktionieren dort alle SQL-Befehle.

    E-Mail: _INetSMTPMail
    Admin: Nach Passworteingabe die anderen Funktionen aktivieren, würd ich jetzt sagen. Am besten durch ein 2tes Fenster, welches dann geöffnet wird.

    Wochentag ermitteln: _DateDayOfWeek

    Feiertage wären noch ein Problem, denke ich, da die recht unterschiedlich sind. bei dem Planer den ich oben erwähnte waren die mit einbezogen. Die wurden damals aber manuell eingetragen. Da empfehlt es sich vielleicht wiederkehrende Daten einzutragen z.B. 03.10.****
    Dann wird einfach das **** durch @year ersetzt und dann geguckt, ob das ein Feiertag ist oder so. Oder einfach alle eintragen.

    Dort dürfte viel bei sein, was dir helfen könnte.

    MfG Kanashius