Tag/Monats/Jahres - Liste erstellen und generelles

  • Hi @ all

    Ich möchte mich hiermit erst mal vorstellen, Bin der DarkIF aus München und Taxdisponent in unserer schönen Stadt :)

    Ich hab vor gut 3 Jahren mal am Rande mit AutoIT angebandelt, bin aber damals aufgrund von chronischem Zeitmangel nicht dazu gekommen mich intensiver damit zu beschäftigen,
    um mich ein wenig mehr damit auseinander zu setzen hab ich mir ein kleines Projekt vorgenommen, einen "Schichtplan - Generator" für unsere Arbeit.

    Ich wollte jetzt erstmal damit beginnen, quasi die gesamten Daten des aktuellen Jahres aufzulisten, sollte in etwa so aussehen :

    Spoiler anzeigen


    01.01.2012
    02.01.2012
    03.01.2012
    -
    -
    -
    31.12.2012

    anschließend möchte ich quasi jedem Monat eine eigen File anlegen wo auf jeden Monat die Tage ausgerechnet sind.
    also in etwa so :

    Spoiler anzeigen


    Januar.txt
    01.01.2012
    02.01.2012
    -
    31.01.2012

    Februar.txt
    01.02.2012
    02.02.2012
    -
    28.02.2012

    usw.

    Ich bin bis gerade eben davon ausgegangen das ich die über die @Makros machen könnte, schaffe es allerdings nicht rauszufinden wie ich das anstelle. Im Moment bin ich soweit das er mir das aktuelle Datum ausgibt, jetzt bräuchte ich wenn möglich nen kleinen DenkAnstoss in die richtige Richtung wie ich das realisieren könnte.

    Derzeitiger Code ist zwar wie gesagt nicht sehr weit aber falls einsicht gewünscht :

    Spoiler anzeigen
    [autoit]


    Global $wErtA = @MDAY & "." & @MON & "." & @YEAR

    [/autoit] [autoit][/autoit] [autoit]

    _YearCreate ()

    [/autoit] [autoit][/autoit] [autoit]

    Func _YearCreate ()

    MsgBox(1, "Derzeitige Ausgabe", $wErtA)
    FileWriteLine(".\Year.txt", $wErtA)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]


    p.S. ich hab ein kleines Problemchen mit Scite, der gibt mir die Farben ein wenig komisch, z.B. @Mon wird bei mir in komischen Braunton angezeigt, statt dem üblichen pink wie hier im Forum . Weiss da evtl. jemand abhilfe ?


    Für eure Antworten jetzt schon mal Danke.

    Gruß DarkIF

    • Offizieller Beitrag

    p.S. ich hab ein kleines Problemchen mit Scite, der gibt mir die Farben ein wenig komisch, z.B. @Mon wird bei mir in komischen Braunton angezeigt, statt dem üblichen pink wie hier im Forum . Weiss da evtl. jemand abhilfe ?

    • Öffne ein AutoIt-Skript in Scite
    • Drücke den Hotkey "STRG+1" (öffnet das SciTE-Konfig-Tool)
    • Wähle TAB "Color Settings", Button "New Scheme"
    • Wähle "OldSciTE4AutoIt3"

    Erklär mal etwas genauer:
    Welche Daten liegen in welcher Form vor?
    Wie sollen diese erfasst/gespeichert werden?

  • • Öffne ein AutoIt-Skript in Scite
    • Drücke den Hotkey "STRG+1" (öffnet das SciTE-Konfig-Tool)
    • Wähle TAB "Color Settings", Button "New Scheme"
    • Wähle "OldSciTE4AutoIt3"

    Das hatt geklappt danke vielmals.

    Also um deine weiteren Fragen zu beantworten :

    Unsere Schichten sind folgendermaßen eingeteilt, F1-F4 = Frühschicht a 8 STD das gleiche auch für Spät und Nacht. Ich will jetzt im großen und ganzen erreichen : Ein Programm das einen Monat quasi automatisch durchrechnet, und die Arbeiter (nach bestimmbaren Parametern) auf die einzelnen Schichten verteilt.
    Wie genau ich diese ganzen Funktionen/Filter mit einbaue überlege ich noch, jetzt wollte ich erstmal das Grundgerüst erstellen, aber weiss noch nicht wie ich quasi dafür sorge das mir das Script eine Liste ausgibt, wo jeder Tag des Jahres aufgelistet wird, mit Tag und Datum also
    Freitag der 05.06.2017 so als Beispiel. Also mal im Klartext :

    Programmstart, Erstelle Liste mit allen Tagen des Jahres darin aufgelistet, in oben bereits genannter Form, dann nochmal das selbe nur eben für jeden Monat eine eigene Liste, also jeder tag aus dem Januar, Februar, usw. Wenn ich das dann hätte würde ich es erweitern in dem jeder Tag dann auch noch auf 3 schichten aufgeteilt wird und auch hier eine neue einzelne Liste entsteht. Dann die Schichten mit Mitarbeitern füllen, bestimmen wieviele Mitarbeiter sind nötig, welche Mitarbeiter kommen zu welcher Schicht und so weiter. Aber ich will es ja nach Möglichkeit selbst schaffen, jedoch scheitere ich eben im Moment an der Listen Erstellung der einzelnen Tage. Wenn ich diese erstmal so erstellen könnte wär mir schon sehr geholfen.

    Gruß und Danke DarkIF

  • howdy ;D

    du könntest beispielsweise mit

    [autoit]

    GUICtrlCreateDate

    [/autoit]


    arbeiten und je nach ausgewählten datum dann ein ListView mit daten füllen(schichtplan für den tag) worüber du buttons mit ein paar aufgaben anbringst.. beispielsweise halt mit "schicht neu belegen" o.ä.

    speichern könntest du die daten ganz easy über eine textdatei-basierte datenbank

    mfg
    sgtigram

    • Offizieller Beitrag

    Hier mal ein kurzes Bsp., wie du das gesamte Jahr zusammenstellen kannst:

    [autoit]

    #include <Date.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $sDate = '2012/01/01', $aSplit, $iDay, $sDay, $aDay[8] = [7,'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Sonnabend','Sonntag']

    [/autoit][autoit][/autoit][autoit]

    GUICreate('Test')
    $listview = GUICtrlCreateListView('Datum|Wochentag', 20,20,300,350)

    [/autoit][autoit][/autoit][autoit]

    While StringLeft($sDate, 4) = '2012'
    $aSplit = StringSplit($sDate, '/')
    $iDay = _DateToDayOfWeekISO($aSplit[1], $aSplit[2], $aSplit[3])
    $sDay = $aDay[$iDay]
    GUICtrlCreateListViewItem($aSplit[3] & '.' & $aSplit[2] & '.' & $aSplit[1] & '|' & $sDay, $listview)
    $sDate = _DateAdd('D', 1, $sDate)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    Do
    Until GUIGetMsg() = -3

    [/autoit]
  • Ah klasse Danke das funktioniert, krieg grad nur nicht raus wie ich dann explizit auf die Werte zugreifen kann ??

    Habs jetzt so versucht, damit er die Listen erstellt, aber er schreibt nur immer den letzten Tag rein..

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $sDate = '2012/01/01', $aSplit, $iDay, $sDay, $aDay[8] = [7,'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Sonnabend','Sonntag']

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate('Test')
    $listview = GUICtrlCreateListView('Datum|Wochentag', 20,20,300,350)

    [/autoit] [autoit][/autoit] [autoit]

    While StringLeft($sDate, 4) = '2012'
    $aSplit = StringSplit($sDate, '/')
    $iDay = _DateToDayOfWeekISO($aSplit[1], $aSplit[2], $aSplit[3])
    $sDay = $aDay[$iDay]
    GUICtrlCreateListViewItem($aSplit[3] & '.' & $aSplit[2] & '.' & $aSplit[1] & '|' & $sDay, $listview)
    $sDate = _DateAdd('D', 1, $sDate)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    Global $linete = $aSplit[3] & '.' & $aSplit[2] & '.' & $aSplit[1] & '|' & $sDay

    [/autoit] [autoit][/autoit] [autoit]

    FileWrite(@ScriptDir & "\test23.txt", $linete)

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = -3

    [/autoit]


    Edit : Ah doch hinbekommen : den befehl einfach in deine Schleife integriert, danke

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $sDate = '2012/01/01', $aSplit, $iDay, $sDay, $aDay[8] = [7,'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Sonnabend','Sonntag']

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate('Test')
    $listview = GUICtrlCreateListView('Datum|Wochentag', 20,20,300,350)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While StringLeft($sDate, 4) = '2012'
    $aSplit = StringSplit($sDate, '/')
    $iDay = _DateToDayOfWeekISO($aSplit[1], $aSplit[2], $aSplit[3])
    $sDay = $aDay[$iDay]
    GUICtrlCreateListViewItem($aSplit[3] & '.' & $aSplit[2] & '.' & $aSplit[1] & '|' & $sDay, $listview)
    FileWriteLine(@ScriptDir & "\test23.txt", $aSplit[3] & '.' & $aSplit[2] & '.' & $aSplit[1] & '|' & $sDay)
    $sDate = _DateAdd('D', 1, $sDate)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = -3

    [/autoit]

    Edit 2 : BugFix : Könnte ich dich evtl. darum bitten, deinen Code noch zu kommentieren ? damit für mich ersichtlich wird welche Zeile was macht ? Ich steige da nicht durch, ich suche z.B. wo wird definiert, das er das ganze Jahr durchrechnet ? Und wie könnt ich das dann z.B. auf den aktuellen Monat begrenzen, da wäre es gut zu wissen was genau was anstellt, habe zwar versucht mit der HelpFile dahinter zu kommen, aber das war leider nicht sehr aufschlussreich.

    Einmal editiert, zuletzt von DarkIF (17. Dezember 2012 um 07:34)