Imports System.Data Imports System.Data.SqlClient Imports System.Data.SqlTypes Public Class FrmDokMail Dim Tablename As String = "" Private Sub FrmDokMail_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Dim msg As MsgBoxResult If Me.DataSet1.HasChanges Then msg = Globals.MyMsg.Show_MessageYesNoCancel(2) If msg = MsgBoxResult.No Then e.Cancel = False End If If msg = MsgBoxResult.Yes Then If Save_Data() Then e.Cancel = False Else e.Cancel = True End If If msg = MsgBoxResult.Cancel Then e.Cancel = True End If End Sub Private Sub cldDomainBerechtigung_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Tablename = "DokEditMail" Globals.MandantNr = 1 Dim dbconn As New EDOKA.DB_Connection() Me.SqlConnection1.ConnectionString = Globals.sConnectionString Me.SqlConnection1.Open() Try Me.SqlDataAdapter1.Fill(Me.DataSet1) Catch ex As Exception MsgBox(ex.Message) End Try Me.DomainList.DataSource = Me.DataSet1 Me.DomainList.DataMember = Me.DataSet1.Tables(0).TableName SpaltenTitel_Aktualisieren(Me.DataSet1) DropDown_Bindung() End Sub Private Sub DropDown_Bindung() conn.OpenConnection() Dim t As New DataTable t = Generic_Select(1) Me.drpDokumenttyp.DataSource = t Me.drpDokumenttyp.ListField = "Bezeichnung" Me.drpDokumenttyp.DataField = "Dokumenttypnr" Me.drpDokumenttyp.ValueTranslate = True Me.DomainList.Columns("DokumenttypNr").DropDown = Me.drpDokumenttyp Dim T2 As New DataTable T2 = Generic_Select(2) Me.DrpStatus.DataSource = T2 Me.DrpStatus.ListField = "Bezeichnung" Me.DrpStatus.DataField = "Status_Bezeichnungnr" Me.DrpStatus.ValueTranslate = True Me.DomainList.Columns("Status").DropDown = Me.DrpStatus conn.CloseConnection(True) End Sub Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick Select Case ToolBar1.Buttons.IndexOf(e.Button) Case 0 'close button Me.Close() Case 1 'Speichern Save_Data() End Select End Sub Private Function Save_Data() As Boolean Save_Data = True Try SqlDataAdapter1.Update(Me.DataSet1) Catch ex As Exception MsgBox(Globals.MyMsg.Get_Meldungstext(902)) Save_Data = False End Try End Function Private Sub DomainList_AfterInsert(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DomainList.AfterInsert Dim i As Integer 'Defaulwerte erstellt_am, mutiert_am, mutierer und aktiv setzen Try For i = 0 To DomainList.Columns.Count - 1 If Me.DomainList.Columns(i).DataField = "Aktiv" Then Me.DomainList.Columns(i).Value = 1 End If If Me.DomainList.Columns(i).DataField = "Erstellt_am" Then Me.DomainList.Columns(i).Value = Now End If If Me.DomainList.Columns(i).DataField = "Mutiert_am" Then Me.DomainList.Columns(i).Value = Now End If If Me.DomainList.Columns(i).DataField = "Mutierer" Then Me.DomainList.Columns(i).Value = Globals.MitarbeiterNr End If If Me.DomainList.Columns(i).DataField = "korrigiert_am" Then Me.DomainList.Columns(i).Value = DBNull.Value End If Next Catch End Try End Sub Private Sub domainlist_aftercellupdate(ByVal sender As System.Object, ByVal e As C1.Win.C1TrueDBGrid.ColEventArgs) Handles DomainList.AfterColUpdate 'Aktualisieren von Mutierer und Mutiert_am Dim i As Integer Try For i = 0 To Me.DomainList.Columns.Count - 1 If Me.DomainList.Columns(i).DataField = "Mutiert_am" Then Me.DomainList.Columns(i).Value = Now If Me.DomainList.Columns(i).DataField = "Mutierer" Then Me.DomainList.Columns(i).Value = Globals.MitarbeiterNr If Me.DomainList.Columns(i).DataField = "korrigiert_am" Then Me.DomainList.Columns(i).Value = DBNull.Value Next 'neuer DB-Key auslösen, sofern kein Key vorhanden ist If Me.DomainList.Columns(0).Value Is DBNull.Value Then Dim dbkey As New edokadb.clsMyKey_Tabelle() Dim key As Long dbkey.cpMainConnectionProvider = conn key = dbkey.get_dbkey(Tablename) Me.DomainList.Columns(0).Value = key For i = 0 To Me.DomainList.Columns.Count - 1 If Me.DomainList.Columns(i).DataField = "mandantnr" Then Me.DomainList.Columns(i).Value = Globals.MandantNr End If Next dbkey.Dispose() End If Catch End Try End Sub Private Sub DomainList_RowColChange(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles DomainList.RowColChange Exit Sub If Me.DomainList.Columns(1).Value Is DBNull.Value Then Me.DomainList.Splits(0).DisplayColumns(1).Locked = False Else Me.DomainList.Splits(0).DisplayColumns(1).Locked = True End If If Me.DomainList.Columns(2).Value Is DBNull.Value Then Me.DomainList.Splits(0).DisplayColumns(2).Locked = False Else Me.DomainList.Splits(0).DisplayColumns(2).Locked = True End If Try Catch ex As Exception If Me.DomainList.Columns(1).Value = "" Then Me.DomainList.Splits(0).DisplayColumns(1).Locked = False Else Me.DomainList.Splits(0).DisplayColumns(1).Locked = True End If End Try Try If Me.DomainList.Columns(2).Value = "" Then Me.DomainList.Splits(0).DisplayColumns(2).Locked = False Else Me.DomainList.Splits(0).DisplayColumns(2).Locked = True End If Catch ex As Exception End Try End Sub Public Sub SpaltenTitel_Aktualisieren(ByVal ds As DataSet) 'Spaltentitel setzen Dim titel As New EDOKA.MySpaltenTitel() Dim anzcols As Integer Dim cols(Me.DomainList.Splits(0).DisplayColumns.Count) As C1.Win.C1TrueDBGrid.C1DisplayColumn Dim ts As New EDOKA.Tabellenspalte() Dim i As Integer Dim t As New DataTable() Dim dc As C1.Win.C1TrueDBGrid.C1DisplayColumn Dim s As String anzcols = Me.DomainList.Splits(0).DisplayColumns.Count t = ds.Tables(0) ts.Tabelle = Me.Tablename For i = 0 To Me.DomainList.Columns.Count - 1 s = Me.DomainList.Columns(i).DataField ts.Feld = s ts.getspalte() Me.DomainList.Columns(i).Caption = ts.spaltenname If ts.ColWith = 0 Then Me.DomainList.Splits(0).DisplayColumns(i).Width = 0 Me.DomainList.Splits(0).DisplayColumns(i).Visible = False Else Me.DomainList.Splits(0).DisplayColumns(i).Width = ts.ColWith End If If ts.locked Then Me.DomainList.Splits(0).DisplayColumns(i).Locked = True End If If ts.AlsHacken Then Me.DomainList.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox End If 'Präsentation von aktiv If Me.DomainList.Columns(i).DataField = "aktiv" Then Me.DomainList.Columns(i).ValueItems.Presentation = C1.Win.C1TrueDBGrid.PresentationEnum.CheckBox Me.DomainList.Columns(i).ValueItems.DefaultItem = True Me.DomainList.Columns(i).DefaultValue = True Me.DomainList.Columns(i).FilterText = True End If If Me.DomainList.Columns(i).DataField = "erstellt_am" Then Me.DomainList.Columns(i).DefaultValue = Now End If Next End Sub Private Sub DatenSichernToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DatenSichernToolStripMenuItem.Click Save_Data() End Sub Private Function Generic_Select(ByVal typ As Integer) As DataTable Dim scmCmdToExecute As SqlCommand = New SqlCommand() Select Case typ Case 1 'benötigt scmCmdToExecute.CommandText = "SP_Get_Stammdaten" Case 2 'Benötigt scmCmdToExecute.CommandText = "SP_Get_Stammdaten" Case Else End Select scmCmdToExecute.CommandType = CommandType.StoredProcedure Dim dtToReturn As DataTable = New DataTable() Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute) scmCmdToExecute.Connection = conn.scoDBConnection Try Select Case typ Case 1 scmCmdToExecute.Parameters.Add(New SqlParameter("@Typ", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1)) Case 2 scmCmdToExecute.Parameters.Add(New SqlParameter("@Typ", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 2)) Case Else End Select If typ = 1 Then End If sdaAdapter.Fill(dtToReturn) Return dtToReturn Catch ex As Exception ' // some error occured. Bubble it to caller and encapsulate Exception object Throw New Exception("DokEditMail::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally scmCmdToExecute.Dispose() sdaAdapter.Dispose() End Try End Function End Class