Urlaubsplaner Updatefunktion eingebaut.

This commit is contained in:
2023-01-25 16:59:23 +01:00
parent 514c470565
commit d9680713ee
5 changed files with 265 additions and 87 deletions

View File

@@ -57,6 +57,7 @@ Partial Class frmDienstplanVariabel
Me.pnl = New System.Windows.Forms.Panel() Me.pnl = New System.Windows.Forms.Panel()
Me.Panel6 = New System.Windows.Forms.Panel() Me.Panel6 = New System.Windows.Forms.Panel()
Me.Panel7 = New System.Windows.Forms.Panel() Me.Panel7 = New System.Windows.Forms.Panel()
Me.Button20 = New System.Windows.Forms.Button()
Me.Button18 = New System.Windows.Forms.Button() Me.Button18 = New System.Windows.Forms.Button()
Me.cboQSSpaet = New System.Windows.Forms.ComboBox() Me.cboQSSpaet = New System.Windows.Forms.ComboBox()
Me.Label23 = New System.Windows.Forms.Label() Me.Label23 = New System.Windows.Forms.Label()
@@ -458,6 +459,7 @@ Partial Class frmDienstplanVariabel
' '
'Panel7 'Panel7
' '
Me.Panel7.Controls.Add(Me.Button20)
Me.Panel7.Controls.Add(Me.Button18) Me.Panel7.Controls.Add(Me.Button18)
Me.Panel7.Controls.Add(Me.cboQSSpaet) Me.Panel7.Controls.Add(Me.cboQSSpaet)
Me.Panel7.Controls.Add(Me.Label23) Me.Panel7.Controls.Add(Me.Label23)
@@ -468,6 +470,16 @@ Partial Class frmDienstplanVariabel
Me.Panel7.Size = New System.Drawing.Size(352, 231) Me.Panel7.Size = New System.Drawing.Size(352, 231)
Me.Panel7.TabIndex = 109 Me.Panel7.TabIndex = 109
' '
'Button20
'
Me.Button20.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button20.Location = New System.Drawing.Point(0, 208)
Me.Button20.Name = "Button20"
Me.Button20.Size = New System.Drawing.Size(133, 23)
Me.Button20.TabIndex = 84
Me.Button20.Text = "FZ aus UK aktual."
Me.Button20.UseVisualStyleBackColor = True
'
'Button18 'Button18
' '
Me.Button18.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button18.FlatStyle = System.Windows.Forms.FlatStyle.Flat
@@ -1624,12 +1636,12 @@ Partial Class frmDienstplanVariabel
' '
Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.SchichtLöcshenToolStripMenuItem}) Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.SchichtLöcshenToolStripMenuItem})
Me.ContextMenuStrip1.Name = "ContextMenuStrip1" Me.ContextMenuStrip1.Name = "ContextMenuStrip1"
Me.ContextMenuStrip1.Size = New System.Drawing.Size(181, 48) Me.ContextMenuStrip1.Size = New System.Drawing.Size(158, 26)
' '
'SchichtLöcshenToolStripMenuItem 'SchichtLöcshenToolStripMenuItem
' '
Me.SchichtLöcshenToolStripMenuItem.Name = "SchichtLöcshenToolStripMenuItem" Me.SchichtLöcshenToolStripMenuItem.Name = "SchichtLöcshenToolStripMenuItem"
Me.SchichtLöcshenToolStripMenuItem.Size = New System.Drawing.Size(180, 22) Me.SchichtLöcshenToolStripMenuItem.Size = New System.Drawing.Size(157, 22)
Me.SchichtLöcshenToolStripMenuItem.Text = "Schicht löschen" Me.SchichtLöcshenToolStripMenuItem.Text = "Schicht löschen"
' '
'Panel4 'Panel4
@@ -1916,4 +1928,5 @@ Partial Class frmDienstplanVariabel
Friend WithEvents Label1 As Label Friend WithEvents Label1 As Label
Friend WithEvents txtSchichtstd As TextBox Friend WithEvents txtSchichtstd As TextBox
Friend WithEvents SchichtLöcshenToolStripMenuItem As ToolStripMenuItem Friend WithEvents SchichtLöcshenToolStripMenuItem As ToolStripMenuItem
Friend WithEvents Button20 As Button
End Class End Class

