Imports System Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Imports DevComponents Imports DropDownControls Public Class clsMassnahmeplan Inherits DB.clsMassnahmeplan #Region "Deklarationen" Public daten As New DataTable Public Neuer_Datensatz As Boolean = False Public Mitarbeiterdaten As New DataTable Public Zeitpunkt As New DataTable Public Periodizitaet As New DataTable Public Prioritaet As New DataTable Public VerantwortungISI As New DataTable Public Verantwortung As New DataTable Dim stammdaten As New DB.clsStammdaten Dim SpaltenTitel As New Utils.Tabellenspalte Dim Definition_Massnahmeplan As New DataTable Dim clsDefinition_Massnahmeplan As New DB.clsDefinition_massnahmeplan Public Terminierung As New DataTable Dim mMutierer As String Property MutiererText() As String Get Return mMutierer End Get Set(ByVal value As String) mMutierer = value End Set End Property #End Region Sub New() MyBase.New() Zeitpunkt = stammdaten.Get_Stammdaten("Zeitpunkt", "Beschreibung") Periodizitaet = stammdaten.Get_Stammdaten("Periodizitaet", "Bezeichnung") Prioritaet = stammdaten.Get_Stammdaten("Prioritaet", "Bezeichnung") VerantwortungISI = stammdaten.Get_Stammdaten("VerantwortungIsi", "Bezeichnung") Verantwortung = stammdaten.Get_Stammdaten("Verantwortung", "Bezeichnung") Terminierung = stammdaten.Get_Stammdaten("Terminierung", "Bezeichnung") End Sub Public Overloads Sub dispose() MyBase.Dispose() Try Me.Zeitpunkt.Dispose() Me.Periodizitaet.Dispose() Me.Prioritaet.Dispose() Me.VerantwortungISI.Dispose() Me.Verantwortung.Dispose() Me.stammdaten = Nothing Me.Definition_Massnahmeplan.Dispose() Catch End Try End Sub ''' ''' Mutierer auslesen ''' ''' ''' Public Function Get_Mutierer(ByVal nr As Integer) As String Try Dim ma As New DB.clsMitarbeiter Dim dt As New DataTable Dim Retvalue As String ma.cpMainConnectionProvider = Globals.conn ma.iMitarbeiternr = New SqlInt32(CType(nr, Int32)) dt = ma.SelectOne() If dt.Rows.Count = 0 Then Retvalue = ("{" + nr.ToString + "}") Else Retvalue = ma.sName.ToString + " " + ma.sVorname.ToString + ", " + ma.sTgnummer.ToString End If ma.Dispose() dt.Dispose() Return Retvalue Catch Return "" End Try End Function Public Function Get_Data(ByVal Nr As Integer) Me.cpMainConnectionProvider = Globals.conn Me.iMassnahmeplanNr = New SqlInt32(CType(Nr, Int32)) Globals.conn.OpenConnection() Me.daten = Me.SelectOne() Globals.conn.CloseConnection(True) Try Me.MutiererText = Get_Mutierer(Me.iMutierer.Value) Catch ex As Exception Me.MutiererText = "" End Try End Function Public Function Save_Data() As Integer Me.cpMainConnectionProvider = Globals.conn Me.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr, Int32)) Me.daMutiert_am = New SqlDateTime(CType(Now, DateTime)) Globals.conn.OpenConnection() Me.Update() Globals.conn.CloseConnection(True) Me.Neuer_Datensatz = False End Function Public Function Create_Copy(Optional ByVal Basenr As Integer = 0) As Integer If Basenr <> 0 Then Get_Data(Basenr) End If Dim db As New DB.clsMyKey_Tabelle db.cpMainConnectionProvider = Globals.conn Dim newkey = db.get_dbkey("Massnahmeplan") db.Dispose() Me.cpMainConnectionProvider = Globals.conn Me.iMassnahmeplanNr = New SqlInt32(CType(newkey, Int32)) Me.daErstellt_am = New SqlDateTime(CType(Now, DateTime)) Me.daMutiert_am = New SqlDateTime(CType(Now, DateTime)) Me.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr, Int32)) Globals.conn.OpenConnection() Me.Insert() Globals.conn.CloseConnection(True) Me.Neuer_Datensatz = True Return newkey End Function ''' ''' Löschen eines Datensatzes erstellen. ''' ''' Ursprungs-Person: Ist dieser Wert nicht 0, werden die Daten mit BaseNr zuerst gelesen ''' ''' Public Function Delete_Data(Optional ByVal Basenr As Integer = 0) As Integer If Basenr <> 0 Then Get_Data(Basenr) End If If bAktiv.Value = False Then Exit Function Me.cpMainConnectionProvider = Globals.conn Me.bAktiv = New SqlBoolean(CType(False, Boolean)) Me.daMutiert_am = New SqlDateTime(CType(Now, DateTime)) Me.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr, Int32)) Globals.conn.OpenConnection() Me.Update() Globals.conn.CloseConnection(True) Me.Neuer_Datensatz = False End Function Public Overloads Function Delete(Optional ByVal Basenr As Integer = 0) As Integer If Basenr <> 0 Then Get_Data(Basenr) End If Me.cpMainConnectionProvider = Globals.conn Globals.conn.OpenConnection() MyBase.Delete() Globals.conn.CloseConnection(True) Me.Neuer_Datensatz = False End Function ''' ''' Neue Person einfügen ''' ''' ''' Public Function Add_New() As Integer Dim db As New DB.clsMyKey_Tabelle db.cpMainConnectionProvider = Globals.conn Dim newkey = db.get_dbkey("massnahmeplan") db.Dispose() Me.iMassnahmeplanNr = New SqlInt32(CType(newkey, Int32)) Me.daGueltig_Bis = New SqlDateTime(CType("31.12.2099", DateTime)) Me.iPrioritaetNr = New SqlInt32(CType(0, Int32)) Me.iPeriodizitaetNr = New SqlInt32(CType(0, Int32)) Me.iZeitpunktNr = New SqlInt32(CType(0, Int32)) Me.sBeschreibung = New SqlString(CType("", String)) Me.sPruefgegenstand = New SqlString(CType("", String)) Me.sHilfsmittel = New SqlString(CType("", String)) Me.sMassnahmen = New SqlString(CType("", String)) Me.iVerantwortungISINr = New SqlInt32(CType(0, Int32)) Me.sBeschreibung = New SqlString(CType("", String)) Me.bAktiv = New SqlBoolean(CType(True, Boolean)) Me.daErstellt_am = New SqlDateTime(CType(Now, DateTime)) Me.daMutiert_am = New SqlDateTime(CType(Now, DateTime)) Me.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr, Int32)) Me.daErstmals_am = New SqlDateTime(CType(DateAdd(DateInterval.Day, 1, Now), DateTime)) Me.iTerminierungID = New SqlInt32(CType(0, Int32)) Me.cpMainConnectionProvider = Globals.conn Try Globals.conn.OpenConnection() Me.Insert() Globals.conn.CloseConnection(True) Catch ex As Exception MsgBox(ex.Message) End Try Me.Neuer_Datensatz = True Return Me.iMassnahmeplanNr.Value End Function Public Function Get_massnahmeplan(ByRef c1daten As C1.Win.C1TrueDBGrid.C1TrueDBGrid, ByVal Key As Integer) Try Dim ds As New DataSet Dim connection As New SqlConnection() Dim da As New SqlDataAdapter("", connection) Dim sqlcmd As New SqlCommand sqlcmd.CommandText = "sp_get_massnahmenplan" sqlcmd.Parameters.Add(New SqlParameter("@key", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Key)) sqlcmd.CommandType = CommandType.StoredProcedure sqlcmd.Connection = connection Try connection.ConnectionString = Globals.sConnectionString connection.Open() da.SelectCommand = sqlcmd da.Fill(ds, "Datatable1") c1daten.DataSource = Nothing c1daten.DataSource = ds.Tables(0) c1daten.DataMember = ds.Tables(0).TableName SpaltenTitel.Spaltentitel_aktualisieren(c1daten, "massnahmeplan", ds.Tables(0)) 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 Public Function Get_Eintraege(ByRef c1daten As C1.Win.C1TrueDBGrid.C1TrueDBGrid, ByVal Key As Integer, Optional Searchstring As String = "") Try Dim ds As New DataSet Dim connection As New SqlConnection() Dim da As New SqlDataAdapter("", connection) Dim sqlcmd As New SqlCommand sqlcmd.CommandText = "sp_get_massnahmeplan" sqlcmd.Parameters.Add(New SqlParameter("@key", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Key)) sqlcmd.Parameters.Add(New SqlParameter("@Searchstring", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Searchstring)) sqlcmd.CommandType = CommandType.StoredProcedure sqlcmd.Connection = connection Try connection.ConnectionString = Globals.sConnectionString connection.Open() da.SelectCommand = sqlcmd da.Fill(ds, "Datatable1") c1daten.DataSource = Nothing c1daten.DataSource = ds.Tables(0) c1daten.DataMember = ds.Tables(0).TableName SpaltenTitel.Spaltentitel_aktualisieren(c1daten, "massnahmeplan", ds.Tables(0)) 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 Public Function Get_Definition_Massnahmeplan(ByVal Key As Integer, ByRef cb As CheckedListBox) Me.Definition_Massnahmeplan.Rows.Clear() Try Dim connection As New SqlConnection() Dim da As New SqlDataAdapter("", connection) Dim sqlcmd As New SqlCommand sqlcmd.CommandText = "sp_get_definition_Massnahmeplan" sqlcmd.Parameters.Add(New SqlParameter("@massnahmeplannr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Key)) sqlcmd.CommandType = CommandType.StoredProcedure sqlcmd.Connection = connection Try connection.ConnectionString = Globals.sConnectionString connection.Open() da.SelectCommand = sqlcmd da.Fill(Me.Definition_Massnahmeplan) For Each r As DataRow In Definition_Massnahmeplan.Rows cb.Items.Add(r.Item("Bezeichnung"), True) Next 'cb.DataSource = Definition_massnahmeplan 'cb.ValueMember = "Definition_massnahmeplanNr" 'cb.DisplayMember = "Bezeichnung" 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 Public Function Add_new_Zuordnung(ByVal massnahmeplannr As Integer, DefinitionNr As Integer, nodetext As String, ByRef chkcb As CheckedListBox) For Each r As DataRow In Me.Definition_Massnahmeplan.Rows If r.Item(1) = DefinitionNr Then MsgBox("Die Beziehung zu '" + nodetext + "' ist bereits vorhanden", vbExclamation) Exit Function End If Next Dim dr As DataRow = Me.Definition_Massnahmeplan.NewRow dr.Item(1) = DefinitionNr dr.Item(2) = massnahmeplannr dr.Item(3) = "31.12.2099" dr.Item(4) = True dr.Item(5) = Now dr.Item(6) = Now dr.Item(7) = Globals.clsmitarbeiter.iMitarbeiternr.Value dr.Item(8) = nodetext Me.Definition_Massnahmeplan.Rows.Add(dr) chkcb.Items.Add(nodetext + " | " + dr.Item(3).ToString, True) End Function Public Function Get_Definition_massnahmeplan(ByVal Key As Integer, ByRef tree As AdvTree.AdvTree) Me.Definition_Massnahmeplan.Rows.Clear() Try Dim connection As New SqlConnection() Dim da As New SqlDataAdapter("", connection) Dim sqlcmd As New SqlCommand sqlcmd.CommandText = "sp_get_definition_massnahmeplan" sqlcmd.Parameters.Add(New SqlParameter("@massnahmeplannr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Key)) sqlcmd.CommandType = CommandType.StoredProcedure sqlcmd.Connection = connection Try connection.ConnectionString = Globals.sConnectionString connection.Open() da.SelectCommand = sqlcmd da.Fill(Me.Definition_Massnahmeplan) Set_Zuordnungnodes(Definition_Massnahmeplan, tree) 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 Public Function Add_new_Zuordnung(ByVal Massnahmeplannr As Integer, DefinitionNr As Integer, nodetext As String, ByRef tree As AdvTree.AdvTree) For Each r As DataRow In Me.Definition_Massnahmeplan.Rows If r.Item(1) = DefinitionNr And (r(4) = True Or r(3) < Now) Then MsgBox("Die Beziehung zu '" + nodetext + "' ist bereits vorhanden", vbExclamation) Exit Function End If Next Dim dr As DataRow = Me.Definition_Massnahmeplan.NewRow dr.Item(0) = Format(Now, "ddhhmmss") dr.Item(1) = DefinitionNr dr.Item(2) = Massnahmeplannr dr.Item(3) = "31.12.2099" dr.Item(4) = True dr.Item(5) = Now dr.Item(6) = Now dr.Item(7) = Globals.clsmitarbeiter.iMitarbeiternr.Value dr.Item(8) = nodetext Me.Definition_Massnahmeplan.Rows.Add(dr) Set_Zuordnungnodes(Definition_Massnahmeplan, tree) End Function Sub Set_Zuordnungnodes(data As DataTable, ByRef tree As AdvTree.AdvTree) tree.Nodes.Clear() For Each r As DataRow In data.Rows Dim tn As New AdvTree.Node tn.Tag = r(0) tn.Text = r(8) tree.Nodes.Add(tn) Dim tn1 As New AdvTree.Node tn1.Text = r(3) tn1.Tag = r(4) tn.Nodes.Add(tn1) tn.ImageIndex = 0 If r(3) < "31.12.2099" And r(3) > Now Then tn.ImageIndex = 3 If r(3) < Now Then tn.ImageIndex = 2 If r(4) = False Then tn.ImageIndex = 1 Next End Sub Public Sub Update_Zuordnung(ByVal ID As Integer, Aktiv As Boolean, gueltig As DateTime) For Each r As DataRow In Me.Definition_Massnahmeplan.Rows If r.Item(0) = ID Then r(4) = Aktiv r(3) = gueltig End If Next End Sub Public Function Save_Definition_massnahmeplan(ByRef tree As AdvTree.AdvTree) clsDefinition_Massnahmeplan.sConnectionString = Globals.sConnectionString For Each n As AdvTree.Node In tree.Nodes For Each r As DataRow In Definition_Massnahmeplan.Rows If r(0) = n.Tag Then If r(0) > 100000 Then clsDefinition_Massnahmeplan.iDefinitionNr = New SqlInt32(CType(r(1), Int32)) clsDefinition_Massnahmeplan.imassnahmeplanNr = New SqlInt32(CType(r(2), Int32)) clsDefinition_Massnahmeplan.daGueltig_Bis = New SqlDateTime(CType(r(3), DateTime)) clsDefinition_Massnahmeplan.daErstellt_am = New SqlDateTime(CType(Now, DateTime)) clsDefinition_Massnahmeplan.daMutiert_am = New SqlDateTime(CType(Now, DateTime)) clsDefinition_Massnahmeplan.bAktiv = New SqlBoolean(CType(True, Boolean)) clsDefinition_Massnahmeplan.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr.Value, Int32)) conn.OpenConnection() clsDefinition_Massnahmeplan.Insert() conn.CloseConnection(True) Else clsDefinition_Massnahmeplan.iDefinition_massnahmeplanNr = New SqlInt32(CType(r(0), Int32)) clsDefinition_Massnahmeplan.cpMainConnectionProvider = Globals.conn clsDefinition_Massnahmeplan.SelectOne() Dim tn1 As New AdvTree.Node tn1 = n.Nodes(0) If tn1.Tag <> clsDefinition_Massnahmeplan.bAktiv.Value Or tn1.Text <> clsDefinition_Massnahmeplan.daGueltig_Bis.Value Then clsDefinition_Massnahmeplan.iDefinition_massnahmeplanNr = New SqlInt32(CType(r(0), Int32)) clsDefinition_Massnahmeplan.cpMainConnectionProvider = Globals.conn clsDefinition_Massnahmeplan.SelectOne() clsDefinition_Massnahmeplan.iDefinitionNr = New SqlInt32(CType(r(1), Int32)) clsDefinition_Massnahmeplan.imassnahmeplanNr = New SqlInt32(CType(r(2), Int32)) clsDefinition_Massnahmeplan.daGueltig_Bis = New SqlDateTime(CType(r(3), DateTime)) clsDefinition_Massnahmeplan.daErstellt_am = New SqlDateTime(CType(Now, DateTime)) clsDefinition_Massnahmeplan.daMutiert_am = New SqlDateTime(CType(Now, DateTime)) clsDefinition_Massnahmeplan.bAktiv = New SqlBoolean(CType(tn1.Tag, Boolean)) clsDefinition_Massnahmeplan.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr.Value, Int32)) conn.OpenConnection() clsDefinition_Massnahmeplan.Update() conn.CloseConnection(True) End If End If End If Next Next End Function End Class