Hallo leute!
Ich bastel gerade an ein dienstplan mit hilfe von BugFix experimentiere ich mit array´s klapt auch ganz gut , so zu mein problem!
Wenn ich in meinen code 21 tage rechnen lasse also 21 schichttage vergebe wird nicht das richtige ergebnis angezeigt!
Also man gibt für 21 tag F = frühschicht = 7,8 stunden durch die berechnung ohne WE müßte am ende -7,8 stunden also ein tag fehlt aber bei mir kommt 999998 raus und wenn ich
23 tage vergebe, sollte ein tag also 7,8 plus sein aber als ergebniss bekomme ich 000001??? ![]()
Ich habe die rechnung anders geschrieben neu geschrieben aber ich finde den fehler nicht vieleicht findet ihn einer von euch?
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiButton.au3>
#include <Date.au3>
#include <Misc.au3>
#include <array.au3>
Opt('GUIOnEventMode', 1)
Global $pichinetgo = @ScriptDir & '\5-r.gif'
Local $miusB, $plusB,$base = '',$plusminuszteit
$Gui = GUICreate('', 1003, 600, -1, -1)
GUISetBkColor(0xFFFACD, $Gui)
GUISetOnEvent(-3, '_Exit')
GUICtrlCreatePic($pichinetgo, 0, 0, 1000, 10)
GUICtrlCreatePic($pichinetgo, 175, 79, 690, 5)
GUICtrlCreatePic($pichinetgo, 175, 138, 682, 5)
$Menu = GUICtrlCreateMenu(' M&enü ')
GUICtrlCreateLabel('Monat :', 12, 20, 40, 20)
GUICtrlSetFont(-1, 9, 400, 2)
GUICtrlCreateLabel('Soll', 868, 65, 20, 20)
GUICtrlSetTip(-1, 'Gesamter Monats Zeitraum ')
GUICtrlCreateLabel('Ist', 920, 65, 20, 20)
GUICtrlSetTip(-1, 'Wieviel im Monat geleistet')
GUICtrlCreateLabel('Übertrag', 950, 65, 42, 20)
GUICtrlSetTip(-1, 'Plus Minus Stunden Übertragen')
GUICtrlCreateLabel('Jahr :', 17, 44, 40, 20)
GUICtrlSetFont(-1, 9, 400, 2)
$monataus = GUICtrlCreateLabel('Bitte wählen', 60, 20, 75);--------------Monats Wahl
$monatzahl = GUICtrlCreateLabel('0', -100, 0, 0, 0);-----------------------------------------Versteckt zahl für monats wahl
$miusB = GUICtrlCreateButton('-', 135, 20, 15, 15)
GUICtrlSetOnEvent(-1, 'PlusMinus')
$plusB = GUICtrlCreateButton('+', 150, 20, 15, 15)
GUICtrlSetOnEvent(-1, 'PlusMinus')
$jahr = GUICtrlCreateLabel(@YEAR, 60, 44, 40, 19);-----------------------Jahres Wahl
$minus = GUICtrlCreateButton('-', 135, 44, 15, 15)
GUICtrlSetOnEvent(-1, 'PlusMinus')
$plus = GUICtrlCreateButton('+', 150, 44, 15, 15)
GUICtrlSetOnEvent(-1, 'PlusMinus')
$Schalt = GUICtrlCreateLabel('',860,35,100,25)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlCreateInput('', 9, 79, 120, 19);--------------------Name
GUICtrlSetTip(-1, 'Name')
GUICtrlCreateInput('', 9, 101, 120, 19);-----------------------------Stellenbeschreibung
GUICtrlSetTip(-1, 'Stellenbezeichnung')
GUICtrlCreateGroup('', 9, 117, 120, 24);--------------------------Urlaub
GUICtrlCreateLabel('R=', 108, 125, 20, 12)
GUICtrlSetTip(-1, 'Urlaub')
$plusminuszteit = GUICtrlCreateInput('', 130, 79, 45, 21);------------------------------- + - Zeiten
GUICtrlSetTip(-1, '+ / - Zeiten')
$stundendiewoche = GUICtrlCreateInput('39', 130, 101, 45, 21);-------------------------------Stunden die woche
GUICtrlSetTip(-1, 'Stunden / Wochen')
$Urlaub = GUICtrlCreateInput('', 130, 123, 45, 18);------------------------------------Urlaub
GUICtrlSetTip(-1, 'Urlaub')
;-------------------------------------------------------------------Kalender und Schichtsetzen --------------------------------------------------------------------
Local $arTage[31][2]
$x = 176 ; +22
For $i = 0 To 30
$arTage[$i][0] = GUICtrlCreateInput(StringRight('0' & $i+1, 2), $x, 20, 21, 20)
$arTage[$i][1] = GUICtrlCreateInput('', $x, 41, 21, 20)
$x += 22
Next
Local $aschTage[31][2]
$x = 176 ; +22
For $i = 0 To 30
$aschTage[$i][0] = GUICtrlCreateInput('', $x, 90, 21, 20)
$aschTage[$i][1] = GUICtrlCreateInput('', $x, 111, 21, 20)
$x += 22
Next
$soll = GUICtrlCreateInput('', 858, 79, 45, 21);--------------------Arbeitzeit SOLL
$ist = GUICtrlCreateInput('', 904, 79, 45, 21);-------------------Arbeitzeit IST
$uebertrag = GUICtrlCreateInput('', 950, 79, 45, 21);-------------------Arbeitzeit ÜBERTRAGEN
$resrtulaub = GUICtrlCreateInput('', 904, 120, 45, 21);------------------Rest URLAUB
GUICtrlCreateGroup('', 858, 116, 45, 25)
GUICtrlCreateLabel('R=', 880, 125, 20, 12)
$soller = GUICtrlCreateInput('', 950, 120, 45, 21);------------------SOLL EREICHT
GUISetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _Exit()
Exit
EndFunc ;==>_Exit
;-------------------------------------------------------------------Kalender und Schichtsetzen --------------------------------------------------------------------
Local $Color = 0x000000
While 1
Sleep(10)
If StringLeft(GUICtrlRead($plusminuszteit), 1) = "-" Then
If $Color <> 0xff0000 Then
$Color = 0xff0000
GUICtrlSetColor($plusminuszteit, $Color)
EndIf
ElseIf $Color <> 0x000000 Then
$Color = 0x000000
GUICtrlSetColor($plusminuszteit, $Color)
EndIf
_abrech()
WEnd
Func PlusMinus()
Switch @GUI_CtrlId
Case $miusB
GUICtrlSetData($monatzahl, GUICtrlRead($monatzahl) - 1)
Case $plusB
GUICtrlSetData($monatzahl, GUICtrlRead($monatzahl) + 1)
Case $minus
GUICtrlSetData($jahr, GUICtrlRead($jahr) - 1)
Case $plus
GUICtrlSetData($jahr, GUICtrlRead($jahr) + 1)
EndSwitch
_Wochentag()
_stimmo()
EndFunc
Func _Wochentag();-----------------------------------------------------------------------------------------------------------------aktualisieren Plus
GUICtrlSetData($monataus, _getmonatwahl(GUICtrlRead($monatzahl)))
For $i = 0 To 30
GUICtrlSetData($arTage[$i][1], _getwochwntag(_DateToDayOfWeek(GUICtrlRead($jahr), GUICtrlRead($monatzahl), GUICtrlRead($arTage[$i][0]))))
Next
_Schaltjahr()
EndFunc ;==>_aktualplus
Func _Schaltjahr();--------------------------------------------Schaltjahr
If _DateIsLeapYear(GUICtrlRead($jahr)) Then
GUICtrlSetData($Schalt, 'Schaltjahr')
Else
GUICtrlSetData($Schalt, '')
EndIf
EndFunc
Func _getwochwntag($wtag);---------------------------------Wochentag wandler
Local $aWT[8] = ['','So','Mo','Di','Mi','Do','Fr','Sa']
Return $aWT[$wtag]
EndFunc ;==>_getwochwntag
Func _getmonatwahl($monatw);------------------------------Monats wandler
If $monatw = 0 Then
_GUICtrlButton_Enable($miusB, False)
ElseIf $monatw = 1 Then
_GUICtrlButton_Enable($miusB, True)
ElseIf $monatw = 13 Then
_GUICtrlButton_Enable($plusB, False)
ElseIf $monatw = 12 Then
_GUICtrlButton_Enable($plusB, True)
EndIf
Local $aMonat[14] = ['Bitte wählen','Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember','Bitte wählen']
Return $aMonat[$monatw]
EndFunc ;==>_getmonatwahl
func _stimmo()
Local $anzSaSo = 0
For $i = 0 To 30
If _DateToDayOfWeek(GUICtrlRead($jahr), GUICtrlRead($monatzahl), GUICtrlRead($arTage[$i][0])) = 1 Then
$anzSaSo += 1
ElseIf _DateToDayOfWeek(GUICtrlRead($jahr), GUICtrlRead($monatzahl), GUICtrlRead($arTage[$i][0])) = 7 Then
$anzSaSo += 1
EndIf
Next
$rechnung = GUICtrlRead($stundendiewoche)
$rechnung = StringReplace($rechnung, ',', '.')
$y = $rechnung/5
$xy = $anzSaSo * $y
$iDays = _DateDaysInMonth(GUICtrlRead($jahr),GUICtrlRead($monatzahl))
$yy = $iDays * $y - $xy
$yy = StringReplace($yy, '.', ',')
GUICtrlSetData($soll,$yy)
EndFunc
Func _abrech()
Local $anzSicht = 0
For $i = 0 To 30
If GUICtrlRead($aschTage[$i][0]) = 'F' Then
$anzSicht += 1
ElseIf GUICtrlRead($aschTage[$i][0]) = 'S' Then
$anzSicht += 1
ElseIf GUICtrlRead($aschTage[$i][0]) = 'Z' Then
$anzSicht += 1
EndIf
Next
Local $anzSicht1 = 0
For $i = 0 To 30
If GUICtrlRead($aschTage[$i][0]) = 'F2' Then
$anzSicht1 += 1
ElseIf GUICtrlRead($aschTage[$i][0]) = 'S2' Then
$anzSicht1 += 1
EndIf
Next
Local $anzSicht2 = 0
For $i = 0 To 30
If GUICtrlRead($aschTage[$i][0]) = 'FF' Then
$anzSicht2 += 1
ElseIf GUICtrlRead($aschTage[$i][0]) = 'SS' Then
$anzSicht2 += 1
EndIf
Next
Local $anzSicht3 = 0
For $i = 0 To 30
If GUICtrlRead($aschTage[$i][0]) = 'Na' Then
$anzSicht3 += 1
EndIf
Next
Local $anzSicht4 = 0
For $i = 0 To 30
If GUICtrlRead($aschTage[$i][1]) = 'U' Then
$anzSicht4 += 1
EndIf
Next
$rechnung1 = GUICtrlRead($stundendiewoche)
$rechnung1 = StringReplace($rechnung1, ',', '.')
$xy1 = $rechnung1/5
$x = $anzSicht * 7.8
$xx = $anzSicht1 * 6.24
$xxx = $anzSicht2 * 3.9
$xxxx = $anzSicht3 * 8.8
$xxxxx = $anzSicht4 * $xy1
$xxxxxx = $x + $xx + $xxx + $xxxx + $xxxxx
$xxxxxx = StringReplace($xxxxxx,'.', ',')
GUICtrlSetData($ist,$xxxxxx)
$sollaus = GUICtrlRead($soll)
$sollaus = StringReplace($sollaus, ',', '.')
$istaus = GUICtrlRead($ist)
$istaus = StringReplace($istaus, ',', '.')
$sollistrech = $istaus - $sollaus
$sollistrech = StringReplace($sollistrech, '.', ',')
GUICtrlSetData($soller,$sollistrech)
$pmaus = GUICtrlRead($plusminuszteit)
$pmaus = StringReplace($pmaus, ',', '.')
$solleraus = GUICtrlRead($soller)
$solleraus = StringReplace($solleraus, ',', '.')
$uebertragrech = $solleraus + $pmaus
$uebertragrech = StringReplace($uebertragrech, '.', ',')
GUICtrlSetData($uebertrag,$uebertragrech)
$c = GUICtrlRead($Urlaub)
$c = StringReplace($c,',', '.')
$url = $c - $anzSicht4
$url = StringReplace($url,'.', ',')
GUICtrlSetData($resrtulaub,$url)
EndFunc
[/autoit]LG Kleiner