View File

@@ -1129,10 +1129,11 @@ Public Class frmDienstplanVariabel
If dgv.Parent.Parent.GetType() Is GetType(usrCntlDienstWoche) Then o = dgv.Parent.Parent If dgv.Parent.Parent.GetType() Is GetType(usrCntlDienstWoche) Then o = dgv.Parent.Parent
Dim d As Date = CDate(getValuesDienstDGV(o, dgv.Name, "datum")) Dim d As Date = CDate(getValuesDienstDGV(o, dgv.Name, "datum"))
If o IsNot Nothing Then
If o.SCHICHT.dedet_Splitschicht = True Then If o.SCHICHT.dedet_Splitschicht = True Then
MsgBox("Keine Änderungen bei Splitschichten erlaubt!") MsgBox("Keine Änderungen bei Splitschichten erlaubt!")
Exit Sub Exit Sub
End If
End If End If
For Each s In BEN_SCHICHTEN For Each s In BEN_SCHICHTEN
@@ -1264,7 +1265,7 @@ Public Class frmDienstplanVariabel
initALL() initALL()
End If End If
End Sub End Sub
Public Sub initALL(Optional MAID As Integer = -1) Public Sub initALL(Optional MAID As Integer = -1, Optional onlyFehlzeiten As Boolean = False)
Me.Cursor = Cursors.WaitCursor Me.Cursor = Cursors.WaitCursor
' Me.Enabled = False ' Me.Enabled = False
@@ -1276,104 +1277,114 @@ Public Class frmDienstplanVariabel
Dim cDienstAbwesendheiten As List(Of cDienstAbwesendheiten) = SQLDienst.getDienstAbwesendheiten(montag, sonntag, niederlassung) Dim cDienstAbwesendheiten As List(Of cDienstAbwesendheiten) = SQLDienst.getDienstAbwesendheiten(montag, sonntag, niederlassung)
Dim ma As List(Of cDienstMA) = Nothing Dim ma As List(Of cDienstMA) = Nothing
If MAID > 0 Then If MAID > 0 Then
If Not SQLDienst.delDstEintraegeMaId(montag, sonntag, niederlassung, MAID) Then Me.Cursor = Cursors.Default : Exit Sub 'Alle löschen
If Not SQLDienst.delDstEintraegeMaId(montag, sonntag, niederlassung, MAID, onlyFehlzeiten) Then Me.Cursor = Cursors.Default : Exit Sub 'Alles Löschen/Nur Fehlzeiten löschen
ma = SQLDienst.getAllDienstMA(niederlassung, montag, " AND dstma_id = " & MAID) ma = SQLDienst.getAllDienstMA(niederlassung, montag, " AND dstma_id = " & MAID)
Else Else
If Not SQLDienst.delDstEintraege(montag, sonntag, niederlassung) Then Me.Cursor = Cursors.Default : Exit Sub 'Alle löschen
If Not SQLDienst.delDstEintraege(montag, sonntag, niederlassung, onlyFehlzeiten) Then Me.Cursor = Cursors.Default : Exit Sub 'Alles Löschen/Nur Fehlzeiten löschen
ma = SQLDienst.getAllDienstMA(niederlassung, montag) ma = SQLDienst.getAllDienstMA(niederlassung, montag)
End If End If
Dim datum As Date = montag Dim datum As Date = montag
For i = 1 To 7 For i = 1 To 7
Dim FT As New VERAG_PROG_ALLGEMEIN.cFeiertage(datum.Year) 'Evtl Jahressprung, darum neu definieren Dim FT As New VERAG_PROG_ALLGEMEIN.cFeiertage(datum.Year) 'Evtl Jahressprung, darum neu definieren
For Each m In ma For Each m In ma
Dim eintrag As New cDienstEintrag Dim eintrag As New cDienstEintrag
eintrag.dstetr_dstmaId = m.dstma_id eintrag.dstetr_dstmaId = m.dstma_id
eintrag.dstetr_datum = datum eintrag.dstetr_datum = datum
Dim existingEntry = SQLDienst.getCountEntrys(eintrag.dstetr_dstmaId, eintrag.dstetr_datum, eintrag.dstetr_datum)
If Not FT.isFeiertag(datum, IIf(m.dstma_land <> "", m.dstma_land, SETTINGS.dpset_land)) Then
If m.dstma_muster Then
' MsgBox("HIER")
Dim tz As List(Of cDienstTeilzeit) = SQLDienst.getAllDienstTeilzeit(m.dstma_id) If Not onlyFehlzeiten Or onlyFehlzeiten AndAlso existingEntry = 0 Then
eintrag.dstetr_art = getFromTeilzeit(m.dstma_4wo, "abt", tz, datum, SCHICHT)
If eintrag.dstetr_art = "" Then If Not FT.isFeiertag(datum, IIf(m.dstma_land <> "", m.dstma_land, SETTINGS.dpset_land)) Then
eintrag.dstetr_art = "FREI" If m.dstma_muster Then
Else ' MsgBox("HIER")
' MsgBox(getFromTeilzeit("von", tz, datum, SCHICHT) & " _ " & getFromTeilzeit("bis", tz, datum, SCHICHT))
eintrag.dstetr_von = getFromTeilzeit(m.dstma_4wo, "von", tz, datum, SCHICHT) Dim tz As List(Of cDienstTeilzeit) = SQLDienst.getAllDienstTeilzeit(m.dstma_id)
eintrag.dstetr_bis = getFromTeilzeit(m.dstma_4wo, "bis", tz, datum, SCHICHT)
eintrag.dstetr_pause = getFromTeilzeit(m.dstma_4wo, "pause", tz, datum, SCHICHT)
' eintrag.dstetr_pause = getDefaultTimeBySchicht(eintrag.dstetr_art, "pause", week(datum.DayOfWeek))
eintrag.dstetr_grund = ""
eintrag.dstetr_info = getFromTeilzeit(m.dstma_4wo, "info", tz, datum, SCHICHT)
'MsgBox(eintrag.dstetr_art)
eintrag.dstetr_art = getFromTeilzeit(m.dstma_4wo, "abt", tz, datum, SCHICHT) eintrag.dstetr_art = getFromTeilzeit(m.dstma_4wo, "abt", tz, datum, SCHICHT)
End If If eintrag.dstetr_art = "" Then
Else
If m.dstma_arbvh = "VZ" Then
If week(datum.DayOfWeek) = "SA" Or week(datum.DayOfWeek) = "SO" Then
eintrag.dstetr_art = "FREI" eintrag.dstetr_art = "FREI"
Else Else
eintrag.dstetr_art = getSchichtArt(m.dstma_abteilung, m.dstma_stammSchicht, datum) ' MsgBox(getFromTeilzeit("von", tz, datum, SCHICHT) & " _ " & getFromTeilzeit("bis", tz, datum, SCHICHT))
eintrag.dstetr_hauptsplitschicht = getBooleanHauptsplitschicht(m.dstma_stammSchicht) eintrag.dstetr_von = getFromTeilzeit(m.dstma_4wo, "von", tz, datum, SCHICHT)
'MsgBox(getSchichtArt(m.dstma_abteilung, m.dstma_stammSchicht, datum)) eintrag.dstetr_bis = getFromTeilzeit(m.dstma_4wo, "bis", tz, datum, SCHICHT)
'Abwesenheiten prüfen: eintrag.dstetr_pause = getFromTeilzeit(m.dstma_4wo, "pause", tz, datum, SCHICHT)
' For Each d In cDienstAbwesendheiten ' eintrag.dstetr_pause = getDefaultTimeBySchicht(eintrag.dstetr_art, "pause", week(datum.DayOfWeek))
'If d.dstna_mitId = eintrag.dstetr_dstmaId AndAlso d.dstna_datum_von <= datum And d.dstna_datum_bis >= datum Then eintrag.dstetr_grund = ""
' eintrag.dstetr_art = d.dstna_grund eintrag.dstetr_info = getFromTeilzeit(m.dstma_4wo, "info", tz, datum, SCHICHT)
'End If 'MsgBox(eintrag.dstetr_art)
' Next eintrag.dstetr_art = getFromTeilzeit(m.dstma_4wo, "abt", tz, datum, SCHICHT)
End If End If
eintrag.dstetr_von = getDefaultTimeBySchicht(eintrag.dstetr_art, "von", week(datum.DayOfWeek)) Else
eintrag.dstetr_bis = getDefaultTimeBySchicht(eintrag.dstetr_art, "bis", week(datum.DayOfWeek)) If m.dstma_arbvh = "VZ" Then
eintrag.dstetr_pause = getDefaultTimeBySchicht(eintrag.dstetr_art, "pause", week(datum.DayOfWeek))
eintrag.dstetr_grund = "" If week(datum.DayOfWeek) = "SA" Or week(datum.DayOfWeek) = "SO" Then
eintrag.dstetr_info = "" eintrag.dstetr_art = "FREI"
Else
eintrag.dstetr_art = getSchichtArt(m.dstma_abteilung, m.dstma_stammSchicht, datum)
eintrag.dstetr_hauptsplitschicht = getBooleanHauptsplitschicht(m.dstma_stammSchicht)
'MsgBox(getSchichtArt(m.dstma_abteilung, m.dstma_stammSchicht, datum))
'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
'End If
' Next
End If
eintrag.dstetr_von = getDefaultTimeBySchicht(eintrag.dstetr_art, "von", week(datum.DayOfWeek))
eintrag.dstetr_bis = getDefaultTimeBySchicht(eintrag.dstetr_art, "bis", week(datum.DayOfWeek))
eintrag.dstetr_pause = getDefaultTimeBySchicht(eintrag.dstetr_art, "pause", week(datum.DayOfWeek))
eintrag.dstetr_grund = ""
eintrag.dstetr_info = ""
If False Then If False Then
If m.dstma_kuerzel = "AKPINAR" Then If m.dstma_kuerzel = "AKPINAR" Then
If Not week(datum.DayOfWeek) = "SA" And Not week(datum.DayOfWeek) = "SO" Then If Not week(datum.DayOfWeek) = "SA" And Not week(datum.DayOfWeek) = "SO" Then
'MsgBox("Hallo") 'MsgBox("Hallo")
' eintrag.dstetr_von = "08:00" ' eintrag.dstetr_von = "08:00"
' eintrag.dstetr_bis = "19:00" ' eintrag.dstetr_bis = "19:00"
eintrag.dstetr_info = " 8-14 14:30-19" eintrag.dstetr_info = " 8-14 14:30-19"
End If
End If End If
End If End If
' 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
' 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 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 End If
'Abwesenheiten prüfen: 'Abwesenheiten prüfen:
For Each d In cDienstAbwesendheiten 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 If d.dstna_mitId = eintrag.dstetr_dstmaId AndAlso d.dstna_datum_von <= datum And d.dstna_datum_bis >= datum Then
@@ -1386,10 +1397,24 @@ Public Class frmDienstplanVariabel
eintrag.dstetr_von = getDefaultTimeBySchicht(grund, "von", week(datum.DayOfWeek).ToUpper) eintrag.dstetr_von = getDefaultTimeBySchicht(grund, "von", week(datum.DayOfWeek).ToUpper)
eintrag.dstetr_bis = getDefaultTimeBySchicht(grund, "bis", week(datum.DayOfWeek).ToUpper) eintrag.dstetr_bis = getDefaultTimeBySchicht(grund, "bis", week(datum.DayOfWeek).ToUpper)
eintrag.dstetr_pause = getDefaultTimeBySchicht(grund, "pause", week(datum.DayOfWeek).ToUpper) eintrag.dstetr_pause = getDefaultTimeBySchicht(grund, "pause", week(datum.DayOfWeek).ToUpper)
End If End If
Next Next
SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung) If onlyFehlzeiten Then
'MsgBox("MA-ID: " & eintrag.dstetr_dstmaId & " " & "existingEntry: " & existingEntry & " Art: " & eintrag.dstetr_art & " DATUM: " & eintrag.dstetr_datum)
If existingEntry = 1 AndAlso (eintrag.dstetr_art = "URL" Or eintrag.dstetr_art = "KS" Or eintrag.dstetr_art = "DR" Or eintrag.dstetr_art = "BS") Or existingEntry = 0 Then
SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung,, False)
Else
End If
Else
'SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung,, False)
SQLDienst.updateInsertByDienstEintrag(eintrag, niederlassung)
End If
Next Next
datum = datum.AddDays(1) datum = datum.AddDays(1)
@@ -2100,14 +2125,13 @@ Public Class frmDienstplanVariabel
MsgBox("Keine Splitschichten erlaubt!") MsgBox("Keine Splitschichten erlaubt!")
Exit Sub Exit Sub
End If End If
If o.SCHICHT.dedet_Hauptsplitschicht = False Then If o.SCHICHT.dedet_Hauptsplitschicht = False Then
MsgBox("In Schicht " & o.schicht_name & " sind keine Splitschichten erlaubt!") MsgBox("In Schicht " & o.schicht_name & " sind keine Splitschichten erlaubt!")
Exit Sub Exit Sub
End If End If
Dim ids As New List(Of Integer) Dim ids As New List(Of Integer)
Dim arr As DataGridViewSelectedCellCollection = dgv_tmp.SelectedCells Dim arr As DataGridViewSelectedCellCollection = dgv_tmp.SelectedCells
For Each c As DataGridViewCell In arr For Each c As DataGridViewCell In arr
@@ -2456,7 +2480,7 @@ Public Class frmDienstplanVariabel
If frmUrlKW.RESULT <> "" Then If frmUrlKW.RESULT <> "" Then
' MsgBox(markId) ' MsgBox(markId)
initALL(markId) initALL(markId, True)
End If End If
@@ -2690,7 +2714,7 @@ Public Class frmDienstplanVariabel
End If End If
Else Else
MsgBox("Kein Mitarbeiter auswewählt!") MsgBox("Kein Mitarbeiter ausgewählt!")
End If End If
End Sub End Sub
@@ -2918,4 +2942,12 @@ Public Class frmDienstplanVariabel
End Function End Function
Private Sub Button20_Click(sender As Object, e As EventArgs) Handles Button20.Click
If Panel6.Controls.Count > 0 Then
Dim u As usrcntlDienstplanStunden = DirectCast(Panel6.Controls(0), usrcntlDienstplanStunden)
If markId > 0 Then
initALL(markId, True)
End If
End If
End Sub
End Class End Class

