You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ITSM/.svn/pristine/15/15d9b7ed27399ddc829c8cb5301...

453 lines
16 KiB

Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Imports System.Text.RegularExpressions
Public Class frmPendenz
#Region "Deklarationen"
Dim Pendenz As New TKB.VV.Vertrag.clsPendenz
Dim sec As New TKB.VV.Utils.MySecurity
Dim msg As New TKB.VV.Utils.MyMessage
Dim FormReadonly As Boolean = False
Dim FormDataChanged As Boolean = False
Dim SpaltenTitel As New TKB.VV.Utils.Tabellenspalte
Private Aktuelle_Pendenz As Integer
Private Aktuelles_Vertragselement As Integer = 0
Private PendenzStatus As New TKB.VV.DB.clsPendenzstatus
Private Anzeige As Boolean = False
Dim Neuer_Datensatz As Boolean = False
#End Region
#Region "Closing / Check_Changes"
''' <summary>
''' Schliessen des Formulars
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub FormularClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Me.FormReadonly = True Then Exit Sub
If check_changes() = False Then
e.Cancel = True
Else
If Me.Pendenz.Neuer_Datensatz = True Then Me.Pendenz.Delete(Me.Pendenz.iPendenzNr.Value)
Globals.MyEventHanlder.Pendenz_Closed()
Me.dispose()
End If
End Sub
''' <summary>
''' Prüfung, ob Datenänderungen vorgenommen wurden.
''' </summary>
''' <remarks></remarks>
Private Function Check_Changes() As Boolean
If Me.FormReadonly Then Exit Function
Dim msgres As MsgBoxResult
If Me.FormDataChanged Then
msgres = msg.Show_MessageYesNoCancel(3)
Select Case msgres
Case MsgBoxResult.Yes
Save_data()
Return True
Case MsgBoxResult.Cancel
Return False
Case MsgBoxResult.No
Return True
End Select
Else
Return True
End If
End Function
#End Region
#Region "Eventhandler ChangeEreignisse"
''' <summary>
''' Allg Eventhandler für Chanage-Ereignise festlegen
''' </summary>
''' <param name="Container"></param>
''' <remarks></remarks>
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 CheckBox Then
Dim ctl As CheckBox = c
AddHandler ctl.CheckedChanged, evh
End If
Next
End Sub
''' <summary>
''' Envent-Handler für Change-Ereignisse
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
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
''' <summary>
''' 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
''' </summary>
''' <param name="BaseControl">Base-Contrlo (z.B. aktuelles Formular</param>
''' <param name="Key">Schlüssel welcher gesucht werden soll</param>
''' <param name="L">Liste der gefundenen Objekte</param>
''' <returns>True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde.
''' </returns>
''' <remarks></remarks>
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 "Formular"
''' <summary>
''' Standard Constructore New
''' </summary>
''' <remarks></remarks>
Sub New()
InitializeComponent()
Me.Aktuelle_Pendenz = -1
End Sub
''' <summary>
''' Formualr mit Vertragselementnr und Anzeigestatus öffnen
''' </summary>
''' <param name="Vertragselementnr">Nr des Vertragspartners</param>
''' <param name="Anzeige">True=Readonly, False=normal</param>
''' <remarks></remarks>
Sub New(ByVal Pendenznr As Integer, ByVal vertragselementnr As Integer, ByVal Anzeige As Boolean, Optional ByVal CreateNew As Boolean = False)
MyBase.New()
InitializeComponent()
If CreateNew Then
Me.Aktuelle_Pendenz = Me.Pendenz.Add_New(vertragselementnr)
Me.Pendenz.Neuer_Datensatz = True
Else
Me.Aktuelle_Pendenz = Pendenznr
End If
Aktuelles_Vertragselement = vertragselementnr
Me.Anzeige = Anzeige
End Sub
Public Overloads Sub dispose()
Me.Pendenz.Dispose()
sec = Nothing
msg = Nothing
MyBase.Dispose()
End Sub
''' <summary>
''' Load-Methode
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub frmPendenz_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Anzeige = True Then
Me.TSBtnSuche.Enabled = False
Me.TSBtnSave.Enabled = False
Else
Me.TSBtnSuche.Enabled = True
End If
If Me.TSBtnSave.Enabled = False Or Me.TSBtnSave.Visible = False Then
Me.FormReadonly = True
Me.TSBtnCopy.Enabled = False
Me.TSBtnNew.Enabled = False
Me.TSBtnDelete.Enabled = False
Else
Me.FormReadonly = False
End If
Load_Securitylevel()
'Pendenzstatus laden
Me.cboxStatus.Items.Clear()
Me.cboxStatus.DataSource = Me.Pendenz.Pendenzstatus.Tabledata.Tables(0)
Me.cboxStatus.DisplayMember = "Bezeichnung"
Try
Me.cboxStatus.ValueMember = "PendenzStatusnr"
Catch ex As Exception
End Try
'Personen laden
AddChanges(Me)
Get_Data(Me.Aktuelle_Pendenz)
If Me.Neuer_Datensatz Then
Me.Pendenz.Neuer_Datensatz = True
Me.Neuer_Datensatz = False
End If
If Me.FormReadonly Then sec.Set_Form_Readonly(Me)
End Sub
#End Region
#Region "Buttons/Menu"
''' <summary>
''' Formular schliessen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
''' <summary>
''' Sicherungs-Button betätigt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click
Me.Save_Data()
Me.txtMutiert_am.Text = Me.Pendenz.daMutiert_am.ToString
Me.FormDataChanged = False
End Sub
''' <summary>
''' Datensatz kopieren
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnCopy.Click
If Me.Check_Changes = False Then Exit Sub
Me.Get_Data(Pendenz.Create_Copy(Me.Pendenz.iPendenzNr.Value))
Me.Pendenz.Neuer_Datensatz = True
End Sub
''' <summary>
''' Neuer Datensatz erstellen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnNew.Click
If Me.Check_Changes = False Then Exit Sub
Me.Get_Data(Me.Pendenz.Add_New(Me.Aktuelles_Vertragselement))
Me.Pendenz.Neuer_Datensatz = True
End Sub
''' <summary>
''' Aktueller Datensatz inaktivieren
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnDelete.Click
If msg.Show_MessageYesNo(290) = MsgBoxResult.Yes Then
Me.Pendenz.Delete_Pendenz(Me.Pendenz.iPendenzNr.Value)
Me.Close()
End If
End Sub
''' <summary>
''' Menu Beenden
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
Me.TSBtnQuit_Click(sender, e)
End Sub
''' <summary>
''' Vertragselement suchen und zuordnen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnVertragselementSuche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVertragselementSuche.Click
Dim vertragselement As New TKB.VV.Vertrag.clsVertragselement
Dim i As Integer = 0
If vertragselement.Suchen(i) Then
Me.Aktuelles_Vertragselement = i
Me.txtVertragselement.Text = vertragselement.Get_Vertragselementbezeichnung(i)
Me.FormDataChanged = True
End If
vertragselement.dispose()
End Sub
#End Region
#Region "Daten"
''' <summary>
''' Daten ab DB laden uns ins Form befüllen
''' </summary>
''' <param name="Vertragselementnr"></param>
''' <remarks></remarks>
Private Sub Get_Data(ByVal Pendenznr As Integer)
Try
Pendenz.Get_Pendenz(Pendenznr)
Me.txtVertragselement.Text = Pendenz.Vertragselement.sBezeichnung.ToString
Me.txtVerantwortlich.Text = Pendenz.sVerantwortlich.Value
Me.Aktuelles_Vertragselement = Me.Pendenz.iVertragselementNr.Value
Me.Aktuelle_Pendenz = Me.Pendenz.iPendenzNr.Value
Me.txtBezeichnung.Text = Me.Pendenz.sBezeichnung.Value
Me.txtBeschreibung.Text = Me.Pendenz.sBeschreibung.Value
Me.txtTermin.Text = Me.Pendenz.daTermin.ToString
Me.cboxStatus.SelectedValue = Me.Pendenz.iPendenzStatusNr.Value
Me.txtErstellt_am.Text = Pendenz.daErstellt_am.ToString
Me.txtMutiert_am.Text = Pendenz.daMutiert_am.ToString
Me.txtMutierer.Text = Pendenz.iMutierer.ToString
Me.cboxSecurityLevel.SelectedValue = Me.Pendenz.iSecurityLevelNr.Value
Me.cbaktiv.Checked = Me.Pendenz.bAktiv.Value = True
sec.Set_Form_Security(Me)
Me.FormDataChanged = False
Catch ex As Exception
For Each ctl As ToolStripButton In Me.ToolStrip1.Items
ctl.Enabled = False
Next
Me.TSBtnQuit.Enabled = True
Me.TSBtnSuche.Enabled = True
End Try
Me.FormDataChanged = False
End Sub
''' <summary>
''' Daten ab Form speichern
''' </summary>
''' <remarks></remarks>
Private Sub Save_data()
Me.Pendenz.iPendenzStatusNr = New SqlInt32(CType(Me.cboxStatus.SelectedValue, Int32))
Me.Pendenz.iVertragselementNr = New SqlInt32(CType(Me.Aktuelles_Vertragselement, Int32))
Me.Pendenz.sVerantwortlich = New SqlString(CType(Me.txtVerantwortlich.Text, String))
Me.Pendenz.sBezeichnung = New SqlString(CType(Me.txtBezeichnung.Text, String))
Me.Pendenz.sBeschreibung = New SqlString(CType(Me.txtBeschreibung.Text, String))
If IsDate(Me.txtTermin.Text) Then
Me.Pendenz.daTermin = New SqlDateTime(CType(Me.txtTermin.Text, DateTime))
Else
Me.Pendenz.daTermin = New SqlDateTime(CType(SqlDateTime.Null, DateTime))
End If
Me.PendenzStatus.cpMainConnectionProvider = Globals.conn
Me.PendenzStatus.iPendenzStatusNr = New SqlInt32(CType(Me.cboxStatus.SelectedValue, Int32))
Me.PendenzStatus.SelectOne()
' Me.Pendenz.bAktiv = New SqlBoolean(CType(Me.cbaktiv.Checked = True, Boolean))
If Me.PendenzStatus.bPendenz_Inaktivieren.Value = True Then
Me.Pendenz.bAktiv = New SqlBoolean(CType(False, Boolean))
Me.cbaktiv.Checked = False
' Me.Pendenz.bAktiv = New SqlBoolean(CType(Me.cbaktiv.Checked = True, Boolean))
Else
Me.Pendenz.bAktiv = New SqlBoolean(CType(True, Boolean))
Me.cbaktiv.Checked = True
End If
Me.Pendenz.iSecurityLevelNr = New SqlInt32(CType(Me.cboxSecurityLevel.SelectedValue, Int32))
Me.Pendenz.Save_Data()
Me.FormDataChanged = False
End Sub
#End Region
#Region "Security"
''' <summary>
''' Laden der Securitylevel-Daten in die Combobox
''' </summary>
''' <remarks></remarks>
Private Sub Load_Securitylevel()
Dim seclevel As New TKB.VV.DB.clsSecurityLevel
Dim secleveldata As New DataTable
seclevel.cpMainConnectionProvider = Globals.conn
Globals.conn.OpenConnection()
secleveldata = seclevel.SelectAll
Globals.conn.CloseConnection(True)
Me.cboxSecurityLevel.DataSource = secleveldata
Me.cboxSecurityLevel.DisplayMember = "Bezeichnung"
Me.cboxSecurityLevel.ValueMember = "SecurityLevelNr"
seclevel.Dispose()
End Sub
#End Region
''' <summary>
''' Handelt das Change-Ereignis eines Datetimepckers und stellt das ausgewählte Datum in das entsprechende Textfeld
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub DateTimePicker_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
dtPickerTermin.ValueChanged
Dim s As String
Dim obj As DateTimePicker = sender
s = obj.Name
s = "txt" + s.Substring(8, s.Length - 8)
Dim l As New List(Of Control)
Dim txtb As MaskedTextBox
GetControl(Me, s, l)
For Each ctl As Control In l
txtb = CType(ctl, MaskedTextBox)
txtb.Text = obj.Value
Next
End Sub
End Class