Imports System.Globalization Imports Microsoft.Office.Interop Public Class frmDienstplanATILLA Private isDrawn As Boolean = False Public niederlassung = "" Private blueBrush As New SolidBrush(Color.LightBlue) Private greenBrush As New SolidBrush(Color.LightGreen) Private f_black As New Font("Arial", 8) Private f_black_bold As New Font("Arial", 8, FontStyle.Bold) Private stift As New Pen(Color.Gray, 1) Private stift2 As New Pen(Color.LightGray, 2) Private scr_left As Integer = 200 Private scr_top As Integer = 50 Dim week() As String = {"SO", "MO", "DI", "MI", "DO", "FR", "SA"} Private SCHICHT = "ROT" 'Private SCHICHT2 = "1" Dim SQLDienst As New cDienstplan Dim ListMA As New List(Of cMAShort) Dim MA As New cDienstMA Dim DienstDetails As List(Of cDienstDetails) Dim DGV As New List(Of cDienstDGV) Dim aktDate As Date = Now Dim aktWoche As Integer = 0 Dim aktJahr As Integer = 1900 Dim aktMitarbeiterEintrag As String 'ID des Eintrages des aktuell ausgewählen MA Dim markId As Integer = -1 Sub New() InitializeComponent() End Sub Sub New(niederlassung) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() Me.niederlassung = niederlassung ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Sub fillCboQS() cboQSSpaet.Items.Clear() Dim ListMA As New List(Of cDienstMA) ListMA = SQLDienst.getAllDienstMA(niederlassung, CalendarWeek(aktWoche, aktJahr)) ', " AND dstma_abteilung = 'QS' ") For Each m In ListMA cboQSSpaet.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem(m.dstma_kuerzel, m.dstma_id)) Next End Sub Public Sub initDienstplan() Dim STD_LIST = cDienstMitarbAbweichendeWochenstunden.GET_STD_LIST(CalendarWeek(aktWoche, aktJahr)) Dim pf As New cProgramFunctions pf.KWAbschluss(STD_LIST, niederlassung, aktJahr, aktWoche, SCHICHT) ' initDienstplan() If pnl.Controls.Count > 0 Then DirectCast(pnl.Controls(0), usrcntlDienstplanStunden).loaded = False DienstDetails = SQLDienst.getAllDienstDetails(niederlassung) fillCboQS() 'Button14.Visible = Not SQLDienst.existsEntryKWUeberstd(niederlassung, aktJahr, aktWoche) If Not SQLDienst.existsEntryKWUeberstd(niederlassung, aktJahr, aktWoche) Then Button14.Text = "Woche erneut abschließen" Else Button14.Text = "Woche abschließen" End If Dim datum As Date = CalendarWeek(aktWoche, aktJahr) Dim arrZoll1 As String() = {"dgvZoll1_Mo", "dgvZoll1_Di", "dgvZoll1_Mi", "dgvZoll1_Do", "dgvZoll1_Fr", "dgvZoll1_Sa", "dgvZoll1_So"} Dim arrZoll2 As String() = {"dgvZoll2_Mo", "dgvZoll2_Di", "dgvZoll2_Mi", "dgvZoll2_Do", "dgvZoll2_Fr", "dgvZoll2_Sa", "dgvZoll2_So"} Dim arrZollTag As String() = {"dgvZollTag_Mo", "dgvZollTag_Di", "dgvZollTag_Mi", "dgvZollTag_Do", "dgvZollTag_Fr", "dgvZollTag_Sa", "dgvZollTag_So"} Dim arrNACHT As String() = {"dgvNACHT_Mo", "dgvNACHT_Di", "dgvNACHT_Mi", "dgvNACHT_Do", "dgvNACHT_Fr", "dgvNACHT_Sa", "dgvNACHT_So"} Dim arrKS As String() = {"dgvKS_Mo", "dgvKS_Di", "dgvKS_Mi", "dgvKS_Do", "dgvKS_Fr", "dgvKS_Sa", "dgvKS_So"} Dim arrUrl As String() = {"dgvUrl_Mo", "dgvUrl_Di", "dgvUrl_Mi", "dgvUrl_Do", "dgvUrl_Fr", "dgvUrl_Sa", "dgvUrl_So"} Dim arrDR As String() = {"dgvDR_Mo", "dgvDR_Di", "dgvDR_Mi", "dgvDR_Do", "dgvDR_Fr", "dgvDR_Sa", "dgvDR_So"} Dim arrFrei As String() = {"dgvFrei_Mo", "dgvFrei_Di", "dgvFrei_Mi", "dgvFrei_Do", "dgvFrei_Fr", "dgvFrei_Sa", "dgvFrei_So"} Dim arrZA As String() = {"dgvZA_Mo", "dgvZA_Di", "dgvZA_Mi", "dgvZA_Do", "dgvZA_Fr", "dgvZA_Sa", "dgvZA_So"} DGV.Clear() For i = 0 To 6 Dim andstr As String = " AND dstetr_datum='" & datum.ToShortDateString & "' AND dstetr_dstmaId=dstma_id AND mit_id=dstma_mitId " andstr &= " AND dstetr_niederlassung='" & niederlassung & "'" Dim orderBy As String = " ORDER BY dstma_reihenfolge ASC, dstma_kuerzel ASC " Dim orderBy2 As String = " ORDER BY dstma_kuerzel ASC " getDGV(arrZoll1(i)).DataSource = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info,dstma_id,dstma_arbvh, dstetr_von,dstetr_bis,dstma_stammSchicht, dstetr_info,dstma_reihenfolge, dstma_farbe,dstetr_pause FROM tblDienstplanEintraege,tblDienstMitarb,tblMitarbeiter WHERE (dstetr_art='ZOLL_VM' or dstetr_art='DBL') " & andstr & orderBy) DGV.Add(New cDienstDGV(arrZoll1(i), datum, "ZOLL_VM")) ', getDienstDetails("ZOLL1", "von"), getDienstDetails("ZOLL1", "bis"))) getDGV(arrZoll2(i)).DataSource = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info,dstma_id,dstma_arbvh, dstetr_von,dstetr_bis,dstma_stammSchicht, dstetr_info,dstma_reihenfolge, dstma_farbe,dstetr_pause FROM tblDienstplanEintraege,tblDienstMitarb,tblMitarbeiter WHERE (dstetr_art='ZOLL_NM' or dstetr_art='DBL') " & andstr & orderBy) DGV.Add(New cDienstDGV(arrZoll2(i), datum, "ZOLL_NM")) ', getDienstDetails("ZOLL2", "von"), getDienstDetails("ZOLL2", "bis"))) getDGV(arrZollTag(i)).DataSource = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info,dstma_id,dstma_arbvh, dstetr_von,dstetr_bis,dstma_stammSchicht, dstetr_info,dstma_reihenfolge, dstma_farbe,dstetr_pause FROM tblDienstplanEintraege,tblDienstMitarb,tblMitarbeiter WHERE dstetr_art='ZOLL_TAG' " & andstr & orderBy) DGV.Add(New cDienstDGV(arrZollTag(i), datum, "ZOLL_TAG")) ', getDienstDetails("ZOLL_TAG", "von"), getDienstDetails("ZOLL_TAG", "bis"))) getDGV(arrNACHT(i)).DataSource = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info,dstma_id,dstma_arbvh, dstetr_von,dstetr_bis,dstma_stammSchicht, dstetr_info,dstma_reihenfolge, dstma_farbe,dstetr_pause FROM tblDienstplanEintraege,tblDienstMitarb,tblMitarbeiter WHERE dstetr_art='NACHT'" & andstr & orderBy) DGV.Add(New cDienstDGV(arrNACHT(i), datum, "NACHT")) ', getDienstDetails("NACHT", "von"), getDienstDetails("NACHT", "bis"))) getDGV(arrUrl(i)).DataSource = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info,dstma_id,dstma_arbvh, dstetr_von,dstetr_bis,dstma_stammSchicht, dstetr_info,dstma_reihenfolge, dstma_farbe,dstetr_pause FROM tblDienstplanEintraege,tblDienstMitarb,tblMitarbeiter WHERE dstetr_art='URL'" & andstr & orderBy2) DGV.Add(New cDienstDGV(arrUrl(i), datum, "URL")) ', getDienstDetails("URL", "von"), getDienstDetails("URL", "bis"))) getDGV(arrKS(i)).DataSource = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info,dstma_id,dstma_arbvh, dstetr_von,dstetr_bis,dstma_stammSchicht, dstetr_info,dstma_reihenfolge, dstma_farbe,dstetr_pause FROM tblDienstplanEintraege,tblDienstMitarb,tblMitarbeiter WHERE dstetr_art='KS'" & andstr & orderBy2) DGV.Add(New cDienstDGV(arrKS(i), datum, "KS")) ', getDienstDetails("KS", "von"), getDienstDetails("KS", "bis"))) getDGV(arrDR(i)).DataSource = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info,dstma_id,dstma_arbvh, dstetr_von,dstetr_bis,dstma_stammSchicht, dstetr_info,dstma_reihenfolge, dstma_farbe,dstetr_pause FROM tblDienstplanEintraege,tblDienstMitarb,tblMitarbeiter WHERE (dstetr_art='DR' OR dstetr_art='BS')" & andstr & orderBy2) DGV.Add(New cDienstDGV(arrDR(i), datum, "DR")) ', getDienstDetails("DR", "von"), getDienstDetails("DR", "bis"))) getDGV(arrFrei(i)).DataSource = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info,dstma_id,dstma_arbvh, dstetr_von,dstetr_bis,dstma_stammSchicht, dstetr_info,dstma_reihenfolge, dstma_farbe,dstetr_pause FROM tblDienstplanEintraege,tblDienstMitarb,tblMitarbeiter WHERE dstetr_art='FREI'" & andstr & orderBy2) DGV.Add(New cDienstDGV(arrFrei(i), datum, "FREI")) ', getDienstDetails("FREI", "von"), getDienstDetails("FREI", "bis"))) getDGV(arrZA(i)).DataSource = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info,dstma_id,dstma_arbvh, dstetr_von,dstetr_bis,dstma_stammSchicht, dstetr_info,dstma_reihenfolge, dstma_farbe,dstetr_pause FROM tblDienstplanEintraege,tblDienstMitarb,tblMitarbeiter WHERE dstetr_art='ZA'" & andstr & orderBy2) DGV.Add(New cDienstDGV(arrZA(i), datum, "ZA")) ', getDienstDetails("ZA", "von"), getDienstDetails("ZA", "bis"))) datum = datum.AddDays(1) Next ' MsgBox("t5") initDGVVerhalten() initStdMa() clearAllSelection() initAusslastung() initAnzahl() initDetails(True) If markId > 0 Then markNamesinDGV(markId) End If If pnl.Controls.Count > 0 Then DirectCast(pnl.Controls(0), usrcntlDienstplanStunden).loaded = True End Sub Sub initStdMa() Dim usrcntl As New usrcntlDienstplanStunden(aktWoche, aktJahr, niederlassung, SCHICHT) ' usrcntl.initStdMa() pnl.Controls.Clear() pnl.Controls.Add(usrcntl) AddHandler usrcntl.NAME_CHANGED, Sub(id) markNamesinDGV(id) End Sub DirectCast(pnl.Controls(0), usrcntlDienstplanStunden).initStdMa() End Sub Private Sub frmDienstplan_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.PageDown) Then Button7.PerformClick() End If If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.PageUp) Then Button6.PerformClick() End If End Sub Sub initAnzahl() lblAnzZoll1_Mo.Text = dgvZoll1_Mo.RowCount lblAnzZoll1_Di.Text = dgvZoll1_Di.RowCount lblAnzZoll1_Mi.Text = dgvZoll1_Mi.RowCount lblAnzZoll1_Do.Text = dgvZoll1_Do.RowCount lblAnzZoll1_Fr.Text = dgvZoll1_Fr.RowCount lblAnzZoll1_Sa.Text = dgvZoll1_Sa.RowCount lblAnzZoll1_So.Text = dgvZoll1_So.RowCount lblAnzZoll2_Mo.Text = dgvZoll2_Mo.RowCount lblAnzZoll2_Di.Text = dgvZoll2_Di.RowCount lblAnzZoll2_Mi.Text = dgvZoll2_Mi.RowCount lblAnzZoll2_Do.Text = dgvZoll2_Do.RowCount lblAnzZoll2_Fr.Text = dgvZoll2_Fr.RowCount lblAnzZoll2_Sa.Text = dgvZoll2_Sa.RowCount lblAnzZoll2_So.Text = dgvZoll2_So.RowCount lblAnzZollTag_Mo.Text = dgvZollTag_Mo.RowCount lblAnzZollTag_Di.Text = dgvZollTag_Di.RowCount lblAnzZollTag_Mi.Text = dgvZollTag_Mi.RowCount lblAnzZollTag_Do.Text = dgvZollTag_Do.RowCount lblAnzZollTag_Fr.Text = dgvZollTag_Fr.RowCount lblAnzZollTag_Sa.Text = dgvZollTag_Sa.RowCount lblAnzZollTag_So.Text = dgvZollTag_So.RowCount lblAnzQS_Mo.Text = dgvNACHT_Mo.RowCount lblAnzQS_Di.Text = dgvNACHT_Di.RowCount lblAnzQS_Mi.Text = dgvNACHT_Mi.RowCount lblAnzQS_Do.Text = dgvNACHT_Do.RowCount lblAnzQS_Fr.Text = dgvNACHT_Fr.RowCount lblAnzQS_Sa.Text = dgvNACHT_Sa.RowCount lblAnzQS_So.Text = dgvNACHT_So.RowCount End Sub Sub initAusslastung() Dim maxMaZoll As Integer = 18 Dim maxMaQS As Integer = 11 lblAuslastMaZoll_Mo.Text = CInt((dgvZoll1_Mo.RowCount + dgvZoll2_Mo.RowCount + dgvZollTag_Mo.RowCount) / (maxMaZoll / 100)) & " %" lblAuslastMaZoll_Di.Text = CInt((dgvZoll1_Di.RowCount + dgvZoll2_Di.RowCount + dgvZollTag_Di.RowCount) / (maxMaZoll / 100)) & " %" lblAuslastMaZoll_Mi.Text = CInt((dgvZoll1_Mi.RowCount + dgvZoll2_Mi.RowCount + dgvZollTag_Mi.RowCount) / (maxMaZoll / 100)) & " %" lblAuslastMaZoll_Do.Text = CInt((dgvZoll1_Do.RowCount + dgvZoll2_Do.RowCount + dgvZollTag_Do.RowCount) / (maxMaZoll / 100)) & " %" lblAuslastMaZoll_Fr.Text = CInt((dgvZoll1_Fr.RowCount + dgvZoll2_Fr.RowCount + dgvZollTag_Fr.RowCount) / (maxMaZoll / 100)) & " %" lblAuslastMaZoll_Sa.Text = CInt((dgvZoll1_Sa.RowCount + dgvZoll2_Sa.RowCount + dgvZollTag_Sa.RowCount) / (maxMaZoll / 100)) & " %" lblAuslastMaZoll_So.Text = CInt((dgvZoll1_So.RowCount + dgvZoll2_So.RowCount + dgvZollTag_So.RowCount) / (maxMaZoll / 100)) & " %" lblAuslastMaQS_Mo.Text = CInt(dgvNACHT_Mo.RowCount / (maxMaQS / 100)) & " %" lblAuslastMaQS_Di.Text = CInt(dgvNACHT_Di.RowCount / (maxMaQS / 100)) & " %" lblAuslastMaQS_Mi.Text = CInt(dgvNACHT_Mi.RowCount / (maxMaQS / 100)) & " %" lblAuslastMaQS_Do.Text = CInt(dgvNACHT_Do.RowCount / (maxMaQS / 100)) & " %" lblAuslastMaQS_Fr.Text = CInt(dgvNACHT_Fr.RowCount / (maxMaQS / 100)) & " %" lblAuslastMaQS_Sa.Text = CInt(dgvNACHT_Sa.RowCount / (maxMaQS / 100)) & " %" lblAuslastMaQS_So.Text = CInt(dgvNACHT_So.RowCount / (maxMaQS / 100)) & " %" End Sub Function getDGV(s) As DataGridView Return DirectCast(Me.Controls.Find(s, True)(0), DataGridView) End Function Sub initWeekInfo() Dim dStart As Date = CalendarWeek(aktWoche, aktJahr) Label1.Text = dStart & " - " & dStart.AddDays(6) lblKW.Text = "KW " & aktWoche If EvenNumber() = False Then Panel3.BackColor = Color.Firebrick ' Panel4.BackColor = Color.Firebrick Label12.ForeColor = Color.White Label15.ForeColor = Color.White SCHICHT = "ROT" Else Panel3.BackColor = System.Drawing.Color.FromArgb(0, 60, 120) ' Panel4.BackColor = System.Drawing.Color.FromArgb(0, 60, 120) Label12.ForeColor = Color.White Label15.ForeColor = Color.White SCHICHT = "BLAU" End If If EvenNumber2() = False Then SCHICHT &= "1" Else SCHICHT &= "2" End If 'Private SCHICHT2 = "1" Dim datum As Date = dStart For i = 0 To 6 Select Case week(datum.DayOfWeek) Case "MO" : lblMo.Text = week(datum.DayOfWeek) & " " & datum.ToShortDateString Case "DI" : lblDi.Text = week(datum.DayOfWeek) & " " & datum.ToShortDateString Case "MI" : lblMi.Text = week(datum.DayOfWeek) & " " & datum.ToShortDateString Case "DO" : lblDo.Text = week(datum.DayOfWeek) & " " & datum.ToShortDateString Case "FR" : lblFr.Text = week(datum.DayOfWeek) & " " & datum.ToShortDateString Case "SA" : lblSa.Text = week(datum.DayOfWeek) & " " & datum.ToShortDateString Case "SO" : lblSo.Text = week(datum.DayOfWeek) & " " & datum.ToShortDateString End Select datum = datum.AddDays(1) Next End Sub Public Function EvenNumber() As Boolean Dim RefDate As Date = CDate("01.08.2015") Dim wD As Long = DateDiff(DateInterval.Weekday, aktDate, RefDate) EvenNumber = (wD And 1&) = 0& End Function Public Function EvenNumber2() As Boolean Dim RefDate As Date = CDate("01.08.2015") Dim wD As Long = DateDiff(DateInterval.Weekday, aktDate, RefDate) EvenNumber2 = (wD And 2&) = 0& End Function Private Sub frmDienstplan_Load(sender As Object, e As EventArgs) Handles Me.Load Me.Cursor = Cursors.WaitCursor txtKWYear.Text = Now.Year aktWoche = DateToWeek(aktDate).Substring(4, 2) aktJahr = DateToWeek(aktDate).Substring(0, 4) For Each c In Panel1.Controls If TypeOf c Is DataGridView Then DirectCast(c, DataGridView).RowTemplate.Height = 15 End If Next For Each c In Panel3.Controls If TypeOf c Is DataGridView Then DirectCast(c, DataGridView).RowTemplate.Height = 15 End If Next For Each c In Panel4.Controls If TypeOf c Is DataGridView Then DirectCast(c, DataGridView).RowTemplate.Height = 15 End If Next initWeekInfo() initDienstplan() ' Dim l As New List(Of Control) ' l.Add(Panel3.Controls) Me.Cursor = Cursors.Default End Sub Sub initDGVVerhalten() Try For Each datagridview As cDienstDGV In DGV Dim d As DataGridView = getDGV(datagridview.dgvName) AddHandler d.MouseDown, AddressOf handleDGVContextMenue AddHandler d.LostFocus, AddressOf remHandlerKey AddHandler d.MouseClick, AddressOf handleDGVClick If False Then ' d.ColumnCount = 0 Then Dim col As New DataGridViewTextBoxColumn col.DataPropertyName = "dstetr_id" col.HeaderText = "dstetr_id" col.Name = "dstetr_id" d.Columns.Add(col) Dim col2 As New DataGridViewTextBoxColumn col2.DataPropertyName = "Name" col2.HeaderText = "Name" col2.Name = "Name" d.Columns.Add(col2) End If For Each r As DataGridViewRow In d.Rows ' MsgBox(r.Cells(1).Value) If r.Cells(6).Value = "ZOLL1" Then r.Cells(1).Style.BackColor = System.Drawing.Color.FromArgb(255, 230, 230) If r.Cells(6).Value = "ZOLL2" Then r.Cells(1).Style.BackColor = System.Drawing.Color.FromArgb(230, 255, 255) If r.Cells(6).Value = "NACHT" Then r.Cells(1).Style.BackColor = System.Drawing.Color.FromArgb(255, 255, 230) If r.Cells(6).Value = "" Then r.Cells(1).Style.BackColor = System.Drawing.Color.FromArgb(255, 255, 255) Next setDGV(d) ' AddHandler d.DragDrop, AddressOf dgv_DragDrop ' AddHandler d.DragEnter, AddressOf dgv_DragEnter AddHandler d.Leave, AddressOf dgv_clearSelection d.Columns(1).Width = d.Width - 20 Next Catch ex As Exception MsgBox("initDGVVerhalten-Error: " & ex.Message) End Try End Sub Sub setDGV(dgv As DataGridView) With dgv .AllowUserToAddRows = False .AllowUserToDeleteRows = False .AllowUserToOrderColumns = False .AllowUserToResizeColumns = False .AllowUserToResizeRows = False .RowHeadersVisible = False .ColumnHeadersVisible = False .RowTemplate.Height = 15 If .ColumnCount > 0 Then .Columns(0).Visible = False If .ColumnCount > 2 Then For i = 2 To .ColumnCount - 1 .Columns(i).Visible = False Next End If End With initDGV(dgv) End Sub Sub initDGV(dgv As DataGridView) For Each r As DataGridViewRow In dgv.Rows If r.Cells(3).Value = "TZ" Then ' r.Cells(1).Style.ForeColor = Color.Blue r.Cells(1).Style.ForeColor = ColorTranslator.FromHtml(r.Cells(9).Value) End If Next End Sub Sub clearAllSelection() markId = -1 For Each datagridview As cDienstDGV In dgv Dim dgv As DataGridView = getDGV(datagridview.dgvName) dgv.ClearSelection() initDGV(dgv) Next TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" Button9.Visible = False Label32.Text = "-" lblMAInfo.Text = "-" aktMitarbeiterEintrag = "" End Sub Function getDienstDetails(abt, s) As String For Each d In DienstDetails If d.dedet_abt = abt Then If s = "von" Then Return d.dedet_von If s = "bis" Then Return d.dedet_bis If s = "pause" Then Return d.dedet_pause End If Next Return "" End Function Private Sub PaintLeft(e As PaintEventArgs) ' If Not isDrawn Then isDrawn = True Dim z As Graphics z = e.Graphics z.Clear(Color.White) ' Dim f_red As New Font("Arial", 8) Dim myDT As DateTime = DateTime.Now Dim myCal As Calendar = CultureInfo.InvariantCulture.Calendar Dim lastMonth As DateTime = myCal.AddMonths(myDT, -1) Dim nextMonth As DateTime = myCal.AddMonths(myDT, 1) Dim dayOWeak As Array = {"So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"} Dim monthOYear As Array = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"} Dim Mitarbeiter As Array = {"Luxbauer Johann", "Siener Josef", "Luxbauer Andreas"} Dim format As New StringFormat(StringFormatFlags.DirectionRightToLeft) Dim cnt_mitarb As Integer = 0 For Each m In Mitarbeiter z.DrawString(m, f_black, Brushes.Black, New Rectangle(20, scr_top + 5 + (cnt_mitarb * 20), 160, 20), format) cnt_mitarb += 1 Next z.DrawString("", f_black, Brushes.Black, New Rectangle(20, scr_top + 25, 160, 20), format) End Sub Public Function DateToWeek(ByVal dDate As Date) As String ' Startdatum der ersten Kalenderwoche des Jahres und Folgejahres berechnen Dim dThisYear As Date = CalendarWeek(1, dDate.Year) Dim dNextYear As Date = CalendarWeek(1, dDate.Year + 1) ' Prüfen, ob Datum zur ersten Woche des Folgejahres gehört If dDate >= dNextYear Then ' Rückgabe: KW 1 des Folgejahres Return dDate.Year + 1 & "01" ElseIf dDate < dThisYear Then ' Falls das Datum noch zu einer KW aus dem letzten Jahr zählt Return dDate.Year - 1 & DatePart(DateInterval.WeekOfYear, _ New Date(dDate.Year - 1, 12, 28), FirstDayOfWeek.Monday, _ FirstWeekOfYear.FirstFourDays) Else ' KW = Differenz zum ersten Tag der ersten Woche Return dDate.Year & Format$(dDate.Subtract(dThisYear).Days \ 7 + 1, "00") End If End Function Public Function CalendarWeek(ByVal nWeek As Integer, _ ByVal nYear As Integer) As Date ' Wochentag des 4. Januar des Jahres ermitteln Dim dStart As New Date(nYear, 1, 4) Dim nDay As Integer = (dStart.DayOfWeek + 6) Mod 7 + 1 ' Beginn der 1. KW des Jahres Dim dFirst As Date = dStart.AddDays(1 - nDay) ' Gesuchte KW ermitteln Return dFirst.AddDays((nWeek - 1) * 7) End Function Private Sub PaintThis(e As PaintEventArgs) ' If Not isDrawn Then isDrawn = True Dim z As Graphics z = e.Graphics z.Clear(Color.White) ' Dim f_red As New Font("Arial", 8) Dim myDT As DateTime = DateTime.Now Dim myCal As Calendar = CultureInfo.InvariantCulture.Calendar Dim lastMonth As DateTime = myCal.AddMonths(myDT, -1) Dim nextMonth As DateTime = myCal.AddMonths(myDT, 1) Dim dayOWeak As Array = {"So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"} Dim monthOYear As Array = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"} ' Dim Mitarbeiter As Array = {"Luxbauer Johann", "Siener Josef", "Luxbauer Andreas"} ' Dim format As New StringFormat(StringFormatFlags.DirectionRightToLeft) ' Dim cnt_mitarb As Integer = 0 ' For Each m In Mitarbeiter 'z.DrawString(m, f_black, Brushes.Black, New Rectangle(20, scr_top + 5 + (cnt_mitarb * 20), 160, 20), Format) ' cnt_mitarb += 1 ' Next ' z.DrawString("", f_black, Brushes.Black, New Rectangle(20, scr_top + 25, 160, 20), Format) ' Dim lastMonth As DateTime = myCal.AddMonths(myDT, -1) Dim daysLastM As Integer = myCal.GetDaysInMonth(myCal.GetYear(lastMonth), myCal.GetMonth(lastMonth)) Dim daysThisM As Integer = myCal.GetDaysInMonth(myCal.GetYear(myDT), myCal.GetMonth(myDT)) Dim daysNextM As Integer = myCal.GetDaysInMonth(myCal.GetYear(nextMonth), myCal.GetMonth(nextMonth)) Dim greyBrush As New SolidBrush(Color.LightGray) z.FillRectangle(greyBrush, scr_left, scr_top - 50, (daysLastM + daysThisM + daysNextM) * 20, 20) z.DrawRectangle(stift, scr_left, scr_top - 50, daysLastM * 20, 20) 'Rahmen lastMonth z.DrawRectangle(stift, scr_left, scr_top - 50, (daysLastM + daysThisM) * 20, 20) 'Rahmen myCal z.DrawRectangle(stift, scr_left, scr_top - 50, (daysLastM + daysThisM + daysNextM) * 20, 20) 'Rahmen nextMonth z.DrawString(monthOYear(myCal.GetMonth(lastMonth) - 1), f_black, Brushes.Black, scr_left + daysLastM * 20 / 2, 2) z.DrawString(monthOYear(myCal.GetMonth(myDT) - 1), f_black_bold, Brushes.Black, scr_left + daysLastM * 20 + daysThisM * 20 / 2, 2) z.DrawString(monthOYear(myCal.GetMonth(nextMonth) - 1), f_black, Brushes.Black, scr_left + daysLastM * 20 + daysThisM * 20 + daysNextM * 20 / 2, 2) z.DrawRectangle(stift, 0, 0, 1800 + scr_left, 500 + scr_top) 'Rahmen z.FillRectangle(blueBrush, scr_left, scr_top - 30, 90 * 20, 30) Dim arrayDays(daysLastM + daysThisM + daysNextM) As Date Dim cnt As Integer = 0 'lastMonth zeichnen: For i As Integer = 0 To daysLastM - 1 z.DrawRectangle(stift, scr_left + i * 20, scr_top - 30, 20, 30) Dim b As Brush : Dim d As New DateTime(myCal.GetYear(lastMonth), myCal.GetMonth(lastMonth), i + 1) Dim dow As String = dayOWeak(myCal.GetDayOfWeek(d)) If dow = "Sa" Or dow = "So" Then b = Brushes.Red Else b = Brushes.Black z.DrawString(dow & vbNewLine & (i + 1), f_black, b, scr_left + i * 20, scr_top - 30) arrayDays(cnt) = d : cnt += 1 Next 'thisMonth zeichnen: For i As Integer = 0 To daysThisM - 1 z.DrawRectangle(stift, scr_left + i * 20, scr_top - 30, 20, 30) Dim b As Brush : Dim d As New DateTime(myCal.GetYear(myDT), myCal.GetMonth(myDT), i + 1) Dim dow As String = dayOWeak(myCal.GetDayOfWeek(d)) If dow = "Sa" Or dow = "So" Then b = Brushes.Red Else b = Brushes.Black Dim f As Font = f_black : If (i + 1) = myCal.GetDayOfMonth(myDT) Then f = f_black_bold z.DrawString(dow & vbNewLine & (i + 1), f, b, scr_left + (daysLastM + i) * 20, scr_top - 30) arrayDays(cnt) = d : cnt += 1 Next 'nextMonth zeichnen: For i As Integer = 0 To daysNextM - 1 z.DrawRectangle(stift, scr_left + i * 20, scr_top - 30, 20, 30) Dim b As Brush : Dim d As New DateTime(myCal.GetYear(nextMonth), myCal.GetMonth(nextMonth), i + 1) Dim dow As String = dayOWeak(myCal.GetDayOfWeek(d)) If dow = "Sa" Or dow = "So" Then b = Brushes.Red Else b = Brushes.Black z.DrawString(dow & vbNewLine & (i + 1), f_black, b, scr_left + (daysLastM + daysThisM + i) * 20, scr_top - 30) arrayDays(cnt) = d : cnt += 1 Next 'Raster zeichnen: For j As Integer = 0 To 20 For i As Integer = 0 To 90 z.DrawRectangle(stift, scr_left + i * 20, scr_top + j * 20, 20, 20) Next Next insertUrlaub(z, New DateTime(2015, 3, 15), New DateTime(2015, 4, 18), arrayDays, 0) insertUrlaub(z, New DateTime(2015, 4, 1), New DateTime(2015, 4, 10), arrayDays, 2) End Sub Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles PictureBox2.Paint PaintThis(e) End Sub Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Paint PaintLeft(e) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Panel2.AutoScrollPosition = New Point(Panel2.HorizontalScroll.Value + 20, 0) End Sub Private Sub insertUrlaub(z As Graphics, startDate As DateTime, endDate As DateTime, arrayDays() As DateTime, Zeile As Integer) ' Dim startDate As New DateTime(2015, 3, 15) ' Dim endDate As New DateTime(2015, 4, 18) Dim x_start As Integer : Dim x_end As Integer If arrayDays(arrayDays.Count - 1) < endDate Then x_start = arrayDays.Count * 20 + 20 If arrayDays(0) > startDate Then x_start = 0 Dim diff As Integer For i As Integer = 0 To arrayDays.Count - 1 If arrayDays(i) = startDate Then x_start = i * 20 : diff = i If arrayDays(i) = endDate Then x_end = (i - diff) * 20 + 20 Next z.FillRectangle(greenBrush, scr_left + x_start, scr_top + (Zeile * 20), x_end, 20) z.DrawRectangle(stift, scr_left + x_start, scr_top + (Zeile * 20), x_end, 20) End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Panel2.AutoScrollPosition = New Point(Panel2.HorizontalScroll.Value - 20, 0) End Sub Private Sub handleDGVClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Try Dim thisDgv As DataGridView = DirectCast(sender, DataGridView) Dim row As DataGridViewRow = thisDgv.CurrentRow setDetails(row.Cells("dstetr_id").Value) 'NULL??????? Catch ex As Exception clearAllSelection() End Try End Sub Public entryId_TMP As Integer = -1 Sub setDetails(entryId) Try entryId_TMP = entryId Dim row As DataRow = SQLDienst.loadDGV("SELECT dstetr_id, dstma_kuerzel + ' '+ dstetr_info as dstma_kuerzel,dstetr_info,dstma_id, dstetr_von,dstetr_bis,dstetr_art,dstetr_pause,dstetr_datum FROM tblDienstplanEintraege, tblDienstMitarb, tblMitarbeiter WHERE dstetr_dstmaId=dstma_id AND mit_id=dstma_mitId AND dstetr_id='" & entryId & "'").Rows(0) TextBox1.Text = row("dstetr_von").ToString TextBox2.Text = row("dstetr_bis").ToString TextBox3.Text = row("dstetr_info").ToString TextBox4.Text = row("dstetr_pause").ToString Label32.Text = CDate(row("dstetr_datum")).ToShortDateString lblMAInfo.Text = row("dstma_kuerzel").ToString aktMitarbeiterEintrag = row("dstetr_id").ToString ' If row("dstetr_art").ToString.Contains("NACHT") Then Button9.Visible = True markNamesinDGV(row("dstma_id").ToString) If pnl.Controls.Count > 0 Then DirectCast(pnl.Controls(0), usrcntlDienstplanStunden).markrow(row("dstma_id").ToString) End If ' For Each r In dgvStundenMa.Rows 'If r.Cells("dstma_id").value = thisDgv.CurrentRow.Cells(2).Value Then 'r.DefaultCellStyle.Font = New Font(thisDgv.Font, FontStyle.Bold) ' End If ' Next Catch ex As Exception MsgBox(ex.Message) End Try End Sub Sub markNamesinDGV(id) markId = id ' clearBlackFont() If pnl.Controls.Count > 0 Then DirectCast(pnl.Controls(0), usrcntlDienstplanStunden).clearRowBg() DirectCast(pnl.Controls(0), usrcntlDienstplanStunden).markrow(id) End If For Each d In DGV For Each r As DataGridViewRow In getDGV(d.dgvName).Rows If r.Cells(2).Value = id Then 'r.Cells(1).Style.Font.Style = FontStyle.Bold Dim style As New DataGridViewCellStyle ' style.Font = New Font(dataGridView1.Font, FontStyle.Bold) r.DefaultCellStyle.Font = New Font(r.DataGridView.Font, FontStyle.Bold) Else r.DefaultCellStyle.Font = New Font(r.DataGridView.Font, FontStyle.Regular) End If Next Next End Sub Private Sub handleDGVContextMenue(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) 'Handles dgvZoll1_Mo.MouseDown Dim thisDgv As DataGridView = DirectCast(sender, DataGridView) Dim ht As DataGridView.HitTestInfo ht = thisDgv.HitTest(e.X, e.Y) If ht.Type = DataGridViewHitTestType.Cell Then thisDgv.ContextMenuStrip = ctxtDgv If thisDgv.SelectedCells.Count = 0 Then thisDgv.CurrentCell = thisDgv(ht.ColumnIndex, ht.RowIndex) thisDgv.CurrentCell.Selected = True End If End If If e.Button = Windows.Forms.MouseButtons.Right Then ' Dim ht As DataGridView.HitTestInfo ' ht = thisDgv.HitTest(e.X, e.Y) If ht.Type = DataGridViewHitTestType.Cell Then thisDgv.ContextMenuStrip = ctxtDgv ctiSchicht1.Enabled = True : ctiSchicht2.Enabled = True : ctiDbl.Enabled = True : ctiQS.Enabled = True ctiZollTag.Enabled = True : ctiUrlaub.Enabled = True : ctiKrankenstand.Enabled = True : ctiWocheSchichtWechsel.Enabled = False Select Case week(CDate((getValuesDienstDGV(thisDgv.Name, "datum"))).DayOfWeek) Case "SO" : ctiSchicht1.Enabled = False : ctiDbl.Enabled = False ctiQS.Enabled = False : ctiZollTag.Enabled = False : ctiUrlaub.Enabled = False : ctiKrankenstand.Enabled = False Case "SA" : ctiDbl.Enabled = False ctiZollTag.Enabled = False : ctiUrlaub.Enabled = False : ctiKrankenstand.Enabled = False ' ctiSchicht2.Enabled = False Case Else Select Case getValuesDienstDGV(thisDgv.Name, "abt") Case "ZOLL_VM" : ctiWocheSchichtWechsel.Enabled = True Case "ZOLL_NM" : ctiWocheSchichtWechsel.Enabled = True Case Else : ctiWocheSchichtWechsel.Enabled = False End Select End Select If thisDgv.SelectedCells.Count <= 1 Then thisDgv.CurrentCell = thisDgv(ht.ColumnIndex, ht.RowIndex) thisDgv.CurrentCell.Selected = True End If ' ctxtDgvSchicht1.Items(0).Text = String.Format("This is the cell at {0}, {1}", ht.ColumnIndex, ht.RowIndex) End If Else RemoveHandler DirectCast(sender, DataGridView).KeyDown, AddressOf changeByKey AddHandler thisDgv.KeyDown, AddressOf changeByKey 'MsgBox(dgv.Name) Exit Sub ' kein dragdrop Dim info As DataGridView.HitTestInfo = thisDgv.HitTest(e.X, e.Y) If info.RowIndex >= 0 Then Dim row As DataGridViewRow = thisDgv.Rows(info.RowIndex) thisDgv.DoDragDrop(row, DragDropEffects.All) End If End If End Sub Sub changeByKey(sender As Object, e As KeyEventArgs) Dim dgv As DataGridView = DirectCast(sender, DataGridView) If dgv.SelectedCells.Count > 0 Then ' Case "SO" : ctiSchicht1.Enabled = False : ctiDbl.Enabled = False : ctiQS.Enabled = False : ctiZollTag.Enabled = False : ctiUrlaub.Enabled = False : ctiKrankenstand.Enabled = False ' Case "SA" : ctiSchicht2.Enabled = False : ctiDbl.Enabled = False : ctiZollTag.Enabled = False : ctiUrlaub.Enabled = False : ctiKrankenstand.Enabled = False Dim d As Date = CDate(getValuesDienstDGV(dgv.Name, "datum")) Select Case week(CDate(getValuesDienstDGV(dgv.Name, "datum")).DayOfWeek) Case "SA" Select Case e.KeyCode Case Keys.V : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "ZOLL_VM")) Case Keys.N : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "ZOLL_NM")) Case Keys.Q : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "NACHT")) Case Keys.F : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "FREI")) Case Keys.S : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "DR")) End Select Case "SO" Select Case e.KeyCode Case Keys.N : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "ZOLL_NM")) Case Keys.T : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "ZOLL_TAG")) Case Keys.F : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "FREI")) Case Keys.S : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "DR")) End Select Case Else Select Case e.KeyCode Case Keys.V : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "ZOLL_VM")) Case Keys.N : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "ZOLL_NM")) Case Keys.T : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "ZOLL_TAG")) Case Keys.Q : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "NACHT")) Case Keys.U : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "URL")) Case Keys.F : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "FREI")) Case Keys.K : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "KS")) Case Keys.S : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "DR")) Case Keys.Z : changeDGV(dgv, getDgvByDatArt(getValuesDienstDGV(dgv.Name, "datum"), "ZA")) End Select End Select End If End Sub Sub remHandlerKey(sender As Object, e As EventArgs) RemoveHandler DirectCast(sender, DataGridView).KeyDown, AddressOf changeByKey End Sub Sub clearBlackFont() markId = -1 For Each d In DGV For Each r As DataGridViewRow In getDGV(d.dgvName).Rows r.DefaultCellStyle.Font = New Font(r.DataGridView.Font, FontStyle.Regular) Next Next If pnl.Controls.Count > 0 Then DirectCast(pnl.Controls(0), usrcntlDienstplanStunden).clearRowBg() End If 'For Each r In dgvStundenMa.Rows 'r.DefaultCellStyle.Font = New Font(dgvStundenMa.Font, FontStyle.Regular) 'Next End Sub Private Sub dgv_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) e.Effect = DragDropEffects.All End Sub Private Sub dgv_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Dim row As DataGridViewRow = TryCast(e.Data.GetData(GetType(DataGridViewRow)), DataGridViewRow) If row IsNot Nothing Then Try changeDGV(row.DataGridView, DirectCast(sender, DataGridView)) Catch ex As Exception MessageBox.Show("dgv_DragDrop-Error: " & ex.Message) End Try End If End Sub Function getValuesDienstDGV(dgvname, s) For Each d In DGV If d.dgvName = dgvname Then If s = "abt" Then Return d.dgvAbteilung If s = "von" Then Return d.dgvVon If s = "bis" Then Return d.dgvBis If s = "datum" Then Return d.dgvDatum End If Next Return "" End Function Function alreadyExists(d As DataGridView, s As String) As Boolean For Each r As DataGridViewRow In d.Rows If r.Cells(2).Value.ToString = s Then Return True Next Return False End Function Function removeRow(d As DataGridView, id As String) As Boolean Try For Each r As DataGridViewRow In d.Rows If r.Cells(0).Value.ToString = id Then d.Rows.RemoveAt(r.Index) : Return True Next Catch ex As Exception End Try Return False End Function Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click If vbYes = MsgBox("Möchten Sie wirklich neu initialisieren?" & vbNewLine & "(Dabei gehen alle Änderungen in dieser Woche verloren)", vbYesNoCancel) Then initALL() End If End Sub Public Sub initALL(Optional MAID As Integer = -1) 'MsgBox("init" & MAID, MAID) Me.Cursor = Cursors.WaitCursor ' Me.Enabled = False Dim dStart As Date = CalendarWeek(aktWoche, aktJahr) Label1.Text = dStart & " - " & dStart.AddDays(6) Dim montag As Date = CalendarWeek(aktWoche, aktJahr) Dim sonntag As Date = montag.AddDays(6) Dim cDienstAbwesendheiten As List(Of cDienstAbwesendheiten) = SQLDienst.getDienstAbwesendheiten(montag, sonntag, niederlassung) Dim ma As List(Of cDienstMA) = Nothing If MAID > 0 Then ma = SQLDienst.getAllDienstMA(niederlassung, montag, " AND dstma_id = " & MAID) Else If Not SQLDienst.delDstEintraege(montag, sonntag, niederlassung) Then Exit Sub 'Alle löschen ma = SQLDienst.getAllDienstMA(niederlassung, montag) End If ' If SQLDienst.delDstEintraege(montag, sonntag, niederlassung) Then ' Dim ma As List(Of cDienstMA) = SQLDienst.getAllDienstMA(niederlassung) Dim datum As Date = montag For i = 1 To 7 Dim FT As New cFeiertage(datum.Year) 'Evtl Jahressprung, darum neu definieren For Each m In ma Dim eintrag As New cDienstEintrag eintrag.dstetr_dstmaId = m.dstma_id eintrag.dstetr_datum = datum If Not FT.isFeiertag(datum, cDienstSettings.getLand(niederlassung)) Then If m.dstma_muster Then ' MsgBox("HIER") Dim tz As List(Of cDienstTeilzeit) = SQLDienst.getAllDienstTeilzeit(m.dstma_id) eintrag.dstetr_art = getFromTeilzeit("abt", tz, datum, SCHICHT, m.dstma_4wo) If eintrag.dstetr_art = "" Then eintrag.dstetr_art = "FREI" Else ' MsgBox(getFromTeilzeit("von", tz, datum, SCHICHT) & " _ " & getFromTeilzeit("bis", tz, datum, SCHICHT)) eintrag.dstetr_von = getFromTeilzeit("von", tz, datum, SCHICHT, m.dstma_4wo) eintrag.dstetr_bis = getFromTeilzeit("bis", tz, datum, SCHICHT, m.dstma_4wo) eintrag.dstetr_pause = getFromTeilzeit("pause", tz, datum, SCHICHT, m.dstma_4wo) eintrag.dstetr_grund = "" eintrag.dstetr_info = "" ' MsgBox(eintrag.dstetr_art) eintrag.dstetr_art = getFromTeilzeit("abt", tz, datum, SCHICHT, m.dstma_4wo) ' SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung) End If Else If m.dstma_arbvh = "VZ" Then If week(datum.DayOfWeek) = "SA" Or week(datum.DayOfWeek) = "SO" Then eintrag.dstetr_art = "FREI" Else eintrag.dstetr_art = getSchichtArt(m.dstma_abteilung, m.dstma_stammSchicht, datum) End If eintrag.dstetr_von = getDefaultTimeBySchicht(eintrag.dstetr_art, "von", week(datum.DayOfWeek).ToUpper) eintrag.dstetr_bis = getDefaultTimeBySchicht(eintrag.dstetr_art, "bis", week(datum.DayOfWeek).ToUpper) eintrag.dstetr_pause = getDefaultTimeBySchicht(eintrag.dstetr_art, "pause", week(datum.DayOfWeek).ToUpper) eintrag.dstetr_grund = "" eintrag.dstetr_info = "" ' SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung) Else 'TEILZEIT eintrag.dstetr_art = "FREI" eintrag.dstetr_von = "00:00" eintrag.dstetr_bis = "00:00" eintrag.dstetr_pause = "0" eintrag.dstetr_grund = "" eintrag.dstetr_info = "" ' SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung) End If End If Else 'FEIERTAG eintrag.dstetr_art = "FREI" eintrag.dstetr_von = "00:00" eintrag.dstetr_bis = "00:00" eintrag.dstetr_pause = "0" eintrag.dstetr_grund = "" eintrag.dstetr_info = "" ' SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung) End If 'Abwesenheiten prüfen: For Each d In cDienstAbwesendheiten If d.dstna_mitId = eintrag.dstetr_dstmaId AndAlso d.dstna_datum_von <= datum And d.dstna_datum_bis >= datum Then eintrag.dstetr_art = d.dstna_grund If week(datum.DayOfWeek) = "SA" Or week(datum.DayOfWeek) = "SO" Then eintrag.dstetr_art = "FREI" End If eintrag.dstetr_von = getDefaultTimeBySchicht(d.dstna_grund, "von", week(datum.DayOfWeek).ToUpper) eintrag.dstetr_bis = getDefaultTimeBySchicht(d.dstna_grund, "bis", week(datum.DayOfWeek).ToUpper) eintrag.dstetr_pause = getDefaultTimeBySchicht(d.dstna_grund, "pause", week(datum.DayOfWeek).ToUpper) End If Next SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung) Next datum = datum.AddDays(1) Next ' End If Me.Enabled = True initDienstplan() Me.Cursor = Cursors.Default End Sub Function getFromTeilzeit(switch, tz, datum, dienstplan, dp4wo) As String For Each t As cDienstTeilzeit In tz Dim isSchicht = False If dp4wo Then If dienstplan = t.dsttz_dienstplan Then isSchicht = True Else If dienstplan.contains("ROT") And t.dsttz_dienstplan.Contains("ROT") Then isSchicht = True If dienstplan.contains("BLAU") And t.dsttz_dienstplan.Contains("BLAU") Then isSchicht = True End If If t.dsttz_wotag = week(datum.DayOfWeek) And isSchicht Then If switch = "von" Then Return t.dsttz_von If switch = "bis" Then Return t.dsttz_bis If switch = "pause" Then Return t.dsttz_pause If switch = "abt" Then If t.dsttz_abt = "ZOLL1" Then Return "ZOLL_VM" If t.dsttz_abt = "ZOLL2" Then Return "ZOLL_NM" Return t.dsttz_abt ' If False Then 'If t.dsttz_abt = "ZOLL1" Then 'If SCHICHT.ToString.StartsWith("ROT") Then Return "ZOLL_VM" Else Return "ZOLL_NM" 'End If 'If t.dsttz_abt = "ZOLL2" Then 'If SCHICHT.ToString.StartsWith("ROT") Then Return "ZOLL_NM" Else Return "ZOLL_VM" ' End If 'If t.dsttz_abt = "ZOLL_TAG" Then 'If SCHICHT.ToString.StartsWith("ROT") Then Return "ZOLL_NM" Else Return "ZOLL_TAG" 'End If 'If t.dsttz_abt = "NACHT" Then Return "NACHT" ' End If End If End If Next Return "" End Function Public Function getSchichtArt(abteilung, stammschicht, datum) Dim s1 = "" Dim s2 = "" If stammschicht = "ZOLL TAG" Then Return "ZOLL_TAG" If abteilung = "NACHT" Then Return abteilung If niederlassung = "SUB" Or niederlassung = "ATILLA" Then If SCHICHT.ToString.StartsWith("ROT") Then Select Case week(datum.DayOfWeek) Case "MO", "MI", "FR" s1 = "ZOLL_NM" s2 = "ZOLL_VM" Case "DI", "DO" s2 = "ZOLL_NM" s1 = "ZOLL_VM" End Select Else Select Case week(datum.DayOfWeek) Case "MO", "MI", "FR" s2 = "ZOLL_NM" s1 = "ZOLL_VM" Case "DI", "DO" s1 = "ZOLL_NM" s2 = "ZOLL_VM" End Select End If Else s1 = "ZOLL_VM" s2 = "ZOLL_NM" End If If stammschicht = "ZOLL1" Then Return s1 If stammschicht = "ZOLL2" Then Return s2 Return "" End Function Public Function getDefaultTimeBySchicht(abteilung, vonOrBis, woTag) abteilung = abteilung.ToString.Replace("ZOLL_VM", "ZOLL1") abteilung = abteilung.ToString.Replace("ZOLL_NM", "ZOLL2") Dim d As cDienstDetails = SQLDienst.getDienstDetailsWoTagByArtAndWoTag(niederlassung, abteilung, woTag) If vonOrBis = "von" Then If d.dedet_von <> "" Then Return d.dedet_von Else : Return "00:00" : End If If vonOrBis = "bis" Then If d.dedet_bis <> "" Then Return d.dedet_bis Else : Return "00:00" : End If If vonOrBis = "pause" Then Return d.dedet_pause : End If Return "" End Function Private Sub dgv_clearSelection(sender As Object, e As EventArgs) DirectCast(sender, DataGridView).ClearSelection() ' TextBox1.Text = "" ' TextBox2.Text = "" End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Dim txt As String = Button4.Text Button4.Text = txt & " (0 %)" Me.Cursor = Cursors.WaitCursor Dim exclApp As Object 'as Application Dim Datei As Object 'as WorkBook Dim Blatt As Object 'as WorkSheet exclApp = CreateObject("Excel.Application") ' Dim nWeek As Integer ' nWeek = DatePart(DateInterval.WeekOfYear, New Date(2004, 3, 22), _ ' FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFourDays) If Not My.Computer.FileSystem.DirectoryExists(Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\tmp\") Then My.Computer.FileSystem.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\tmp\") End If Dim strFileName As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\tmp\tmp.xlsx" Try With exclApp .Visible = False Datei = .Workbooks.Open(AppDomain.CurrentDomain.BaseDirectory & "Resources\DienstplanATILLA.xlsx") 'WordDoc.Activate() ' MsgBox(AppDomain.CurrentDomain.BaseDirectory & "Resources\Dienstplan.xlsx") ' .Visible = True ' Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\Dienstplan\" ' My.Computer.FileSystem.GetTempFileName ' If Not My.Computer.FileSystem.DirectoryExists(sPath) Then 'My.Computer.FileSystem.CreateDirectory(sPath) ' End If ' ' Try 'My.Computer.FileSystem.WriteAllBytes(sPath & "Auswertung.xlsx", My.Resources, False) 'System.IO.File.Copy("C:\Users\DEVELOPER1\Desktop\Dienstplan.xlsx", sPath & "Dienstplan.xlsx", True) 'Catch ex As Exception 'MsgBox(ex.Message) ' Exit Sub 'End Try 'Datei = .Workbooks.Open(sPath & "Dienstplan.xlsx") 'Anpassen Blatt = Datei.Worksheets("DIENSTPLAN") Dim d As Date = CalendarWeek(aktWoche, aktJahr) Blatt.Range("B2").Value = "MONTAG, " & d.ToString("dd.MMM") : d = d.AddDays(1) Blatt.Range("D2").Value = "DIENSTAG, " & d.ToString("dd.MMM") : d = d.AddDays(1) Blatt.Range("F2").Value = "MITTWOCH, " & d.ToString("dd.MMM") : d = d.AddDays(1) Blatt.Range("H2").Value = "DONNERSTAG, " & d.ToString("dd.MMM") : d = d.AddDays(1) Blatt.Range("J2").Value = "FREITAG, " & d.ToString("dd.MMM") : d = d.AddDays(1) Blatt.Range("O2").Value = "SA, " & d.ToString("dd.MMM") : d = d.AddDays(1) Blatt.Range("P2").Value = "SO, " & d.ToString("dd.MMM") If SCHICHT.ToString.StartsWith("ROT") Then Blatt.Range("A4").Font.Color = Color.Red Blatt.Range("H1").Font.Color = Color.Red Blatt.Range("H1").value = "ROT" Else Blatt.Range("A4").Font.Color = Color.Blue Blatt.Range("H1").Font.Color = Color.Blue Blatt.Range("H1").value = "BLAU" End If Blatt.Range("A4").Value = aktWoche Button4.Text = txt & " (10 %)" 'MONTAG Dim zoll1Mo(20) As String For i = 0 To 19 : zoll1Mo(i) = "B" & i + 14 : Next Dim zoll2Mo(20) As String For i = 0 To 19 : zoll2Mo(i) = "C" & i + 14 : Next Dim zollTagMo(6) As String For i = 0 To 2 : zollTagMo(i) = "B" & i + 34 : Next For i = 0 To 2 : zollTagMo(i + 3) = "C" & i + 34 : Next Dim NACHTMo1(6) As String For i = 0 To 2 : NACHTMo1(i) = "B" & i + 37 : Next ' Dim NACHTMo2(11) As String For i = 0 To 2 : NACHTMo1(i + 3) = "C" & i + 37 : Next Dim ZAMo(10) As String For i = 0 To 4 : ZAMo(i) = "B" & i + 40 : Next For i = 0 To 4 : ZAMo(i + 5) = "C" & i + 40 : Next Dim UrlMo(6) As String For i = 0 To 2 : UrlMo(i) = "B" & i + 45 : Next For i = 0 To 2 : UrlMo(i + 3) = "C" & i + 45 : Next Dim SOMo(4) As String For i = 0 To 1 : SOMo(i) = "B" & i + 48 : Next For i = 0 To 1 : SOMo(i + 2) = "C" & i + 48 : Next Dim KSMo(6) As String For i = 0 To 2 : KSMo(i) = "B" & i + 50 : Next For i = 0 To 2 : KSMo(i + 3) = "C" & i + 50 : Next Blatt = fill(dgvZoll1_Mo, zoll1Mo, Blatt) Blatt = fill(dgvZoll2_Mo, zoll2Mo, Blatt) Blatt = fill(dgvZollTag_Mo, zollTagMo, Blatt) Blatt = fill(dgvNACHT_Mo, NACHTMo1, Blatt) Blatt = fill(dgvZA_Mo, ZAMo, Blatt) Blatt = fill(dgvUrl_Mo, UrlMo, Blatt) Blatt = fill(dgvDR_Mo, SOMo, Blatt) Blatt = fill(dgvKS_Mo, KSMo, Blatt) Button4.Text = txt & " (25 %)" 'DIENSTAG Dim zoll1Di(20) As String For i = 0 To 19 : zoll1Di(i) = "D" & i + 14 : Next Dim zoll2Di(20) As String For i = 0 To 19 : zoll2Di(i) = "E" & i + 14 : Next Dim zollTagDi(6) As String For i = 0 To 2 : zollTagDi(i) = "D" & i + 34 : Next For i = 0 To 2 : zollTagDi(i + 3) = "E" & i + 34 : Next Dim NACHTDi1(6) As String For i = 0 To 2 : NACHTDi1(i) = "D" & i + 37 : Next ' Dim NACHTDi2(11) As String For i = 0 To 2 : NACHTDi1(i + 3) = "E" & i + 37 : Next Dim ZADi(10) As String For i = 0 To 4 : ZADi(i) = "D" & i + 40 : Next For i = 0 To 4 : ZADi(i + 5) = "E" & i + 40 : Next Dim UrlDi(6) As String For i = 0 To 2 : UrlDi(i) = "D" & i + 45 : Next For i = 0 To 2 : UrlDi(i + 3) = "E" & i + 45 : Next Dim SODi(4) As String For i = 0 To 1 : SODi(i) = "D" & i + 48 : Next For i = 0 To 1 : SODi(i + 2) = "E" & i + 48 : Next Dim KSDi(6) As String For i = 0 To 2 : KSDi(i) = "D" & i + 50 : Next For i = 0 To 2 : KSDi(i + 3) = "E" & i + 50 : Next Blatt = fill(dgvZoll1_Di, zoll1Di, Blatt) Blatt = fill(dgvZoll2_Di, zoll2Di, Blatt) Blatt = fill(dgvZollTag_Di, zollTagDi, Blatt) Blatt = fill(dgvNACHT_Di, NACHTDi1, Blatt) Blatt = fill(dgvZA_Di, ZADi, Blatt) Blatt = fill(dgvUrl_Di, UrlDi, Blatt) Blatt = fill(dgvDR_Di, SODi, Blatt) Blatt = fill(dgvKS_Di, KSDi, Blatt) Button4.Text = txt & " (40 %)" 'MITTWOCH Dim zoll1Mi(20) As String For i = 0 To 19 : zoll1Mi(i) = "F" & i + 14 : Next Dim zoll2Mi(20) As String For i = 0 To 19 : zoll2Mi(i) = "G" & i + 14 : Next Dim zollTagMi(6) As String For i = 0 To 2 : zollTagMi(i) = "F" & i + 34 : Next For i = 0 To 2 : zollTagMi(i + 3) = "G" & i + 34 : Next Dim NACHTMi1(6) As String For i = 0 To 2 : NACHTMi1(i) = "F" & i + 37 : Next ' Dim NACHTMi2(11) As String For i = 0 To 2 : NACHTMi1(i + 3) = "G" & i + 37 : Next Dim ZAMi(10) As String For i = 0 To 4 : ZAMi(i) = "F" & i + 40 : Next For i = 0 To 4 : ZAMi(i + 5) = "G" & i + 40 : Next Dim UrlMi(6) As String For i = 0 To 2 : UrlMi(i) = "F" & i + 45 : Next For i = 0 To 2 : UrlMi(i + 3) = "G" & i + 45 : Next Dim SOMi(4) As String For i = 0 To 1 : SOMi(i) = "F" & i + 48 : Next For i = 0 To 1 : SOMi(i + 2) = "G" & i + 48 : Next Dim KSMi(6) As String For i = 0 To 2 : KSMi(i) = "F" & i + 50 : Next For i = 0 To 2 : KSMi(i + 3) = "G" & i + 50 : Next Blatt = fill(dgvZoll1_Mi, zoll1Mi, Blatt) Blatt = fill(dgvZoll2_Mi, zoll2Mi, Blatt) Blatt = fill(dgvZollTag_Mi, zollTagMi, Blatt) Blatt = fill(dgvNACHT_Mi, NACHTMi1, Blatt) Blatt = fill(dgvZA_Mi, ZAMi, Blatt) Blatt = fill(dgvUrl_Mi, UrlMi, Blatt) Blatt = fill(dgvDR_Mi, SOMi, Blatt) Blatt = fill(dgvKS_Mi, KSMi, Blatt) Button4.Text = txt & " (55 %)" 'DONNERSTAG Dim zoll1Do(20) As String For i = 0 To 19 : zoll1Do(i) = "H" & i + 14 : Next Dim zoll2Do(20) As String For i = 0 To 19 : zoll2Do(i) = "I" & i + 14 : Next Dim zollTagDo(6) As String For i = 0 To 2 : zollTagDo(i) = "H" & i + 34 : Next For i = 0 To 2 : zollTagDo(i + 3) = "I" & i + 34 : Next Dim NACHTDo1(6) As String For i = 0 To 2 : NACHTDo1(i) = "H" & i + 37 : Next ' Dim NACHTDo2(11) As String For i = 0 To 2 : NACHTDo1(i + 3) = "I" & i + 37 : Next Dim ZADo(10) As String For i = 0 To 4 : ZADo(i) = "H" & i + 40 : Next For i = 0 To 4 : ZADo(i + 5) = "I" & i + 40 : Next Dim UrlDo(6) As String For i = 0 To 2 : UrlDo(i) = "H" & i + 45 : Next For i = 0 To 2 : UrlDo(i + 3) = "I" & i + 45 : Next Dim SODo(4) As String For i = 0 To 1 : SODo(i) = "H" & i + 48 : Next For i = 0 To 1 : SODo(i + 2) = "I" & i + 48 : Next Dim KSDo(6) As String For i = 0 To 2 : KSDo(i) = "H" & i + 50 : Next For i = 0 To 2 : KSDo(i + 3) = "I" & i + 50 : Next Blatt = fill(dgvZoll1_Do, zoll1Do, Blatt) Blatt = fill(dgvZoll2_Do, zoll2Do, Blatt) Blatt = fill(dgvZollTag_Do, zollTagDo, Blatt) Blatt = fill(dgvNACHT_Do, NACHTDo1, Blatt) Blatt = fill(dgvZA_Do, ZADo, Blatt) Blatt = fill(dgvUrl_Do, UrlDo, Blatt) Blatt = fill(dgvDR_Do, SODo, Blatt) Blatt = fill(dgvKS_Do, KSDo, Blatt) Button4.Text = txt & " (70 %)" 'FREITAG Dim zoll1Fr(20) As String For i = 0 To 19 : zoll1Fr(i) = "J" & i + 14 : Next Dim zoll2Fr(20) As String For i = 0 To 19 : zoll2Fr(i) = "L" & i + 14 : Next Dim zollTagFr(6) As String For i = 0 To 2 : zollTagFr(i) = "J" & i + 34 : Next For i = 0 To 2 : zollTagFr(i + 3) = "L" & i + 34 : Next Dim NACHTFr1(6) As String For i = 0 To 2 : NACHTFr1(i) = "J" & i + 37 : Next ' Dim NACHTFr2(11) As String For i = 0 To 2 : NACHTFr1(i + 3) = "L" & i + 37 : Next Dim ZAFr(10) As String For i = 0 To 4 : ZAFr(i) = "J" & i + 40 : Next For i = 0 To 4 : ZAFr(i + 5) = "L" & i + 40 : Next Dim UrlFr(6) As String For i = 0 To 2 : UrlFr(i) = "J" & i + 45 : Next For i = 0 To 2 : UrlFr(i + 3) = "L" & i + 45 : Next Dim SOFr(4) As String For i = 0 To 1 : SOFr(i) = "J" & i + 48 : Next For i = 0 To 1 : SOFr(i + 2) = "L" & i + 48 : Next Dim KSFr(6) As String For i = 0 To 2 : KSFr(i) = "J" & i + 50 : Next For i = 0 To 2 : KSFr(i + 3) = "L" & i + 50 : Next Blatt = fill(dgvZoll1_Fr, zoll1Fr, Blatt) Blatt = fill(dgvZoll2_Fr, zoll2Fr, Blatt) Blatt = fill(dgvZollTag_Fr, zollTagFr, Blatt) Blatt = fill(dgvNACHT_Fr, NACHTFr1, Blatt) Blatt = fill(dgvZA_Fr, ZAFr, Blatt) Blatt = fill(dgvUrl_Fr, UrlFr, Blatt) Blatt = fill(dgvDR_Fr, SOFr, Blatt) Blatt = fill(dgvKS_Fr, KSFr, Blatt) Button4.Text = txt & " (80 %)" 'SAMSTAG Dim zoll1Sa(20) As String For i = 0 To 19 : zoll1Sa(i) = "O" & i + 14 : Next Dim zollTagSa(3) As String For i = 0 To 2 : zollTagSa(i) = "O" & i + 34 : Next ' Dim zoll2Sa(14) As String ' For i = 0 To 13 : zoll2Sa(i) = "L" & i + 14 : Next Dim NACHTSa1(3) As String For i = 0 To 2 : NACHTSa1(i) = "O" & i + 37 : Next ' Dim NACHTSa2(11) As String ' For i = 0 To 2 : NACHTSa2(i) = "L" & i + 31 : Next Dim ZASa(5) As String For i = 0 To 4 : ZASa(i) = "O" & i + 40 : Next ' For i = 0 To 3: ZAFr(i + 3) = "L" & i + 40 : Next Dim UrlSa(3) As String For i = 0 To 2 : UrlSa(i) = "O" & i + 45 : Next ' For i = 0 To 2 : UrlSa(i + 4) = "L" & i + 45 : Next Dim SOSa(2) As String For i = 0 To 1 : SOSa(i) = "O" & i + 48 : Next 'For i = 0 To 2 : SOSa(i + 3) = "L" & i + 48 : Next Dim KSSa(3) As String For i = 0 To 2 : KSSa(i) = "O" & i + 50 : Next ' For i = 0 To 2 : KSSa(i + 3) = "L" & i + 50 : Next Blatt = fill(dgvZoll1_Sa, dgvZoll2_Sa, zoll1Sa, Blatt) 'Blatt = fill(dgvZoll2_Sa, zoll1Sa, Blatt) 'Blatt = fill(dgvZollTag_Sa, zollTagSa, Blatt) Blatt = fill(dgvNACHT_Sa, NACHTSa1, Blatt) Blatt = fill(dgvZA_Sa, ZASa, Blatt) Blatt = fill(dgvUrl_Sa, UrlSa, Blatt) Blatt = fill(dgvDR_Sa, SOSa, Blatt) Blatt = fill(dgvKS_Sa, KSSa, Blatt) Button4.Text = txt & " (90 %)" 'SONNTAG ' Dim zoll1So(14) As String ' For i = 0 To 13 : zoll1So(i) = "Q" & i + 14 : Next Dim zoll2So(20) As String For i = 0 To 19 : zoll2So(i) = "P" & i + 14 : Next Dim zollTagSo(3) As String For i = 0 To 2 : zollTagSo(i) = "P" & i + 34 : Next ' Dim zoll2So(14) As String ' For i = 0 To 13 : zoll2So(i) = "L" & i + 14 : Next Dim NACHTSo1(3) As String For i = 0 To 2 : NACHTSo1(i) = "P" & i + 37 : Next ' Dim NACHTSo2(11) As String ' For i = 0 To 2 : NACHTSo2(i) = "L" & i + 31 : Next Dim ZASo(5) As String For i = 0 To 4 : ZASo(i) = "P" & i + 40 : Next ' For i = 0 To 3: ZAFr(i + 3) = "L" & i + 40 : Next Dim UrlSo(3) As String For i = 0 To 2 : UrlSo(i) = "P" & i + 45 : Next ' For i = 0 To 2 : UrlSo(i + 4) = "L" & i + 45 : Next Dim SOSo(2) As String For i = 0 To 1 : SOSo(i) = "P" & i + 48 : Next 'For i = 0 To 2 : SOSo(i + 3) = "L" & i + 48 : Next Dim KSSo(3) As String For i = 0 To 2 : KSSo(i) = "P" & i + 50 : Next ' For i = 0 To 2 : KSSo(i + 3) = "L" & i + 50 : Next ' Blatt = fill(dgvZoll1_So, zoll1So, Blatt) Blatt = fill(dgvZoll2_So, zoll2So, Blatt, "SO") ' Blatt = fill(dgvZollTag_So, zollTagSo, Blatt) Blatt = fill(dgvNACHT_So, NACHTSo1, Blatt) Blatt = fill(dgvZA_So, ZASo, Blatt) Blatt = fill(dgvUrl_So, UrlSo, Blatt) Blatt = fill(dgvDR_So, SOSo, Blatt) Blatt = fill(dgvKS_So, KSSo, Blatt) Button4.Text = txt & " (100 %)" .Visible = True .DisplayAlerts = Word.WdAlertLevel.wdAlertsNone Try : Datei.SaveAs(strFileName) : Catch : End Try End With Catch ex As Exception MsgBox(ex.Message) End Try Me.Cursor = Cursors.Default Button4.Text = txt End Sub Function fillQS(dgv As DataGridView, s1() As String, s2() As String, mestan As String, Blatt As Excel.Worksheet) As Excel.Worksheet With dgv Dim cnt1 As Integer = 0 Dim cnt2 As Integer = 0 If .RowCount > 0 Then Dim cnt As Integer = 0 For i = 0 To .RowCount - 1 Dim r As DataGridViewRow = .Rows(i) ' MsgBox("DGV: " & dgv.Name & " RAGNE: " & s(i) & " VALUE: " & r.Cells(1).Value) If r.Cells(1).Value.ToString.Contains("AKPINAR") Then Try : Blatt.Range(mestan).Value = r.Cells(1).Value : Catch : End Try ElseIf r.Cells(4).Value = "10:00" And r.Cells(5).Value = "19:00" Then Try : Blatt.Range(s2(cnt2)).Value = r.Cells(1).Value : cnt2 += 1 : Catch : End Try Else Try : Blatt.Range(s1(cnt1)).Value = r.Cells(1).Value : cnt1 += 1 : Catch : End Try End If Next End If End With Return Blatt End Function Function fill(dgv As DataGridView, s() As String, Blatt As Excel.Worksheet, Optional dayOweek As String = "") As Excel.Worksheet With dgv If .RowCount > 0 Then Dim cnt As Integer = 0 For i = 0 To .RowCount - 1 Dim r As DataGridViewRow = .Rows(i) 'MsgBox("DGV: " & dgv.Name & " RAGNE: " & s(i) & " VALUE: " & r.Cells(1).Value) Try If r.Cells(1).Style.ForeColor <> Color.Black Then Blatt.Range(s(i)).Font.Color = ColorTranslator.FromHtml(r.Cells(9).Value) Catch ex As Exception : MsgBox(ex.Message) : End Try Try : Blatt.Range(s(i)).Value = r.Cells(1).Value : Catch ex As Exception : MsgBox(ex.Message) : End Try If dayOweek = "SO" Then Try : Blatt.Range(s(i)).Font.Color = Color.Red : Catch ex As Exception : MsgBox(ex.Message) : End Try End If If dayOweek <> "SO" And i = 0 And (dgv.Name.Contains("Zoll1") Or dgv.Name.Contains("Zoll2")) Then Blatt.Range(s(i)).Value = Blatt.Range(s(i)).Value & " (SL)" Dim start As Integer = Blatt.Range(s(i)).Value.ToString.Length - 2 Blatt.Range(s(i)).Characters(Start:=start, Length:=2).Font.Color = Color.Red End If Next End If End With Return Blatt End Function Function fill(dgv As DataGridView, dgv2 As DataGridView, s() As String, Blatt As Excel.Worksheet, Optional dayOweek As String = "") As Excel.Worksheet Dim j = 0 With dgv If .RowCount > 0 Then Dim cnt As Integer = 0 For i = 0 To .RowCount - 1 Dim r As DataGridViewRow = .Rows(i) 'MsgBox("DGV: " & dgv.Name & " RAGNE: " & s(i) & " VALUE: " & r.Cells(1).Value) Try If r.Cells(1).Style.ForeColor <> Color.Black Then Blatt.Range(s(j)).Font.Color = ColorTranslator.FromHtml(r.Cells(9).Value) Catch ex As Exception : MsgBox(ex.Message) : End Try Try : Blatt.Range(s(j)).Value = r.Cells(1).Value : Catch ex As Exception : MsgBox(ex.Message) : End Try If dayOweek = "SO" Then Try : Blatt.Range(s(j)).Font.Color = Color.Red : Catch ex As Exception : MsgBox(ex.Message) : End Try End If If dayOweek <> "SO" And i = 0 And (.Name.Contains("Zoll1") Or .Name.Contains("Zoll2")) Then Blatt.Range(s(j)).Value = Blatt.Range(s(j)).Value & " (SL)" Dim start As Integer = Blatt.Range(s(j)).Value.ToString.Length - 2 Blatt.Range(s(j)).Characters(Start:=start, Length:=2).Font.Color = Color.Red End If j += 1 Next End If End With With dgv2 If .RowCount > 0 Then Dim cnt As Integer = 0 For i = 0 To .RowCount - 1 Dim r As DataGridViewRow = .Rows(i) 'MsgBox("DGV: " & dgv.Name & " RAGNE: " & s(i) & " VALUE: " & r.Cells(1).Value) Try If r.Cells(1).Style.ForeColor <> Color.Black Then Blatt.Range(s(j)).Font.Color = ColorTranslator.FromHtml(r.Cells(9).Value) Catch ex As Exception : MsgBox(ex.Message) : End Try Try : Blatt.Range(s(j)).Value = r.Cells(1).Value : Catch ex As Exception : MsgBox(ex.Message) : End Try j += 1 Next End If End With Return Blatt End Function Private Sub Schicht2ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ctiZollTag.Click, ctiDbl.Click, ctiSchicht1.Click, ctiSchicht2.Click, ctiKrankenstand.Click, ctiQS.Click, ctiFrei.Click, ctiDienstreise.Click, ctiUrlaub.Click, ctiWocheSchichtWechsel.Click, ctiBemWo.Click, ZeitausgleichToolStripMenuItem.Click, NormaldienstToolStripMenuItem.Click, _ ctiZVMLaenger.Click, ctiZNMLaenger.Click ' Dim a As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem) Dim dgv_tmp As DataGridView = DirectCast(sender.owner.SourceControl, DataGridView) Dim vm = "ZOLL2" : If SCHICHT.ToString.StartsWith("ROT") Then vm = "ZOLL1" Dim nm = "ZOLL1" : If SCHICHT.ToString.StartsWith("BLAU") Then vm = "ZOLL2" Select Case sender.Name Case "ctiSchicht1" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "ZOLL_VM")) Case "ctiSchicht2" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "ZOLL_NM")) Case "ctiZollTag" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "ZOLL_TAG")) Case "ctiKrankenstand" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "KS")) Case "ctiQS" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "NACHT")) Case "ctiFrei" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "FREI")) Case "ctiDienstreise" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "DR")) Case "ctiUrlaub" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "URL")) Case "ctiDbl" changeDGVToDBL(dgv_tmp) Case "ctiWocheSchichtWechsel" changeDGVWoSchicht(dgv_tmp) Case "ctiBemWo" changeDGVWoBemerkung(dgv_tmp) Case "ZeitausgleichToolStripMenuItem" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "ZA")) Case "NormaldienstToolStripMenuItem" initALL(dgv_tmp.CurrentRow.Cells("dstma_id").Value) Case "ctiZVMLaenger" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "ZOLL_VM"), "06:00", "16:00", 0, " 06-16") Case "ctiZNMLaenger" changeDGV(dgv_tmp, getDgvByDatArt(getValuesDienstDGV(dgv_tmp.Name, "datum"), "ZOLL_NM"), "16:00", "01:00", 0, " 16-01") End Select End Sub Sub changeDGVToDBL(dgv_sender As DataGridView) Me.Cursor = Cursors.WaitCursor Try Dim arr As DataGridViewSelectedCellCollection = dgv_sender.SelectedCells For Each c As DataGridViewCell In arr Dim r As DataGridViewRow = c.OwningRow Dim von = getDefaultTimeBySchicht("DBL", "von", CDate(getValuesDienstDGV(dgv_sender.Name, "datum")).ToString("ddd", New CultureInfo("de-DE")).ToUpper) Dim bis = getDefaultTimeBySchicht("DBL", "bis", CDate(getValuesDienstDGV(dgv_sender.Name, "datum")).ToString("ddd", New CultureInfo("de-DE")).ToUpper) Dim pause = getDefaultTimeBySchicht("DBL", "pause", CDate(getValuesDienstDGV(dgv_sender.Name, "datum")).ToString("ddd", New CultureInfo("de-DE")).ToUpper) SQLDienst.updateDienstEintragArtChange(r.Cells(0).Value, getValuesDienstDGV(dgv_sender.Name, "datum"), "DBL", von, bis, pause) Next initDienstplan() Catch ex As Exception MessageBox.Show("changeDGVToDBL-Error: " & ex.Message) End Try Me.Cursor = Cursors.Default End Sub Sub changeDGVWoSchicht(dgv_sender As DataGridView) Me.Cursor = Cursors.WaitCursor Try If dgv_sender.SelectedCells.Count = 1 Then Dim maId = dgv_sender.CurrentRow.Cells(2).Value Dim montag As Date = CalendarWeek(aktWoche, aktJahr) For i = 0 To 4 Dim datum = montag.AddDays(i) Dim abt = "" Select Case SQLDienst.getSchichtOnDate(maId, datum) Case "ZOLL_VM" : abt = "ZOLL_NM" Case "ZOLL_NM" : abt = "ZOLL_VM" End Select If abt <> "" Then Dim von As String = getDefaultTimeBySchicht(abt, "von", datum.ToString("ddd", New CultureInfo("de-DE")).ToUpper) Dim bis As String = getDefaultTimeBySchicht(abt, "bis", datum.ToString("ddd", New CultureInfo("de-DE")).ToUpper) Dim pause As String = getDefaultTimeBySchicht(abt, "pause", datum.ToString("ddd", New CultureInfo("de-DE")).ToUpper) SQLDienst.updateDienstEintragArtChangeByDstMaId(maId, datum, abt, von, bis, "", pause) End If Next Else MsgBox("Bei dieser Funktion muss genau ein Mitarbeiter auswegählt sein!") End If initDienstplan() Catch ex As Exception MessageBox.Show("changeDGVWoSchicht-Error: " & ex.Message) End Try Me.Cursor = Cursors.Default End Sub Sub changeDGVWoBemerkung(dgv_sender As DataGridView) Me.Cursor = Cursors.WaitCursor Try If dgv_sender.SelectedCells.Count = 1 Then Dim maId = dgv_sender.CurrentRow.Cells(2).Value Dim montag As Date = CalendarWeek(aktWoche, aktJahr) Dim input = InputBox("Bitte geben Sie eine Bemerkung ein:", "Bemerkung ändern") If input <> "" Then SQLDienst.updateDienstBemerkungChange(maId, montag, montag.AddDays(4), input, niederlassung) Else MsgBox("Keine Bemerkung angegeben!") End If Else MsgBox("Bei dieser Funktion muss genau ein Mitarbeiter auswegählt sein!") End If initDienstplan() Catch ex As Exception MessageBox.Show("changeDGVWoBemerkung-Error: " & ex.Message) End Try Me.Cursor = Cursors.Default End Sub Sub checkMaTageIfTeilzeit(maId) Dim dMa As cDienstMA = SQLDienst.getDstMAByDstMaId(maId) If dMa.dstma_arbvh = "TZ" Then Dim daysEintrag = SQLDienst.getCountDays(maId, CalendarWeek(aktWoche, aktJahr), CalendarWeek(aktWoche, aktJahr).AddDays(6)) If dMa.dstma_TageProWoche >= 0 And daysEintrag > dMa.dstma_TageProWoche Then MsgBox(dMa.dstma_kuerzel & " wurde " & daysEintrag & " Mal eingetragen (Standard: " & dMa.dstma_TageProWoche & " Tage)!", vbInformation) End If End If End Sub Sub changeDGV(dgv_sender As DataGridView, dgv_receiver As DataGridView) Me.Cursor = Cursors.WaitCursor Try If dgv_sender IsNot Nothing And dgv_receiver IsNot Nothing Then If Not dgv_sender.Name = dgv_receiver.Name Then If getValuesDienstDGV(dgv_receiver.Name, "datum") = getValuesDienstDGV(dgv_sender.Name, "datum") Then Dim arr As DataGridViewSelectedCellCollection = dgv_sender.SelectedCells For Each c As DataGridViewCell In arr Dim r As DataGridViewRow = c.OwningRow 'If Not alreadyExists(dgv_receiver, r.Cells(2).Value) Then Dim datum As Date = Date.Parse(getValuesDienstDGV(dgv_receiver.Name, "datum")) Dim abt As String = getValuesDienstDGV(dgv_receiver.Name, "abt") Dim von = getDefaultTimeBySchicht(abt, "von", datum.ToString("ddd", New CultureInfo("de-DE")).ToUpper) Dim bis = getDefaultTimeBySchicht(abt, "bis", datum.ToString("ddd", New CultureInfo("de-DE")).ToUpper) Dim pause = getDefaultTimeBySchicht(abt, "pause", datum.ToString("ddd", New CultureInfo("de-DE")).ToUpper) SQLDienst.updateDienstEintragArtChange(r.Cells(0).Value, datum.ToShortDateString, abt, von, bis, pause) If abt.Contains("ZOLL") Or abt = "NACHT" And r.Cells("dstma_arbvh").Value = "TZ" Then checkMaTageIfTeilzeit(r.Cells("dstma_id").Value) End If Next initDienstplan() End If End If End If Catch ex As Exception MessageBox.Show("changeDGV-Error: " & ex.Message) End Try Me.Cursor = Cursors.Default End Sub Sub changeDGV(dgv_sender As DataGridView, dgv_receiver As DataGridView, von As String, bis As String, pause As Double, info As String) Me.Cursor = Cursors.WaitCursor Try 'If dgv_sender IsNot Nothing And dgv_receiver IsNot Nothing Then ' If Not dgv_sender.Name = dgv_receiver.Name Then If getValuesDienstDGV(dgv_receiver.Name, "datum") = getValuesDienstDGV(dgv_sender.Name, "datum") Then Dim arr As DataGridViewSelectedCellCollection = dgv_sender.SelectedCells For Each c As DataGridViewCell In arr Dim r As DataGridViewRow = c.OwningRow 'If Not alreadyExists(dgv_receiver, r.Cells(2).Value) Then Dim datum As Date = Date.Parse(getValuesDienstDGV(dgv_receiver.Name, "datum")) Dim abt As String = getValuesDienstDGV(dgv_receiver.Name, "abt") ' If von = "" Then von = getDefaultTimeBySchicht(abt, "von", datum.ToString("ddd", New CultureInfo("de-DE")).ToUpper) ' If bis = "" Then bis = getDefaultTimeBySchicht(abt, "bis", datum.ToString("ddd", New CultureInfo("de-DE")).ToUpper) ' If pause < 0 Then pause = getDefaultTimeBySchicht(abt, "pause", datum.ToString("ddd", New CultureInfo("de-DE")).ToUpper) SQLDienst.updateDienstEintragArtChange(r.Cells(0).Value, datum.ToShortDateString, abt, von, bis, pause) If info <> "" Then SQLDienst.updateDienstEintragInfo(r.Cells(0).Value, info) If abt.Contains("ZOLL") Or abt = "NACHT" And r.Cells("dstma_arbvh").Value = "TZ" Then checkMaTageIfTeilzeit(r.Cells("dstma_id").Value) End If Next initDienstplan() End If 'End If ' End If Catch ex As Exception MessageBox.Show("changeDGV-Error: " & ex.Message) End Try Me.Cursor = Cursors.Default End Sub Function getDgvByDatArt(datum, art) As DataGridView For Each d As cDienstDGV In DGV If d.dgvDatum = datum And d.dgvAbteilung = art Then Return getDGV(d.dgvName) Next Return Nothing End Function Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click AbwesenheitEintragen("URL") Exit Sub Dim frmDiestEintrag As New frmDiestEintrag frmDiestEintrag.niederlassung = niederlassung frmDiestEintrag.art = "URL" frmDiestEintrag.Show() End Sub Private Sub AbwesenheitEintragen(grund) ' MsgBox(e.ColumnIndex & " : " & e.RowIndex) If markId < 0 Then MsgBox("Mitarbeiter auswählen!") : Exit Sub Dim frmUrlKW As New frmUrlKW Dim art = "" frmUrlKW.KW = aktWoche frmUrlKW.YEAR = aktJahr 'Dim kw As Integer = dgvUrlaub.Rows(e.RowIndex).Cells(e.ColumnIndex).Tag ' Dim maId = markId Dim ll As List(Of cDienstAbwesendheitenKW) = SQLDienst.getDienstAbwesendheitenKWByArt(aktWoche, markId, aktJahr, niederlassung, grund) ' Dim ll As List(Of cDienstAbwesendheitenKW) = DP.getDienstAbwesendheitenKW(kw, aktJahr, niederlassung) ' MsgBox(e.ColumnIndex - 1) If ll.Count = 1 Then frmUrlKW.KW_ID = ll(0).dstnk_id ' frmUrlKW.KW_ID = ll(0).dstnk_grund ElseIf ll.Count > 1 Then Dim frmDienstAuswahl As New frmDienstAuswahl frmDienstAuswahl.list = ll frmDienstAuswahl.ShowDialog(Me) frmUrlKW.KW_ID = frmDienstAuswahl.kw_id End If frmUrlKW.maId = markId frmUrlKW.niederlassung = niederlassung frmUrlKW.ShowDialog(Me) If frmUrlKW.RESULT <> "" Then initALL(markId) End If End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click Me.Cursor = Cursors.WaitCursor aktDate = aktDate.AddDays(7) aktWoche = DateToWeek(aktDate).Substring(4, 2) aktJahr = DateToWeek(aktDate).Substring(0, 4) initWeekInfo() initDienstplan() txtKWYear.Text = aktDate.Year Me.Cursor = Cursors.Default End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click Me.Cursor = Cursors.WaitCursor aktDate = aktDate.AddDays(-7) aktWoche = DateToWeek(aktDate).Substring(4, 2) aktJahr = DateToWeek(aktDate).Substring(0, 4) initWeekInfo() initDienstplan() txtKWYear.Text = aktDate.Year Me.Cursor = Cursors.Default End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click Me.Cursor = Cursors.WaitCursor 'MsgBox(dgvZoll1_Mo.Rows(0).Cells(2).Value) Try If TextBox1.Text = "" Then Throw New Exception If TextBox2.Text = "" Then Throw New Exception If Not IsNumeric(TextBox4.Text) Then Throw New Exception If TextBox4.Text > 3 Or TextBox4.Text < 0 Then MsgBox("Die Pause darf nicht größer als 3 Stunden sein!") : Throw New Exception If cbxChangeForWo.Checked Then 'für ganze Woche Try Dim montag As Date = CalendarWeek(aktWoche, aktJahr) Dim maid = SQLDienst.getMaIdByEtrId(aktMitarbeiterEintrag) If maid <> "" Then SQLDienst.updateDienstEintragVonBisBemWOCHEChangeByMitId(CInt(maid), montag, montag.AddDays(4), TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, niederlassung) End If Catch ex As Exception MsgBox(ex.Message) End Try Else 'für diesen Eintrag SQLDienst.updateDienstEintragArtBemerkungChange(aktMitarbeiterEintrag, TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text) End If cbxChangeForWo.Checked = False Catch ex As Exception MsgBox("Fehler beim Speichern des Eintrages.") End Try 'Where dsteintr_id=aktMitarbeiterEintrag initDienstplan() setDetails(entryId_TMP) Me.Cursor = Cursors.Default End Sub Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click TextBox1.Text = "10:00" TextBox2.Text = "19:00" End Sub Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click AbwesenheitEintragen("KS") Exit Sub Dim frmDiestEintrag As New frmDiestEintrag frmDiestEintrag.niederlassung = niederlassung frmDiestEintrag.art = "KS" frmDiestEintrag.Show() End Sub Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click AbwesenheitEintragen("DR") Exit Sub Dim frmDiestEintrag As New frmDiestEintrag frmDiestEintrag.niederlassung = niederlassung frmDiestEintrag.art = "DR" frmDiestEintrag.Show() End Sub Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click Dim frmUrlaubsplaner As New frmUrlaubsplaner frmUrlaubsplaner.niederlassung = niederlassung frmUrlaubsplaner.ShowDialog() Exit Sub frmDienstAbwesenheitenUebersicht.Show() End Sub Private Sub cboQSSpaet_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboQSSpaet.SelectedIndexChanged Dim montag As Date = CalendarWeek(aktWoche, aktJahr) 'SONNTAG Dim von = getDefaultTimeBySchicht("NACHT", "von", montag.AddDays(6).ToString("ddd", New CultureInfo("de-DE")).ToUpper) Dim bis = getDefaultTimeBySchicht("NACHT", "bis", montag.AddDays(6).ToString("ddd", New CultureInfo("de-DE")).ToUpper) Dim pause = getDefaultTimeBySchicht("NACHT", "pause", montag.AddDays(6).ToString("ddd", New CultureInfo("de-DE")).ToUpper) SQLDienst.updateDienstEintragArtChangeByDstMaId(CType(cboQSSpaet.SelectedItem, VERAG_PROG_ALLGEMEIN.MyListItem).Value, montag.AddDays(6), "NACHT", von, bis, "", pause) For i = 0 To 4 von = getDefaultTimeBySchicht("NACHT", "von", montag.AddDays(i).ToString("ddd", New CultureInfo("de-DE")).ToUpper) bis = getDefaultTimeBySchicht("NACHT", "bis", montag.AddDays(i).ToString("ddd", New CultureInfo("de-DE")).ToUpper) pause = getDefaultTimeBySchicht("NACHT", "pause", montag.AddDays(i).ToString("ddd", New CultureInfo("de-DE")).ToUpper) ' If montag.AddDays(i).DayOfWeek = 6 Then SQLDienst.updateDienstEintragArtChangeByDstMaId(CType(cboQSSpaet.SelectedItem, VERAG_PROG_ALLGEMEIN.MyListItem).Value, montag.AddDays(i), "NACHT", von, bis, "", pause) ' Else ' SQLDienst.updateDienstEintragArtChangeByDstMaId(CType(cboQSSpaet.SelectedItem, VERAG_PROG_ALLGEMEIN.MyListItem).Value, montag.AddDays(i), "NACHT", "10:00", "19:00", "10-19", "1") 'End If Next initDienstplan() End Sub Private Function GetWeekStartDate(weekNumber As Integer, year As Integer) As Date Dim startDate As New DateTime(year, 1, 1) Dim weekDate As DateTime = DateAdd(DateInterval.WeekOfYear, weekNumber, startDate) Return DateAdd(DateInterval.Day, (-weekDate.DayOfWeek) + 1, weekDate) End Function Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click If IsNumeric(txtKW.Text) AndAlso txtKW.Text < 54 AndAlso txtKW.Text > 0 Then If IsNumeric(txtKWYear.Text) AndAlso txtKWYear.Text < 3000 AndAlso txtKWYear.Text > 2000 Then Me.Cursor = Cursors.WaitCursor aktDate = GetWeekStartDate(txtKW.Text, txtKWYear.Text) aktWoche = DateToWeek(aktDate).Substring(4, 2) aktJahr = DateToWeek(aktDate).Substring(0, 4) initWeekInfo() initDienstplan() Me.Cursor = Cursors.Default End If End If End Sub Private Sub txtKW_KeyDown(sender As Object, e As KeyEventArgs) Handles txtKW.KeyDown, txtKWYear.KeyDown If e.KeyCode = Keys.Enter Then Button11.PerformClick() End Sub Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click Exit Sub 'Dim pf As New cProgramFunctions 'pf.KWAbschluss(niederlassung, aktJahr, aktWoche, SCHICHT) 'initDienstplan() End Sub Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click AbwesenheitEintragen("BS") End Sub Private Sub Button16_Click_1(sender As Object, e As EventArgs) Handles Button16.Click If vbYes = MsgBox("Möchten Sie die Woche wirklich löschen?", vbYesNoCancel) Then Dim datum As Date = CalendarWeek(aktWoche, aktJahr) SQLDienst.delDienstplanEintraege(datum, datum.AddDays(6), niederlassung) SQLDienst.delDienstplanUeberSdtMa(aktWoche, aktJahr, niederlassung) initDienstplan() End If End Sub Private Sub btnDetails_Click_1(sender As Object, e As EventArgs) Handles btnDetails.Click initDetails(False) End Sub Sub initDetails(refresh As Boolean) If refresh Then 'nur Aktualisieren If usrDetailsTMP.Visible Then usrDetailsTMP.init(CalendarWeek(aktWoche, aktJahr), niederlassung) Exit Sub End If If usrDetailsTMP.Visible Then usrDetailsTMP.Visible = False Else usrDetailsTMP.init(CalendarWeek(aktWoche, aktJahr), niederlassung) usrDetailsTMP.Visible = True End If End Sub End Class