View File

@@ -14,6 +14,9 @@ Public Class frmUrlKW
Dim montag As Date Dim montag As Date
Dim loaded = False Dim loaded = False
Dim ftString As String = " FT" Dim ftString As String = " FT"
Dim DPAlreadyInit As Boolean = False
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Private Sub btnSpeichern_Click(sender As Object, e As EventArgs) Handles btnSpeichern.Click Private Sub btnSpeichern_Click(sender As Object, e As EventArgs) Handles btnSpeichern.Click
' SQLDienst.delDienstNichtAnwesendKW_ByKwJahr(maId, KW, YEAR) ' SQLDienst.delDienstNichtAnwesendKW_ByKwJahr(maId, KW, YEAR)
@@ -62,6 +65,8 @@ Public Class frmUrlKW
cboArt.SelectedIndex = 0 cboArt.SelectedIndex = 0
End Sub End Sub
Private Sub frmUrlKW_Shown(sender As Object, e As EventArgs) Handles Me.Shown Private Sub frmUrlKW_Shown(sender As Object, e As EventArgs) Handles Me.Shown
@@ -91,6 +96,8 @@ Public Class frmUrlKW
lblSa.Text = montag.AddDays(5).ToString("dd.MM.") lblSa.Text = montag.AddDays(5).ToString("dd.MM.")
lblSo.Text = montag.AddDays(6).ToString("dd.MM.") lblSo.Text = montag.AddDays(6).ToString("dd.MM.")
DPAlreadyInit = checkIfDPEntryIsExisting()
If (FT.isFeiertag(montag, cDienstSettings.getLand(niederlassung))) Then If (FT.isFeiertag(montag, cDienstSettings.getLand(niederlassung))) Then
lblMo.TextAlign = ContentAlignment.TopLeft lblMo.TextAlign = ContentAlignment.TopLeft
lblMo.Text &= ftString lblMo.Text &= ftString
@@ -186,6 +193,16 @@ Public Class frmUrlKW
End If End If
End If End If
If DPAlreadyInit Then
lblUrlaubEintragen.Text = cboArt.SelectedItem.ToString & " eintragen - DP wurde bereits init."
lblUrlaubEintragen.ForeColor = Color.Red
Else
lblUrlaubEintragen.Text = cboArt.SelectedItem.ToString & " eintragen"
lblUrlaubEintragen.ForeColor = Color.Black
End If
End Sub End Sub
Public Function CalendarWeek(ByVal nWeek As Integer, ByVal nYear As Integer) As Date Public Function CalendarWeek(ByVal nWeek As Integer, ByVal nYear As Integer) As Date
@@ -247,4 +264,16 @@ Public Class frmUrlKW
KW_ID = -1 KW_ID = -1
init() init()
End Sub End Sub
Private Function checkIfDPEntryIsExisting()
If SQL.DLookup("count([dstetr_id])", "[tblDienstplanEintraege]", " [dstetr_niederlassung]='" & niederlassung & "' and [dstetr_dstmaId]='" & maId & "' and [dstetr_datum] BETWEEN'" & montag.ToShortDateString & "' AND '" & montag.AddDays(6).ToShortDateString & "'", "ADMIN", 0) > 0 Then
Return True
Else
Return False
End If
End Function
End Class End Class

