Datum ändern

  • Hey,

    Mein vater ist so Strom bessesen, das er sich die daten immer aufschreibt & dan in eine Excel tabelle einfügt. Ich wollte ihm das ganze jz erleichtern indem ich ihn dafür ein Programm schreibe, es soll ein error log haben, wo wirklich jeder noch so kleine fehler angezeigt werden soll (ihm ist die datei echt wichtig^^) Aber er schreibt sie nicht immer am aktuellen tag in die Excel tabelle & möchte deswegen das Datum ändern können (datum deswegen, damit man weiß wo es reingeschrieben werden soll, aber da skommt noch^^) Er soll es einmal selbst eingeben können (wechs. button) & -1 & +1 machen können. Aber da nicht immer aktuell sein soll, weil er ja
    nicht jeden tag aufschriebt & er selbst erkennen sollte (naja fast selbst^^) wo er stehen geblieben ist. Soll ein datum aus einer .ini datei gelesen werden. Default dabei ist _NowDate()

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    #include <string.au3>
    #include <Array.au3>
    #include <GuiEdit.au3>
    #include <Excel.au3>

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

    Global $IGas,$ISolar,$IStrom,$IWasser,$Speichern,$AltPfad,$oExcel = "",$Array,$Schreiben = False,$Gas,$Strom,$Wasser,$Solar,$LDatum,$IDatum,$Date

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

    _Read()

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

    #Region ### START Koda GUI section ### Form=
    $Main = GUICreate("Erträge", 383, 324)
    $Tab0 = GUICtrlCreateTab(0,0,388,208)
    $Log = GUICtrlCreateEdit("Log", 0, 208, 383, 113 ,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$ES_READONLY,$WS_HSCROLL,$WS_VSCROLL))
    $hEdit = GUICtrlGetHandle($Log)
    GUICtrlSetData(-1, "")
    $Tab1= GUICtrlCreateTabItem("Speichern")
    GUICtrlSetTip(-1,"Hier kannst du deine Erträge Speichern!")
    $Label1 = GUICtrlCreateLabel("Strom:", 16, 48, 34, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $IStrom = GUICtrlCreateInput("", 64, 48, 89, 21)
    GUICtrlSetTip(-1,"Stromdaten nach hier")
    $Label2 = GUICtrlCreateLabel("Solar:", 176, 48, 31, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $ISolar = GUICtrlCreateInput("", 224, 48, 89, 21)
    GUICtrlSetTip(-1,"Solar Ertrag nach hier")
    $Label3 = GUICtrlCreateLabel("Gas:", 16, 88, 26, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $IGas = GUICtrlCreateInput("", 64, 88, 89, 21)
    GUICtrlSetTip(-1,"Gasstand hier Eintragen")
    $Label4 = GUICtrlCreateLabel("Wasser:", 176, 88, 48, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $IWasser = GUICtrlCreateInput("", 224, 88, 89, 21)
    GUICtrlSetTip(-1,"Wasserstand hier Eintragen")
    $Speichern = GUICtrlCreateButton("OK", 144, 160, 75, 25, 0)
    GUICtrlSetTip(-1,"Damit Bestätigs du das Speichern")
    $LDatum = GUICtrlCreateLabel("Datum: " & $Date, 140, 128, 100, 17)
    $Minus1 = GUICtrlCreateButton("-1", 105, 128, 27, 15, 0)
    $Plus1 = GUICtrlCreateButton("+1", 240, 128, 27, 15, 0)
    $wechs = GUICtrlCreateButton("wechs.", 50, 128, 43, 15, 0)
    $Tab2 = GUICtrlCreateTabItem("Anzeigen")
    GUICtrlSetTip(-1,"Anzeige der Älteren Erträge")
    $Tab3 = GUICtrlCreateTabItem("Daten ändern")
    GUICtrlSetTip(-1,"Ändern der Alten Daten")
    $Tab4 = GUICtrlCreateTabItem("Einstellungen")
    GUICtrlSetTip(-1,"Einstellungen ändern")
    $LPfad = GUICtrlCreateLabel("Dateipfad:", 24, 35, 53, 17)
    $IPfad = GUICtrlCreateInput($AltPfad, 24, 59, 265, 21)
    GUICtrlSetTip(-1,"Manuel den Pfad eintragen")
    $Browse = GUICtrlCreateButton("Browse", 304, 59, 67, 21, 0)
    GUICtrlSetTip(-1,"Ordnerverzeichnis öffnen")
    $SpeichernEin = GUICtrlCreateButton("Speichern", 144, 160, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _ExcelBookClose($oExcel)
    Exit
    Case $Speichern
    _Save()
    Case $Browse
    _Browse()
    Case $SpeichernEin
    $Pfad = GUICtrlRead($IPfad)
    If $Pfad = "" Then
    _write_log($Log, "Ungültiger Dateipfad!", $Main)
    Else
    IniWrite(@ScriptDir & "\config.ini","Einstellungen","Pfad",$Pfad)
    _write_log($Log, "Dateipfad Gespeichert!", $Main)
    EndIf
    Case $Plus1
    $Date = _DateAdd('d',1, $Date)
    GUICtrlSetData($LDatum,$Date)
    EndSwitch
    WEnd

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

    Func _Save()
    GUICtrlSetState($IStrom,$GUI_DISABLE)
    GUICtrlSetState($ISolar,$GUI_DISABLE)
    GUICtrlSetState($IGas,$GUI_DISABLE)
    GUICtrlSetState($IWasser,$GUI_DISABLE)
    GUICtrlSetState($Speichern,$GUI_DISABLE)
    $Strom = GUICtrlRead($iStrom)
    $Solar = GUICtrlRead($ISolar)
    $Gas = GUICtrlRead($IGas)
    $Wasser = GUICtrlRead($IWasser)
    If StringRegExp($Strom, '^\d+(?:\,\d)?$') and StringRegExp($Solar, '^\d+(?:\,\d)?$') and StringRegExp($Gas, '^\d+(?:\,\d\d\d)?$') and StringRegExp($Wasser, '^\d+$') Then
    _write_log($Log , "Erfolgreich Ausgelesen!", $Main)
    _Excel_Check()
    If IsArray($Array) Then
    If $Strom < $Array[0] or $Solar < $Array[1] or $Gas < $Array[2] or $Wasser < $Array[3] Then
    _write_log($Log , "Angegebende Daten sind kleiner als alte Daten!", $Main)
    _Error()
    Else
    _write_log($Log , "Daten werden hinzugefügt...", $Main)
    _Excel_Schreiben()
    _write_log($Log , "Daten erfolgreich hinzugefügt!", $Main)
    $Schreiben = True
    EndIf
    EndIf
    Else
    _write_log($Log , "Keine oder Unrealistische Zahlen angegeben!", $Main)
    _Error()
    EndIf
    EndFunc

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

    Func _write_log($iLog, $sText, $hWND)
    GUICtrlSetData($iLog, GUICtrlRead($iLog)&@HOUR&":"&@MIN&":"&@SEC& @TAB &$sText&@CRLF)
    ControlSend($hWND, "", $iLog, "{end}")
    _GUICtrlEdit_LineScroll($hEdit, 0, _GUICtrlEdit_GetLineCount($hEdit))
    EndFunc

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

    Func _Error()
    GUICtrlSetState($IStrom,$GUI_ENABLE)
    GUICtrlSetState($ISolar,$GUI_ENABLE)
    GUICtrlSetState($IGas,$GUI_ENABLE)
    GUICtrlSetState($IWasser,$GUI_ENABLE)
    GUICtrlSetState($Speichern,$GUI_ENABLE)
    If $Schreiben = False Then
    _write_log($Log , "Vorgang wurde Abgebrochen!", $Main)
    ElseIf $Schreiben = True Then
    _write_log($Log , "Vorgang erfolgreich abgeschlossen!", $Main)
    EndIf
    $Schreiben = False
    EndFunc

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

    Func _Browse()
    Local $PfadFile = ""
    $FilePfad = IniRead(@ScriptDir & "\config.ini","Einstellungen","Pfad","")
    If $FilePfad = "" Then
    $PfadFile = @DesktopDir
    Else
    $FilePfad = StringSplit($FilePfad,"\")
    $LenghFile = Ubound($FilePfad)-2
    For $i = 1 To $LenghFile
    $PfadFile = $PfadFile & $FilePfad[$i] & "\"
    Next
    EndIf
    $File = FileOpenDialog("Excel Pfad auswählen",$PfadFile,"Excel (*.xlsx;*.xls)")
    If Not $File = "" Then GUICtrlSetData($IPfad,$File)
    EndFunc

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

    Func _Read()
    $AltPfad = IniRead(@ScriptDir & "\config.ini","Einstellungen","Pfad","")
    $Date = IniRead(@ScriptDir & "\config.ini","Einstellungen","Datum",_NowDate())
    EndFunc

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

    Func _Excel_Check()
    _Read()
    Local $Check = True
    While $Check = True
    $Array = _ExcelReadArray($oExcel,1,1,4)
    If @error = 1 Then
    $oExcel = _ExcelBookOpen($AltPfad,0)
    If @error = 1 Then
    _write_log($Log , "Konnte kein Excel Objekt erstellen!", $Main)
    ElseIf @error = 2 Then
    _write_log($Log , "Datei existiert nicht", $Main)
    $Check = False
    _Error()
    EndIf
    ElseIf @error = 2 Then
    _write_log($Log , "Parameter außerhalb des Bereiches", $Main)
    $Check = False
    _Error()
    ElseIf @error = 3 Then
    _write_log($Log , "Ungültige Anzahl von Zellen", $Main)
    $Check = False
    _Error()
    ElseIf @error = 4 Then
    _write_log($Log , "Ungültige Richtungsparameter", $Main)
    $Check = False
    _Error()
    ElseIf @error = 0 Then
    $Check = False
    EndIf
    WEnd
    EndFunc

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

    Func _Excel_Schreiben()
    Local $Werte[4] = [$Strom,$Solar,$Gas,$Wasser]
    _ExcelWriteArray($oExcel,2,1,$Werte)
    EndFunc

    [/autoit]

    #edit: problem gefunden, er hatt immer das gesamte label mit "Datum: " ausgelesen ;)

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

    Einmal editiert, zuletzt von Niccoo (11. Mai 2012 um 16:18)