Imports C1.Win.C1TrueDBGrid
Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Public Class frmVertragselementApplikationZuweisen
#Region "Deklarationen"
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 ApplikationNr As Integer
Dim ApplikationBezeichnung As String
Dim VertragselementNr As Integer
Dim VertragselementApplikationnr As Integer
Dim Version As String
Dim dt As New DataTable
Dim NewElement As Boolean = False
Dim LizenzenVorhanden As Boolean
Dim Lizenzumteilen As Boolean = False
Dim VertrasgelementApplikation As New TKB.VV.Vertrag.clsVertragselementApplikation
#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 CheckBox Then
Dim ctl As CheckBox = c
AddHandler ctl.CheckedChanged, evh
End If
If TypeOf c Is ListBox Then
Dim ctl As ListBox = c
AddHandler ctl.SelectedValueChanged, evh
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
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 "Closing / Check_Changes"
'''
''' Schliessen des Formulars
'''
'''
'''
'''
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
Globals.MyEventHanlder.Vertragsapplikation_Closed()
Me.Dispose()
End If
End Sub
'''
''' Prüfung, ob Datenänderungen vorgenommen wurden.
'''
'''
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
Sub New()
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
End Sub
Sub New(ByVal applikationnr As Integer, ByVal applikationbezeichnung As String, ByVal Vertragselementnr As Integer, ByVal vertragselementapplikationnr As Integer, ByVal version As String, ByVal formreadonly As Boolean, ByVal LizenzenVorhanden As Boolean)
InitializeComponent()
Me.FormReadonly = formreadonly
Me.ApplikationNr = applikationnr
Me.ApplikationBezeichnung = applikationbezeichnung
Me.VertragselementNr = Vertragselementnr
Me.VertragselementApplikationnr = vertragselementapplikationnr
Me.Version = version
Me.LizenzenVorhanden = LizenzenVorhanden
If Me.ApplikationNr = -1 Then Me.NewElement = True
End Sub
Private Sub frmVertragselementApplikationZuweisen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
sec.Set_Form_Security(Me)
Me.txtApplikation.Text = Me.ApplikationBezeichnung
Me.refresh_applikationen()
If Me.NewElement = True Then
Me.cbAktiv.Checked = True
Else
Me.VertrasgelementApplikation.Get_VertragselementApplikation(Me.VertragselementApplikationnr)
Me.cbaktiv.Checked = Me.VertrasgelementApplikation.bAktiv.Value = True
Me.txtErstelltam.Text = VertrasgelementApplikation.daErstellt_am.ToString
Me.txtMutiertam.Text = VertrasgelementApplikation.daMutiert_am.ToString
Me.txtMutierer.Text = VertrasgelementApplikation.iMutierer.ToString
End If
Me.AddChanges(Me)
If Me.FormReadonly = True Then sec.Set_Form_Readonly(Me)
If Me.LizenzenVorhanden = True Then
sec.Set_Form_Readonly(Me)
End If
If Me.ApplikationNr = -1 Then Me.btnNeueVersion.Enabled = False
If Me.FormReadonly Then
sec.Set_Form_Readonly(Me)
Me.TSBtnSave.Enabled = False
End If
End Sub
Private Sub btnNeueVersion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNeueVersion.Click
Dim f As New frmVersion(0, Me.applikationnr, True, False)
f.ShowDialog()
Me.refresh_applikationen()
End Sub
Public Function Get_Versionen(ByVal applikationnr As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_get_versionen"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@applikationnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, applikationnr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value))
Try
conn.OpenConnection()
Catch
End Try
sdaAdapter.Fill(dtToReturn)
conn.CloseConnection(True)
Return dtToReturn
Catch ex As Exception
Throw New Exception("clsApplikation::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
Private Sub refresh_applikationen()
dt = Get_Versionen(Me.applikationnr)
Me.lbVersionen.Items.Clear()
Me.lbVersionen.Items.Add("-")
Dim i As Integer = 0
i = 0
For Each r As DataRow In dt.Rows
Me.lbVersionen.Items.Add(r.Item("Version"))
If r.Item("Version") = Version Then Me.lbVersionen.SelectedIndex = i + 1
i = i + 1
Next
If Version = "" Then Me.lbVersionen.SelectedIndex = 0
End Sub
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Close()
End Sub
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Save_Data()
Me.Close()
End Sub
Private Sub Save_Data()
If Me.ApplikationNr = -1 Then
msg.show_standardmessage(858, MsgBoxStyle.Critical)
Exit Sub
End If
If Me.NewElement = True Then
Me.VertrasgelementApplikation.Add_New(Me.VertragselementNr)
Else
Me.VertrasgelementApplikation.Get_VertragselementApplikation(Me.VertragselementApplikationnr)
End If
Me.VertrasgelementApplikation.iApplikationnr = New SqlInt32(CType(Me.ApplikationNr, Int32))
Dim versionnr As Integer = 0
For Each r As DataRow In dt.Rows
If r.Item("Version") = Me.lbVersionen.Text Then
versionnr = r.Item("ApplikationVersionnr")
End If
Next
Me.VertrasgelementApplikation.bAktiv = New SqlBoolean(CType(Me.cbAktiv.Checked, Boolean))
Me.VertrasgelementApplikation.iApplikationVersionNr = New SqlInt32(CType(versionnr, Int32))
'Me.VertrasgelementApplikation.daErstellt_am = New SqlDateTime(CType(Now, DateTime))
Me.VertrasgelementApplikation.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
Me.VertrasgelementApplikation.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr.Value, Int32))
Me.VertrasgelementApplikation.sBezeichnungLizenverwaltung = New SqlString(CType(Me.txtBezeichnungLizenzverwaltung.Text, String))
Me.VertrasgelementApplikation.Save_Data()
If Me.Lizenzumteilen = True Then
End If
Me.FormDataChanged = False
End Sub
Private Sub btnApplikationSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApplikationSelect.Click
Dim f As New frmVertragselementApplikation(Me.VertragselementNr, True)
f.ShowDialog()
If f.SelectedApplication <> Me.ApplikationNr And f.SelectedApplication > 0 Then
Me.ApplikationNr = f.SelectedApplication
Me.txtApplikation.Text = f.SelectedApplicationnName
End If
If Me.ApplikationNr = -1 Then
Me.btnApplikationSelect.Enabled = False
Else
Me.btnApplikationSelect.Enabled = True
End If
If Me.txtApplikation.Text <> "" Then Me.btnNeueVersion.Enabled = True
Me.refresh_applikationen()
End Sub
Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click
Me.Save_Data()
Me.Close()
End Sub
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
TSBtnQuit_Click(sender, e)
End Sub
End Class