View File

@@ -1,4 +1,5 @@
Imports System.Reflection Imports System.Reflection
Imports ClosedXML.Excel
Public Class frmUrlaubsplaner Public Class frmUrlaubsplaner
Dim DP As New cDienstplan Dim DP As New cDienstplan
@@ -334,7 +335,98 @@ Public Class frmUrlaubsplaner
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
cProgramFunctions.genExcelFromDT_NEW(saveToDt()) saveToDt()
Try
Dim dt1 As New DataTable()
Dim dt2 As New DataTable()
Dim halfOfYearWeek As Integer = 28
For Each column As DataGridViewColumn In dgvUrlaub.Columns
If column.ValueType Is Nothing Then
If column.Index < 2 Then
dt1.Columns.Add(column.HeaderText, System.Type.GetType("System.String"))
dt2.Columns.Add(column.HeaderText, System.Type.GetType("System.String"))
ElseIf column.Index < halfOfYearWeek Then
dt1.Columns.Add(column.HeaderText, System.Type.GetType("System.String"))
Else
dt2.Columns.Add(column.HeaderText, System.Type.GetType("System.String"))
End If
Else
If column.Index < 2 Then
dt1.Columns.Add(column.HeaderText, column.ValueType)
dt2.Columns.Add(column.HeaderText, column.ValueType)
ElseIf column.Index < halfOfYearWeek Then
dt1.Columns.Add(column.HeaderText, column.ValueType)
Else
dt2.Columns.Add(column.HeaderText, column.ValueType)
End If
End If
Next
For Each row As DataGridViewRow In dgvUrlaub.Rows
dt1.Rows.Add()
dt2.Rows.Add()
For Each cell As DataGridViewCell In row.Cells
If cell.Value Is Nothing Then
If cell.ColumnIndex < 2 Then
dt1.Rows(dt1.Rows.Count - 1)(cell.ColumnIndex) = ""
dt2.Rows(dt2.Rows.Count - 1)(cell.ColumnIndex) = ""
ElseIf cell.ColumnIndex < halfOfYearWeek Then
dt1.Rows(dt1.Rows.Count - 1)(cell.ColumnIndex) = ""
Else
dt2.Rows(dt2.Rows.Count - 1)(cell.ColumnIndex - (halfOfYearWeek - 2)) = ""
End If
Else
If cell.ColumnIndex < 2 Then
dt1.Rows(dt1.Rows.Count - 1)(cell.ColumnIndex) = cell.Value.ToString()
dt2.Rows(dt2.Rows.Count - 1)(cell.ColumnIndex) = cell.Value.ToString()
ElseIf cell.ColumnIndex < halfOfYearWeek Then
dt1.Rows(dt1.Rows.Count - 1)(cell.ColumnIndex) = cell.Value.ToString()
Else
dt2.Rows(dt2.Rows.Count - 1)(cell.ColumnIndex - (halfOfYearWeek - 2)) = cell.Value.ToString()
End If
End If
Next
Next
Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SDL\tmp\" ' My.Computer.FileSystem.GetTempFileName
If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
My.Computer.FileSystem.CreateDirectory(sPath)
End If
Dim wb As New XLWorkbook
' Dim dt As DataTable = (dgv.DataSource)
' Dim dt As DataTable = TryCast(dgv., DataTable)
wb.Worksheets.Add(dt1, "URLAUB JH 1")
wb.Worksheets.Add(dt2, "URLAUB JH 2")
Dim filename As String = sPath & "Urlaubsplan_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx"
wb.SaveAs(filename)
Process.Start(filename)
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
End Sub End Sub
@@ -342,6 +434,7 @@ Public Class frmUrlaubsplaner
If loaded Then aktJahr = cboJahr._value : initDGV() : If loaded Then aktJahr = cboJahr._value : initDGV() :
End Sub End Sub
Private Function saveToDt() As DataTable Private Function saveToDt() As DataTable
Dim dt As New DataTable() Dim dt As New DataTable()

