Datum Rechnen

  • Datum in Variable soll mit einem Wert addiert werden.

    [autoit]


    Dim $Auftragseingang = "05.11.2010" ; Zu setzendes Auftragseingangsdatum
    Dim $Abnahmedatum = "06.11.2010" ; Zu setzendes Abnahmedatum
    Dim $Enddatum = "0" ; Enddatum Errechnet sich aus Abnahmedatum + Laufzeit

    Dim $Laufzeit0 = "0 Monate" ; Keine Laufzeit
    Dim $Laufzeit6 = "6 Monate" ; Laufzeit 6 Monate
    Dim $Laufzeit12 = "12 Monate" ; Laufzeit 12 Monate
    Dim $Laufzeit24 = "24 Monate" ; Laufzeit 24 Monate
    Dim $Laufzeit36 = "36 Monate" ; Laufzeit 36 Monate

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

    If $check = $Laufzeit0 Then
    $Enddatum = $Abnahmedatum ;; + 0 Monat
    ElseIf $check = $Laufzeit6 Then
    $Enddatum = $Abnahmeddatum ;; + 6 Monat
    ElseIf $check = $Laufzeit12 Then
    $Enddatum = $Abnahmeddatum ;; + 12 Monat
    ElseIf $check = $Laufzeit24 Then
    $Enddatum = $Abnahmeddatum ;; + 24 Monat
    ElseIf $check = $Laufzeit36 Then
    $Enddatum = $Abnahmeddatum ;; + 36 Monat
    Endif

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

    Wie gebe ich das ein das er mir auf das Datum in der Var $Abnahmedatum die monate dazurechnet.

    Einmal editiert, zuletzt von 3l1te (5. November 2010 um 13:50)

  • Arg, das ist zwar gut das es da ne Funktion gibt aber das wirf wirder ein anderes Thema auf. Wie bekomme ich meine Daten in das passende Format.

    Autoit frisst es ja nur wenn es YYYY/MM/DD ist, und die Datenbank nimmt nur DD/MM/YYYY

  • [autoit]

    $aStrSplit = StringSplit("05.11.2010", ".")

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

    $sDate = $aStrSplit[3] & "/" & $aStrSplit[2] & "/" & $aStrSplit[1]

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

    MsgBox(0, "Test", $sDate)

    [/autoit]


    Also die Hilfe ist eigentlich recht super.

  • Aber das geht auch kürzer ohne die ganzen ElseIf. Du kannst doch auch direkt $check nehmen zum addieren oder nicht?

  • ? ? ? ? ? ? ?

    Das Script soll mir nur ein bisschen Büroarbeit abnehmen (10 Std Arbeitszeit in 45 Minunte ^^) und das Autoit mach ich bisher nur Hobbymässig :thumbup: ich post euch gleich mal die ganze Source, dann könnt ihr ja mal drüberschauen ob die IO ist.

    ____________________________________________________________________________

    [autoit]

    Func _Laufzeitprüfung() ; Prüft längste Laufzeit im Vorhaben
    Mouseclick("left", 229, 436, 1) ;Produktreiter
    _sl1()
    Mouseclick("left", 859, 614, 1) ;längste Laufzeit nach oben
    _sl1()
    Mouseclick("left", 841, 619, 1) ;Laufzeit in Zwischenspeicher
    _sl1()
    Send("^c")
    _sl1()
    $aStrSplit = StringSplit($Abnahmedatum, ".") ; Teil das Abnahmedatum an den "." und Speichert es im Array "aStrSplit[3]"
    $sDate = $aStrSplit[3] & "/" & $aStrSplit[2] & "/" & $aStrSplit[1] ; Setzt das Datum nach "YYYY/MM/DD" zusammen
    $check = ClipGet()
    If $check = $Laufzeit0 Then
    $Enddatum = $Abnahmedatum ;; + 0 Monat
    ElseIf $check = $Laufzeit1 Then
    $sDate2 = _DateAdd('M', 1, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zu
    ElseIf $check = $Laufzeit12 Then
    $sDate2 = _DateAdd('M', 12, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zu
    ElseIf $check = $Laufzeit24 Then
    $sDate2 = _DateAdd('M', 24, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zu
    ElseIf $check = $Laufzeit36 Then
    $sDate2 = _DateAdd('M', 36, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zu
    ElseIf $check = $Laufzeit60 Then
    $sDate2 = _DateAdd('M', 60, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zu
    ElseIf $check = $Laufzeit120 Then
    $sDate2 = _DateAdd('M', 120, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zu

    Endif
    _sl1()
    Mouseclick("left", 270, 184, 1) ; Zurück damit Daten änderbar werden
    _sl1()
    Mouseclick("left", 965, 559, 2) ; Auftragseingang Datum setzen
    _sl1()
    Send($Auftragseingang)
    _sl1()
    Mouseclick("left", 971, 598, 2) ;Abnahme Datum setzen
    _sl1()
    Send($Abnahmedatum)
    _sl1()
    Mouseclick("left", 960, 673, 2) ; Enddatum setzten nach Laufzeit
    _sl1()
    Send($Enddatum)
    Endfunc

    [/autoit]

    Einmal editiert, zuletzt von 3l1te (5. November 2010 um 12:03)

  • Statt den ganzen Mausklicks kannst du doch die Control-Funktionen nehmen. Oder um was für eine Anwendung handelt es sich?

  • Es ist warscheinlich ne SQL Datenbank mit PHP Webzugriff, deswegen mach ich das alles über Mausklicks im Webinterface, auserdem ist so gesichert das sich nicht irgend ein "Kollege" meine Arbeit krallt und es als sein ausgibt. Wäre ja nicht das erstemal.

  • So erstmal sry wegen Doppelpost ;) , aber ich hab nochmal ein kleines Problemchen:

    Ich bekommen nen Error: Illegal text at the end of statement (one Statement per line). Leider hab ich kein Orginal Autoit da sondern nur das Portabel und Notepad++. Bei meiner Freunden von Google kam raus das es sich um eine falsch Verschachtelte IF handeln sollte. Allerdings finde ich den Fehler nicht ;(

    [autoit]

    Func _Laufzeitpruefung() ; Prueft längste Laufzeit im Vorhaben
    Mouseclick("left", 229, 436, 1) ;Produktreiter
    _sl1()
    Mouseclick("left", 859, 614, 1) ;längste Laufzeit nach oben
    _sl1()
    Mouseclick("left", 841, 619, 1) ;Laufzeit in Zwischenspeicher
    _sl1()
    Send("^c")
    _sl1()
    $aStrSplit = StringSplit($Abnahmedatum, ".") ; Teil das Abnahmedatum an den "." und Speichert es im Array "aStrSplit[3]"
    $sDate = $aStrSplit[3] & "/" & $aStrSplit[2] & "/" & $aStrSplit[1] ; Setzt das Datum nach "YYYY/MM/DD" zusammen
    $check = ClipGet()
    If $check = $Laufzeit0 Then
    $Enddatum = $Abnahmedatum ;; + 0 Monat
    ElseIf $check = $Laufzeit1 Then
    $sDate2 = _DateAdd('M', 1, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD.MM.YYYY" zusammen
    ElseIf $check = $Laufzeit12 Then
    $sDate2 = _DateAdd('M', 12, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zusammen
    ElseIf $check = $Laufzeit24 Then
    $sDate2 = _DateAdd('M', 24, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zusammen
    ElseIf $check = $Laufzeit36 Then
    $sDate2 = _DateAdd('M', 36, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zusammen
    ElseIf $check = $Laufzeit60 Then
    $sDate2 = _DateAdd('M', 60, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zusammen
    Else $check = $Laufzeit120 Then
    $sDate2 = _DateAdd('M', 120, $sDate)
    $aStrSplit2 = StringSplit($sDate2, "/") ; Teil das Abnahmedatum an den "/" und Speichert es im Array "aStrSplit2[3]"
    $Enddatum = $aStrSplit2[3] & "." & $aStrSplit2[2] & "." & $aStrSplit2[1] ; Setzt das Datum nach "DD/MM/YYYY" zusammen
    Endif
    _sl1()
    Mouseclick("left", 270, 184, 1) ; Zurueck damit Daten änderbar werden
    _sl1()
    Mouseclick("left", 965, 559, 2) ; Auftragseingang Datum setzen
    _sl1()
    Send($Auftragseingang)
    _sl1()
    Mouseclick("left", 971, 598, 2) ;Abnahme Datum setzen
    _sl1()
    Send($Abnahmedatum)
    _sl1()
    Mouseclick("left", 960, 673, 2) ; Enddatum setzten nach Laufzeit
    _sl1()
    Send($Enddatum)
    Endfunc

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

    Func _Check() ; Checkt ob Vorhaben bereits auf Win o. Loss
    Mouseclick("left", 661, 520, 2)
    Send("^c")
    $check = ClipGet()
    If $check = "WIN" Then
    _sl1()
    Else
    If $check = "LOSS" Then
    _sl1()
    Else
    _Laufzeitpruefung()
    EndIf
    EndIf
    Endfunc

    [/autoit]
  • Jetzt geht es ^^, letzte frage für heute warum bekomme ich nen Error wenn ich:

    [autoit]

    Dim $s1 = ""
    Dim $s2 = ""
    Dim $s3 = ""
    Dim $s4 = ""
    Dim $s5 = ""
    Dim $s6 = ""
    Dim $s7 = ""
    Dim $s8 = ""
    Dim $s9 = ""
    Dim $s10 = ""

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

    Global $Arrays1[10] = [ "$s1", "$s2", "$s3", "$s4", "$s5", "$s6", "$s7", "$s8", "$s9", "$s10"]

    For $z1 = 0 To UBound($Array1) - 1 ;1
    Send ($Array1[$z1])
    Next

    [/autoit]

    verwenden? In den Vars sind Zahlencombinationen


    ERLEDIGT ^^ man beachte Array und Arrays


    Danke an alle Helfer :love:

    2 Mal editiert, zuletzt von 3l1te (5. November 2010 um 13:51)

  • Warum nutzt du denn die 10 Variablen? Nimm doch direkt dafür das Array. Du kannst aber auch nur die 10 Variablen nutzen, ohne das Array. Musst nur Eval() benutzen.