Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Public Class frmMassnahmeplan #Region "Deklarationen" Dim sec As New Utils.MySecurity Dim msg As New Utils.MyMessage Dim FormReadonly As Boolean = False Dim FormDataChanged As Boolean = False Private Anzeige As Boolean = False Dim OnGetData As Boolean Dim c1bookmark Dim c2bookmark Dim massnahmeplan As New clsMassnahmeplan Dim WithEvents evh As MyGenericEventHandler = Globals.MyEventHanlder #End Region #Region "Closing / Check_Changes" ''' ''' Schliessen des Formulars ''' ''' ''' ''' Private Sub FormularClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Me.FormReadonly = True If Me.FormReadonly = True Then Exit Sub If Check_Changes() = False Then e.Cancel = True Else massnahmeplan.dispose() Me.Dispose() End If End Sub ''' ''' Prüfung, ob Datenänderungen vorgenommen wurden. ''' ''' Private Function Check_Changes() As Boolean If Me.FormReadonly Then Return True Exit Function End If Dim msgres As MsgBoxResult If Me.FormDataChanged Then msgres = msg.Show_MessageYesNoCancel(3) Select Case msgres Case MsgBoxResult.Yes Return True Case MsgBoxResult.Cancel Return False Case MsgBoxResult.No Me.FormDataChanged = False Return True End Select Else Return True End If End Function #End Region #Region "Eventhandler ChangeEreignisse" ''' ''' Allg Eventhandler für Chanage-Ereignise festlegen ''' ''' ''' Private Sub AddChanges(ByVal Container As Control) Dim l As New List(Of Control) Me.GetControl(Me, "*", l) Dim evh As EventHandler = AddressOf ChangesMade For Each c As Control In l If TypeOf c Is TextBox Then Dim ctl As TextBox = c AddHandler ctl.TextChanged, evh End If If TypeOf c Is MaskedTextBox Then Dim ctl As MaskedTextBox = c AddHandler ctl.TextChanged, evh End If If TypeOf c Is ComboBox Then Dim ctl As ComboBox = c AddHandler ctl.SelectedValueChanged, evh End If If TypeOf c Is RichTextBox Then Dim ctl As RichTextBox = c AddHandler ctl.TextChanged, evh End If If TypeOf c Is CheckBox Then If c.Name <> "cboxNurAktive" Then Dim ctl As CheckBox = c AddHandler ctl.CheckedChanged, evh End If End If If TypeOf c Is CheckedListBox Then Dim ctl As CheckedListBox = c AddHandler ctl.ItemCheck, AddressOf ChecketListBoxChange End If Next End Sub ''' ''' Envent-Handler für Change-Ereignisse ''' ''' ''' ''' Private Sub ChangesMade(ByVal sender As Object, ByVal e As System.EventArgs) Me.FormDataChanged = True Dim objtype As System.Type = sender.GetType If objtype.Name = "MaskedTextBox" Then Dim o As MaskedTextBox = sender If o.Text = "01.01.1900" Then o.Text = " . . " End If End Sub Private Sub ChecketListBoxChange(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Me.FormDataChanged = True End Sub ''' ''' Sucht in den Base-Controls sämtliche Controls mit dem Namen in "Key" (Wildcards * möglich) und listet ''' die gefundnen Controls in der Liste L zur weiteren Bearbeitung ''' ''' Base-Contrlo (z.B. aktuelles Formular ''' Schlüssel welcher gesucht werden soll ''' Liste der gefundenen Objekte ''' True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde. ''' ''' Private Function GetControl(ByVal BaseControl As Control, ByVal Key As String, ByRef L As List(Of Control), Optional ByVal ReturnAtFirstElement As Boolean = False) As Boolean If L Is Nothing Then L = New List(Of Control) Dim Gut As Boolean Dim ReturnFlag As Boolean = False If Key IsNot Nothing Then Key = Key.ToLower If BaseControl.HasChildren = True Then For Each ctl As Control In BaseControl.Controls Gut = False If Key Is Nothing Then Gut = True Else If ctl.Name.Length >= Key.Length Then Key = Key.ToLower If Key.StartsWith("*") Then If Key.Substring(1) = ctl.Name.ToLower.Substring(ctl.Name.Length - (Key.Length - 1), Key.Length - 1) Then Gut = True ElseIf Key.EndsWith("*") Then If Key.Substring(0, Key.Length - 1) = ctl.Name.ToLower.Substring(0, Key.Length - 1) Then Gut = True Else If Key = ctl.Name.ToLower Then Gut = True End If End If End If If Gut = True Then L.Add(ctl) If ReturnAtFirstElement = True Then ReturnFlag = True End If If ReturnFlag = False Then Call GetControl(ctl, Key, L) End If Next End If If L.Count - 1 > -1 Then Return True Else Return False End If End Function #End Region #Region "Form" Sub New() ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() Me.ImageList1 = Globals.GueltigImages ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Private Sub frmPPlan_Load(sender As Object, e As EventArgs) Handles MyBase.Load Refresh_List() End Sub Sub Refresh_List(Optional searchstring As String = "") Me.massnahmeplan.Get_Eintraege(Me.C1Daten, 0, Me.tsTxtSearch.Text) Dim bmp0 As New Bitmap(Me.ImageList1.Images(0)) Dim bmp1 As New Bitmap(Me.ImageList1.Images(1)) Dim bmp2 As New Bitmap(Me.ImageList1.Images(2)) Dim bmp3 As New Bitmap(Me.ImageList1.Images(3)) Dim v0 As New C1.Win.C1TrueDBGrid.ValueItem() Dim v1 As New C1.Win.C1TrueDBGrid.ValueItem() Dim v2 As New C1.Win.C1TrueDBGrid.ValueItem() Dim v3 As New C1.Win.C1TrueDBGrid.ValueItem() v0.DisplayValue = bmp0 v0.Value = 0 v1.DisplayValue = bmp1 v1.Value = 1 v2.DisplayValue = bmp2 v2.Value = 2 v3.DisplayValue = bmp3 v3.Value = 3 Me.C1Daten.Columns("Icon").ValueItems.Values.Add(v0) Me.C1Daten.Columns("Icon").ValueItems.Values.Add(v1) Me.C1Daten.Columns("Icon").ValueItems.Values.Add(v2) Me.C1Daten.Columns("Icon").ValueItems.Values.Add(v3) Me.C1Daten.Columns("Icon").ValueItems.Translate = True Me.C1Daten.Splits(0).DisplayColumns("icon").Style.HorizontalAlignment = C1.Win.C1TrueDBGrid.AlignHorzEnum.Center End Sub #End Region #Region "C1Daten" Private Sub C1Daten_MouseDown(sender As Object, e As MouseEventArgs) Handles C1Daten.MouseDown Me.C1Daten.Bookmark = Me.C1Daten.RowContaining(e.Y) End Sub Private Sub C1Daten_RowColChange(sender As Object, e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles C1Daten.RowColChange Refresh_Details() End Sub #End Region Sub Refresh_Details() Try Me.txtPruefgegenstand.Text = "" Me.txtPrioritaet.Text = "" Me.txtPeriodizitaet.Text = "" Me.txtZeitpunkt.Text = "" Me.txtVerantwortlich.Text = "" Me.txtVerantwortungISI.Text = "" Me.txtBeschreibung.Text = "" Me.txtBezeichnung.Text = "" Me.txtGueltigbis.Text = "" Me.txtPruefgegenstand.Text = C1Daten.Columns("Pruefgegenstand").Value Me.txtPeriodizitaet.Text = C1Daten.Columns("Periodizitaet").Value Me.txtPrioritaet.Text = C1Daten.Columns("Prioritaet").Value Me.txtZeitpunkt.Text = C1Daten.Columns("Zeitpunkt").Value Me.txtVerantwortlich.Text = C1Daten.Columns("Verantwortung").Value Me.txtVerantwortungISI.Text = C1Daten.Columns("Verantwortung_ISI").Value Me.txtBeschreibung.Text = C1Daten.Columns("Beschreibung").Value Me.txtBezeichnung.Text = C1Daten.Columns("Bezeichnung").Value Me.txtGueltigbis.Text = C1Daten.Columns("Gueltig_bis").Value Me.DokumenteAllgemein.Show_Toolbar = False Me.DokumenteAllgemein.ConnectionString = Globals.sConnectionString Me.DokumenteAllgemein.Mitarbeiternr = Globals.clsmitarbeiter.iMitarbeiternr.Value Me.DokumenteAllgemein.Doktype = 7 Me.DokumenteAllgemein.ThemaNr = C1Daten.Columns("massnahmeplannr").Value Me.DokumenteAllgemein.Refresh() Me.DokumenteAllgemein.TempFilePath = Globals.clsapplication.sTmp_filepath.Value Catch ex As Exception 'MsgBox(ex.Message) End Try End Sub Private Sub TSBtnAddNew_Click(sender As Object, e As EventArgs) Handles TSBtnAddNew.Click Dim f As New frmMassnahmeplanDetail() f.massnahmeplanHandler = Me.Handle f.MdiParent = Me.MdiParent f.Show() End Sub Private Sub DetailsAnzeigenBearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DetailsAnzeigenBearbeitenToolStripMenuItem.Click Try c1bookmark = C1Daten.Bookmark Dim f As New frmMassnahmeplanDetail f.massnahmeplannr = Me.C1Daten.Columns("massnahmeplannr").Value f.MdiParent = Me.MdiParent f.massnahmeplanHandler = Me.Handle f.Show() Catch ex As Exception End Try End Sub Private Sub C1Daten_DoubleClick(sender As Object, e As EventArgs) Handles C1Daten.DoubleClick Try DetailsAnzeigenBearbeitenToolStripMenuItem_Click(sender, e) Catch ex As Exception End Try End Sub Private Sub TSBtnQuit_Click(sender As Object, e As EventArgs) Handles TSBtnQuit.Click Me.Close() End Sub Private Sub evh_Pruefplandetail_Saved(handler As Integer, key As Integer) Handles evh.MassnahmeplanDetail_Saveed, evh.MassnahmeplanDetail_Closed Try If handler = Me.Handle Then Me.Refresh_List() For i = 0 To Me.C1Daten.Splits(0).Rows.Count - 1 If C1Daten.Columns("massnahmeplannr").CellValue(i) = key Then Me.C1Daten.Bookmark = i Refresh_Details() End If Next End If Catch End Try End Sub Private Sub tsBtnSearchStruktur_Definition_Click(sender As Object, e As EventArgs) Handles tsBtnSearchStruktur_Definition.Click Refresh_List(Me.tsTxtSearch.Text) End Sub Private Sub ToolStripButton4_Click(sender As Object, e As EventArgs) Handles tsbtnFilterAufheben.Click Me.tsTxtSearch.Text = "" Refresh_List(Me.tsTxtSearch.Text) End Sub Private Sub tsTxtSearch_KeyDown(sender As Object, e As KeyEventArgs) Handles tsTxtSearch.KeyDown If e.KeyCode = Keys.Enter Then tsBtnSearchStruktur_Definition_Click(sender, e) End If End Sub Private Sub DefinitionAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DefinitionAnzeigenToolStripMenuItem.Click Dim f As New frmVorgabeDefinition f.Key = Me.C1Daten.Columns("VorgabeDefinitionNr").Value f.ShowDialog() End Sub Private Sub NeueDefinitionErfassenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeueDefinitionErfassenToolStripMenuItem.Click TSBtnAddNew_Click(sender, e) End Sub Private Sub VorgabeAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VorgabeAnzeigenToolStripMenuItem.Click Dim f As New frmVorgabe(Me.C1Daten.Columns("massnahmeplannr").Value, True) f.MdiParent = Me.MdiParent f.Show() End Sub Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click DetailsAnzeigenBearbeitenToolStripMenuItem_Click(sender, e) End Sub Private Sub TSBtnDelete_Click(sender As Object, e As EventArgs) Handles TSBtnDelete.Click Try Dim i As Integer = Me.massnahmeplan.Get_Data(Me.C1Daten.Columns("Massnahmeplannr").Value) If MsgBox("Massnahme löschen?", vbYesNo + vbQuestion) = MsgBoxResult.Yes Then Me.massnahmeplan.Get_Data(Me.C1Daten.Columns("massnahmeplannr").Value) Me.massnahmeplan.Delete_Data() Me.Refresh_List() End If Catch ex As Exception End Try End Sub Private Sub MassnahmeGenerierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MassnahmeGenerierenToolStripMenuItem.Click Generate_Action() End Sub Public Function Generate_Action() Try Dim ds As New DataSet Dim connection As New SqlConnection() Dim da As New SqlDataAdapter("", connection) Dim sqlcmd As New SqlCommand sqlcmd.CommandText = "generate_massnahme" 'sqlcmd.CommandText = "generate_pruefschritt" sqlcmd.Parameters.Add(New SqlParameter("@massnahmeplannr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.C1Daten.Columns("massnahmeplannr").Value)) sqlcmd.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value)) sqlcmd.CommandType = CommandType.StoredProcedure sqlcmd.Connection = connection Try connection.ConnectionString = Globals.sConnectionString connection.Open() sqlcmd.ExecuteNonQuery() MsgBox("Generierung abgeschlossen") Catch ex As Exception MsgBox(ex.Message) Finally connection.Close() da.Dispose() sqlcmd.Dispose() End Try Catch ex As Exception MsgBox(ex.Message) End Try End Function #Region "Toolbar" #End Region End Class