View File

@@ -3550,9 +3550,13 @@ Public Class cDienstplan
Return Nothing Return Nothing
End Function End Function
Public Function delDstEintraege(von, bis, niederlassung) As Boolean Public Function delDstEintraege(von As Date, bis As Date, niederlassung As String, Optional onlyFehlzeiten As Boolean = False) As Boolean
Dim sqlFehlzeiten As String = ""
If onlyFehlzeiten Then sqlFehlzeiten &= " AND ([dstetr_art] = 'URL' OR [dstetr_art] = 'DR' OR [dstetr_art] = 'BS') "
Dim sql = "DELETE FROM tblDienstplanEintraege " & Dim sql = "DELETE FROM tblDienstplanEintraege " &
"WHERE dstetr_niederlassung= '" & niederlassung & "' AND dstetr_datum BETWEEN @von AND @bis " "WHERE dstetr_niederlassung= '" & niederlassung & "' AND dstetr_datum BETWEEN @von AND @bis " & sqlFehlzeiten
Using conn As SqlConnection = cSqlDb.GetNewOpenConnection() Using conn As SqlConnection = cSqlDb.GetNewOpenConnection()
Using cmd As New SqlCommand(sql, conn) Using cmd As New SqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@von", von) cmd.Parameters.AddWithValue("@von", von)
@@ -3568,9 +3572,11 @@ Public Class cDienstplan
Return False Return False
End Function End Function
Public Function delDstEintraegeMaId(von, bis, niederlassung, dstetr_dstmaId) As Boolean Public Function delDstEintraegeMaId(von As Date, bis As Date, niederlassung As String, dstetr_dstmaId As Integer, Optional onlyFehlzeiten As Boolean = False) As Boolean
Dim sqlFehlzeiten = ""
If onlyFehlzeiten Then sqlFehlzeiten &= " AND ([dstetr_art] = 'URL' OR [dstetr_art] = 'DR' OR [dstetr_art] = 'BS') "
Dim sql = "DELETE FROM tblDienstplanEintraege " & Dim sql = "DELETE FROM tblDienstplanEintraege " &
"WHERE dstetr_niederlassung= '" & niederlassung & "' AND dstetr_datum BETWEEN @von AND @bis AND dstetr_dstmaId=@dstetr_dstmaId" "WHERE dstetr_niederlassung= '" & niederlassung & "' AND dstetr_datum BETWEEN @von AND @bis AND dstetr_dstmaId=@dstetr_dstmaId" & sqlFehlzeiten
Using conn As SqlConnection = cSqlDb.GetNewOpenConnection() Using conn As SqlConnection = cSqlDb.GetNewOpenConnection()
Using cmd As New SqlCommand(sql, conn) Using cmd As New SqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@von", von) cmd.Parameters.AddWithValue("@von", von)
@@ -3713,20 +3719,24 @@ Public Class cDienstplan
End Function End Function
Public Function updateInsertByDienstEintrag(ByVal daten As cDienstEintrag, niederlassung As String, Optional dstetr_id As Integer = -1) As Boolean Public Function updateInsertByDienstEintrag(ByVal daten As cDienstEintrag, niederlassung As String, Optional dstetr_id As Integer = -1, Optional enableMultiEntriesPerArt As Boolean = True) As Boolean
Dim SQLclause As String = "" Dim SQLclause As String = ""
If enableMultiEntriesPerArt Then
SQLclause &= " AND dstetr_art=@dstetr_art"
End If
If dstetr_id > 0 Then If dstetr_id > 0 Then
SQLclause = " AND dstetr_id=@dstetr_id" SQLclause = " AND dstetr_id=@dstetr_id"
End If End If
Dim sql As String = " begin tran" & Dim sql As String = " begin tran" &
" if exists (select * from tblDienstplanEintraege with (updlock,serializable) where dstetr_datum = @dstetr_datum AND dstetr_dstmaId=@dstetr_dstmaId AND dstetr_niederlassung=@dstetr_niederlassung AND dstetr_art=@dstetr_art" & SQLclause & ") " & " if exists (select * from tblDienstplanEintraege with (updlock,serializable) where dstetr_datum = @dstetr_datum AND dstetr_dstmaId=@dstetr_dstmaId AND dstetr_niederlassung=@dstetr_niederlassung" & SQLclause & ") " &
" begin " & " begin " &
" UPDATE tblDienstplanEintraege " & " UPDATE tblDienstplanEintraege " &
" SET dstetr_dstmaId=@dstetr_dstmaId, dstetr_art=@dstetr_art, dstetr_von=@dstetr_von, dstetr_bis=@dstetr_bis, dstetr_grund=@dstetr_grund, dstetr_info=@dstetr_info,dstetr_niederlassung=@dstetr_niederlassung,dstetr_pause=@dstetr_pause,dstetr_hauptsplitschicht=@dstetr_hauptsplitschicht,dstetr_splitschicht=@dstetr_splitschicht " & " SET dstetr_dstmaId=@dstetr_dstmaId, dstetr_art=@dstetr_art, dstetr_von=@dstetr_von, dstetr_bis=@dstetr_bis, dstetr_grund=@dstetr_grund, dstetr_info=@dstetr_info,dstetr_niederlassung=@dstetr_niederlassung,dstetr_pause=@dstetr_pause,dstetr_hauptsplitschicht=@dstetr_hauptsplitschicht,dstetr_splitschicht=@dstetr_splitschicht " &
" WHERE dstetr_datum = @dstetr_datum AND dstetr_dstmaId=@dstetr_dstmaId AND dstetr_niederlassung=@dstetr_niederlassung AND dstetr_art=@dstetr_art" & SQLclause & " WHERE dstetr_datum = @dstetr_datum AND dstetr_dstmaId=@dstetr_dstmaId AND dstetr_niederlassung=@dstetr_niederlassung" & SQLclause &
" End " & " End " &
" Else " & " Else " &
" begin " & " begin " &
@@ -3763,6 +3773,7 @@ Public Class cDienstplan
Return False Return False
End Function End Function
Public Function getDienstEintragList(datum As Date, niederlassung As String) As List(Of cDienstEintrag) Public Function getDienstEintragList(datum As Date, niederlassung As String) As List(Of cDienstEintrag)
Dim sql As String = " SELECT * FROM tblDienstplanEintraege WHERE dstetr_datum = @dstetr_datum AND dstetr_niederlassung=@dstetr_niederlassung " Dim sql As String = " SELECT * FROM tblDienstplanEintraege WHERE dstetr_datum = @dstetr_datum AND dstetr_niederlassung=@dstetr_niederlassung "
Dim daten As List(Of cDienstEintrag) = Nothing Dim daten As List(Of cDienstEintrag) = Nothing