Imports System Imports System.Data Imports System.Data.SqlTypes Imports System.Data.SqlClient Imports System.Text.RegularExpressions Public Class frmVertragsereignis #Region "Deklarationen" Dim Vertragsereignis As New TKB.VV.Vertrag.clsVertragsereignis 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 Aktuelles_Vertragselement As Integer = 0 Private Aktuelles_Vertragsereignis As Integer = 0 Private Anzeige As Boolean = False Dim Neuer_Datensatz As Boolean Dim Plausifehler As Boolean = False #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 If Me.Vertragsereignis.Neuer_Datensatz = True Then Me.Vertragsereignis.Delete(Me.Vertragsereignis.iEreignisNr.Value) Globals.MyEventHanlder.Ereignis_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() If Plausifehler = True Then Return False Return True Case MsgBoxResult.Cancel Return False Case MsgBoxResult.No Return True End Select Else Return True End If End Function #End Region #Region "Formular" ''' ''' Standard Constructore New ''' ''' Sub New() InitializeComponent() Me.Aktuelles_Vertragsereignis = -1 End Sub ''' ''' Formualr mit Vertragselementnr und Anzeigestatus öffnen ''' ''' Nr des Vertragspartners ''' True=Readonly, False=normal ''' Sub New(ByVal Vertragsereignisnr As Integer, Optional ByVal vertragselementnr As Integer = 0, Optional ByVal Anzeige As Boolean = False, Optional ByVal CreateNew As Boolean = False) MyBase.New() InitializeComponent() Me.Anzeige = Anzeige If CreateNew Then Me.Aktuelles_Vertragsereignis = Me.Vertragsereignis.Add_New(vertragselementnr) Me.Neuer_Datensatz = True Else Me.Aktuelles_Vertragsereignis = Vertragsereignisnr End If End Sub Public Overloads Sub dispose() Me.Vertragsereignis.dispose() sec = Nothing msg = Nothing MyBase.Dispose() End Sub ''' ''' Load-Methode ''' ''' ''' ''' Private Sub frmVertragsereignis_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() 'Kostenarten laden Me.cboxKostenart.Items.Clear() Me.cboxKostenart.DataSource = Me.Vertragsereignis.Kostenarten Me.cboxKostenart.DisplayMember = "Bezeichnung" Me.cboxKostenart.ValueMember = "Kostenartnr" 'Periodizitäten laden Me.cboxPeriodizität.Items.Clear() Me.cboxPeriodizität.DataSource = Me.Vertragsereignis.Periodizitäten Me.cboxPeriodizität.DisplayMember = "Bezeichnung" Me.cboxPeriodizität.ValueMember = "Periodizitaetnr" Me.cboxEreignistyp.Items.Clear() Me.cboxEreignistyp.DataSource = Me.Vertragsereignis.Ereignistypen Me.cboxEreignistyp.DisplayMember = "Bezeichnung" Me.cboxEreignistyp.ValueMember = "Ereignistypnr" Me.cboxKuendigungsfrist.DataSource = Me.Vertragsereignis.Kuendigungsfrist Me.cboxKuendigungsfrist.DisplayMember = "Bezeichnung" Me.cboxKuendigungsfrist.ValueMember = "Kuendigungsfristnr" If Me.FormReadonly Then sec.Set_Form_Readonly(Me) AddChanges(Me) Get_Data(Me.Aktuelles_Vertragsereignis) If Me.Neuer_Datensatz = True Then Me.Vertragsereignis.Neuer_Datensatz = True Me.Neuer_Datensatz = False End If Me.Refresh_History() Me.cboxEreignistyp_SelectedIndexChanged(sender, e) Enable_Disable_Datum() Me.FormDataChanged = False End Sub #End Region #Region "Buttons/Menu" ''' ''' Formular schliessen ''' ''' ''' ''' Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click Me.Close() End Sub ''' ''' Sicherungs-Button betätigt ''' ''' ''' ''' Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click Me.Save_Data() Me.txtMutiertam.Text = Me.Vertragsereignis.daMutiert_am.ToString Me.FormDataChanged = False End Sub ''' ''' Datensatz kopieren ''' ''' ''' ''' 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(Vertragsereignis.Create_Copy(Me.Vertragsereignis.iEreignisNr.Value)) Me.Vertragsereignis.Neuer_Datensatz = True End Sub ''' ''' Neuer Datensatz erstellen ''' ''' ''' ''' 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.Vertragsereignis.Add_New(Me.Aktuelles_Vertragselement)) Me.Vertragsereignis.Neuer_Datensatz = True End Sub ''' ''' Aktueller Datensatz inaktivieren ''' ''' ''' ''' Private Sub TSBtnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnDelete.Click If msg.Show_MessageYesNo(250) = MsgBoxResult.Yes Then Me.Vertragsereignis.Delete_Ereignis(Me.Vertragsereignis.iEreignisNr.Value) Me.Close() End If End Sub ''' ''' Menu Beenden ''' ''' ''' ''' Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click Me.TSBtnQuit_Click(sender, e) End Sub #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 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 ''' ''' 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 ''' ''' Handelt das Change-Ereignis eines Datetimepckers und stellt das ausgewählte Datum in das entsprechende Textfeld ''' ''' ''' ''' Private Sub DateTimePicker_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ dtPickerDatum.ValueChanged, dtPickerStart.ValueChanged, dtPickerEnde.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 Region #Region "Daten" ''' ''' Daten ab DB laden uns ins Form befüllen ''' ''' ''' Private Sub Get_Data(ByVal Vertragsereignisnr As Integer) Try Vertragsereignis.Get_Ereignis(Vertragsereignisnr) Me.Aktuelles_Vertragselement = Me.Vertragsereignis.Vertragselement.iVertragselementnr.Value Me.Aktuelles_Vertragsereignis = Vertragsereignisnr Me.txtVertragselement.Text = Me.Vertragsereignis.Vertragselement.sBezeichnung.Value Me.txtBezeichnung.Text = Me.Vertragsereignis.sBezeichnung.Value Me.cboxEreignistyp.SelectedValue = Me.Vertragsereignis.iEreignistypNr.Value Me.txtDatum.Text = Me.Vertragsereignis.daDatum.ToString Me.txtStart.Text = Me.Vertragsereignis.daStart.ToString Me.txtEnde.Text = Me.Vertragsereignis.daEnde.ToString Me.txtVorlaufzeit.Text = Me.Vertragsereignis.iVorlaufzeit.Value Me.txtBetrag.Text = Me.Vertragsereignis.fBetrag.Value Check_Betrag() Me.cboxKostenart.SelectedValue = Me.Vertragsereignis.iKostenartNr.Value Me.cboxPeriodizität.SelectedValue = Me.Vertragsereignis.iPeriodizitaetNr.Value Me.txtBemerkung.Text = Me.Vertragsereignis.sBeschreibung.Value Me.txtErstelltam.Text = Vertragsereignis.daErstellt_am.ToString Me.txtMutiertam.Text = Vertragsereignis.daMutiert_am.ToString Me.txtMutierer.Text = Vertragsereignis.iMutierer.ToString Me.cboxSecurityLevel.SelectedValue = Me.Vertragsereignis.iSecurityLevelNr.Value Me.cbInklMwSt.Checked = Me.Vertragsereignis.bInklMwSt.Value = True Me.cbaktiv.Checked = Me.Vertragsereignis.bAktiv.Value = True Me.cboxKuendigungsfrist.SelectedValue = Me.Vertragsereignis.iKuendigungsfristnr.Value 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 ''' ''' Daten ab Form speichern ''' ''' Private Sub Save_data() Plausifehler = False If Me.dtPickerDatum.Enabled = True Then If Trim(Me.txtDatum.Text) = ". ." Then msg.show_standardmessage(871, MsgBoxStyle.Critical) Me.txtDatum.Focus() Me.txtDatum.SelectAll() Plausifehler = True End If Else If Trim(Me.txtStart.Text) = ". ." Then msg.show_standardmessage(872, MsgBoxStyle.Critical) Me.txtStart.Focus() Me.txtStart.SelectAll() Plausifehler = True End If End If If Plausifehler Then Exit Sub Me.Vertragsereignis.iEreignisNr = New SqlInt32(CType(Me.Aktuelles_Vertragsereignis, Int32)) Me.Vertragsereignis.iEreignistypNr = New SqlInt32(CType(Me.cboxEreignistyp.SelectedValue, Int32)) Me.Vertragsereignis.iVertragselementnr = New SqlInt32(CType(Me.Aktuelles_Vertragselement, Int32)) Me.Vertragsereignis.sBezeichnung = New SqlString(CType(Me.txtBezeichnung.Text, String)) If IsDate(Me.txtDatum.Text) Then Me.Vertragsereignis.daDatum = New SqlDateTime(CType(Me.txtDatum.Text, DateTime)) Else Me.Vertragsereignis.daDatum = New SqlDateTime(CType(SqlDateTime.Null, DateTime)) End If If IsDate(Me.txtStart.Text) Then Me.Vertragsereignis.daStart = New SqlDateTime(CType(Me.txtStart.Text, DateTime)) Else Me.Vertragsereignis.daStart = New SqlDateTime(CType(SqlDateTime.Null, DateTime)) End If If IsDate(Me.txtEnde.Text) Then Me.Vertragsereignis.daEnde = New SqlDateTime(CType(Me.txtEnde.Text, DateTime)) Else Me.Vertragsereignis.daEnde = New SqlDateTime(CType(SqlDateTime.Null, DateTime)) End If If Me.txtVorlaufzeit.Text = "" Then Me.Vertragsereignis.iVorlaufzeit = New SqlInt32(CType(0, Int32)) Else Me.Vertragsereignis.iVorlaufzeit = New SqlInt32(CType(Me.txtVorlaufzeit.Text, Int32)) End If If Me.txtBetrag.Text = "" Then Me.Vertragsereignis.fBetrag = New SqlDouble(CType(0, Double)) Else Me.Vertragsereignis.fBetrag = New SqlDouble(CType(Me.txtBetrag.Text, Double)) End If Me.Vertragsereignis.iPeriodizitaetNr = New SqlInt32(CType(Me.cboxPeriodizität.SelectedValue, Int32)) If Me.cboxKostenart.SelectedValue Is Nothing Then Me.Vertragsereignis.iKostenartNr = New SqlInt32(CType(-1, Int32)) Else Me.Vertragsereignis.iKostenartNr = New SqlInt32(CType(Me.cboxKostenart.SelectedValue, Int32)) End If Me.Vertragsereignis.iKuendigungsfristnr = New SqlInt32(CType(Me.cboxKuendigungsfrist.SelectedValue, Int32)) Me.Vertragsereignis.bInklMwSt = New SqlBoolean(CType(Me.cbInklMwSt.Checked = True, Boolean)) Me.Vertragsereignis.bAktiv = New SqlBoolean(CType(Me.cbaktiv.Checked = True, Boolean)) Me.Vertragsereignis.sBeschreibung = New SqlString(CType(Me.txtBemerkung.Text, String)) Me.Vertragsereignis.iSecurityLevelNr = New SqlInt32(CType(Me.cboxSecurityLevel.SelectedValue, Int32)) Me.Vertragsereignis.Save_Data() Me.FormDataChanged = False End Sub #End Region #Region "Security" ''' ''' Laden der Securitylevel-Daten in die Combobox ''' ''' 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 ''' ''' Validierung Betragsfeld ''' ''' ''' ''' Private Sub txtBetrag_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtBetrag.Validating If Not Check_Betrag() Then e.Cancel = True End Sub ''' ''' Betragswert prüfen ''' ''' Private Function Check_Betrag() As Boolean If Trim(Me.txtBetrag.Text) = "" Then Me.txtBetrag.Text = "0.00" Return True End If If Not IsNumeric(Me.txtBetrag.Text) Then msg.show_standardmessage(600, MsgBoxStyle.Critical) Return False End If Dim i As Integer i = Me.txtBetrag.Text.IndexOf(".") If i = -1 Then Me.txtBetrag.Text = Me.txtBetrag.Text + ".00" Exit Function End If Dim s = Me.txtBetrag.Text.Substring(i + 1) If Len(s) = 0 Then Me.txtBetrag.Text = Me.txtBetrag.Text + "00" Exit Function End If If Len(s) = 1 Then Me.txtBetrag.Text = Me.txtBetrag.Text + "0" End If If Len(s) > 2 Then msg.show_standardmessage(600, MsgBoxStyle.Critical) Return False End If Return True End Function ''' ''' Prüfung, ob es sich um einen numerischen Wert handelt ''' ''' ''' ''' Private Function IsNumeric(ByVal str As String) Return New Regex("\d+").Match(str).Success End Function ' Public Function IsNumeric(ByVal str As String) As Boolean 'Dim r As Regex = New Regex("\d+") 'Dim m As Match = r.Match(Str) ' If (m.Success) Then ' Return True ' End If ' Return False '' End Function 'If Not (IsNumeric(TextBox4.Text)) Then 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 #Region "History" ''' ''' History ''' ''' Private Sub Refresh_History() Try If Check_Changes() = False Then Exit Sub Catch ex As Exception End Try Dim filtertext As String = "none" Try filtertext = Me.C1History.Columns("Aktiv").FilterText Catch ex As Exception End Try Dim bm As Integer = 0 bm = Me.C1History.Bookmark Me.C1History.Enabled = False Me.Vertragsereignis.Get_History(Me.C1History) Me.SpaltenTitel.Spaltentitel_aktualisieren(Me.C1History, "History", Me.Vertragsereignis.History.Tabledata) If filtertext <> "none" Then Me.C1History.Columns("Aktiv").FilterText = filtertext sec.Set_Form_Security(Me) Try Me.C1History.Bookmark = bm Catch ex As Exception End Try Me.C1History.Enabled = True End Sub #End Region Private Sub cboxPeriodizität_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboxPeriodizität.SelectedIndexChanged Enable_Disable_Datum() End Sub Private Sub Enable_Disable_Datum() Try If LCase(Me.cboxPeriodizität.Text) = "einmalig" Then Me.dtPickerStart.Enabled = False Me.dtPickerEnde.Enabled = False Me.txtStart.Enabled = False Me.txtEnde.Enabled = False Me.txtStart.Text = " . . " Me.txtEnde.Text = " . . " Me.dtPickerDatum.Enabled = True Me.txtDatum.Enabled = True Else Me.dtPickerStart.Enabled = True Me.dtPickerEnde.Enabled = True Me.txtStart.Enabled = True Me.txtEnde.Enabled = True Me.txtDatum.Text = " . . " Me.dtPickerDatum.Enabled = False Me.txtDatum.Enabled = False End If Catch ex As Exception End Try End Sub Private Sub cboxEreignistyp_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboxEreignistyp.SelectedIndexChanged Try If Me.Vertragsereignis.Check_Zahlungsdaten(Me.cboxEreignistyp.SelectedValue) Then Me.txtBetrag.Enabled = True Me.cbInklMwSt.Enabled = True Me.cboxKostenart.Enabled = True Me.cboxKuendigungsfrist.Enabled = False Me.txtVorlaufzeit.Text = "" Me.txtVorlaufzeit.Enabled = False Else If Me.Vertragsereignis.Check_Kuendigungsdaten(Me.cboxEreignistyp.SelectedValue) = True Then Me.cboxKuendigungsfrist.Enabled = True Me.txtBetrag.Enabled = False Me.cbInklMwSt.Enabled = False Me.cboxKostenart.Enabled = False Me.cboxKostenart.SelectedIndex = -1 Me.cboxKostenart.Text = "" Me.txtVorlaufzeit.Enabled = True Else Me.txtVorlaufzeit.Enabled = True Me.cboxKuendigungsfrist.Enabled = False Me.txtBetrag.Enabled = False Me.cbInklMwSt.Enabled = False Me.cboxKostenart.Enabled = False End If End If Catch End Try End Sub Private Sub DateTimePicker_leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ dtPickerDatum.Leave, dtPickerStart.Leave, dtPickerEnde.Leave Dim s As String Dim obj As DateTimePicker = sender s = obj.Name Check_Datum(Me.Vertragsereignis.iEreignisNr.Value, obj.Value, obj.Name) End Sub Private Sub txtVertragsbegin_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles _ txtDatum.Leave, txtStart.Leave, txtEnde.Leave Dim obj As MaskedTextBox = sender Check_Datum(Me.Vertragsereignis.iEreignisNr.Value, obj.Text, obj.Name) End Sub Private Sub Check_Datum(ByVal Vertragsereignisnr As Integer, ByVal Datum As String, ByVal element As String) Dim dt As New DataTable If Not IsDate(Datum) Then Datum = "01.01.1900" dt = Me.Vertragsereignis.Datumscheck(Vertragsereignisnr, Datum, element) Dim titel As String = "Datumsprüfung Vertragsereignis: " + Me.Vertragsereignis.sBezeichnung.ToString Try Dim formopen As Boolean = False Dim dtpform As frmDatumspruefung Dim p As Form = Me.ParentForm For Each windows As Form In p.MdiChildren If windows.Name = "frmDatumspruefung" Then formopen = True dtpform = windows End If Next If formopen = True And dt.Rows.Count > 0 Then dtpform.C1Pruefresultate.DataSource = dt dtpform.C1Pruefresultate.DataMember = dt.TableName dtpform.Text = titel Me.SpaltenTitel.Spaltentitel_aktualisieren(dtpform.C1Pruefresultate, "Datumspruefung", dt) dtpform.TopMost = True dtpform.BringToFront() dtpform.Show() Exit Sub End If If dt.Rows.Count > 0 Then Dim f As New frmDatumspruefung f.C1Pruefresultate.DataSource = dt f.C1Pruefresultate.DataMember = dt.TableName f.Text = titel f.MdiParent = Me.MdiParent Me.SpaltenTitel.Spaltentitel_aktualisieren(f.C1Pruefresultate, "Datumspruefung", dt) f.Show() End If 'dt.Dispose() Catch ex As Exception End Try End Sub End Class