From 68fe0128b746b1a8fa6b82ce2d9bdb1671b09fbf Mon Sep 17 00:00:00 2001 From: "m.ilhan" Date: Mon, 9 Dec 2024 17:43:40 +0100 Subject: [PATCH] TvSettingsNew --- SDL/My Project/Resources.resx | 2 +- SDL/SDL.vbproj | 1 - VERAG_PROG_ALLGEMEIN/AVISO/cDatenbankAVISO.vb | 807 ++++++++++-------- 3 files changed, 445 insertions(+), 365 deletions(-) diff --git a/SDL/My Project/Resources.resx b/SDL/My Project/Resources.resx index ab0e54b5..86916e07 100644 --- a/SDL/My Project/Resources.resx +++ b/SDL/My Project/Resources.resx @@ -382,7 +382,7 @@ ..\Resources\passpic.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\house.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/SDL/SDL.vbproj b/SDL/SDL.vbproj index 9826cf2d..281e06fe 100644 --- a/SDL/SDL.vbproj +++ b/SDL/SDL.vbproj @@ -3364,7 +3364,6 @@ usrCntlMDMDatenverarbeitungAuswertungen_divers.vb - frmATR.vb diff --git a/VERAG_PROG_ALLGEMEIN/AVISO/cDatenbankAVISO.vb b/VERAG_PROG_ALLGEMEIN/AVISO/cDatenbankAVISO.vb index 5dd8a52e..40dbad39 100644 --- a/VERAG_PROG_ALLGEMEIN/AVISO/cDatenbankAVISO.vb +++ b/VERAG_PROG_ALLGEMEIN/AVISO/cDatenbankAVISO.vb @@ -196,6 +196,12 @@ Public Class cDatenbankAVISO Return Nothing End Function + Public Shared Function CreateNewOpenConnection() As SqlConnection + Dim conn As New SqlConnection(cSqlDb.GetAVISOConnectionString()) + conn.Open() + Return conn + End Function + Public Shared Function GetNewOpenConnectionWithoutError(Optional newConn As Boolean = False) As SqlConnection Try @@ -2473,110 +2479,223 @@ Public Class cTvTextBezeichnung Public Property TvTextBezeichnung As String End Class +Public Class cTvSettings + Public Property TVSettingID As Integer + Public Property StandortID As Integer + Public Property KachelWidthInPercent As Double? + Public Property KachelHeightInPercent As Double? + Public Property KachelFontSizeLkwNummer As Double? + Public Property KachelFontSizeDateTime As Double? + Public Property KachelRowGapInPercent As Double? + Public Property SeitenwechselInSek As Integer? + Public Property TextBalkenHeightInPercent As Double? + Public Property SelectedLogoValue As String + + +End Class + Public Class cAvisoTvNewDAL + ''' + ''' Holt die StandortID basierend auf dem Standortnamen. + ''' + ''' Der Name des Standorts. + ''' Die zugehörige StandortID oder 0, wenn nicht gefunden. Public Function GetStandortID(standort As String) As Integer Dim standortID As Integer = 0 - Dim sql As String = "SELECT StandortID FROM StandorteTV WHERE Standort = @Standort" + Dim sql As String = "SELECT StandortID FROM StandorteTV WHERE StandortBezeichnung = @StandortBezeichnung" Try - Dim conn As SqlConnection = cDatenbankAVISO.GetNewOpenConnectionWithoutError() - If conn Is Nothing Then - Throw New Exception("Die Datenbankverbindung konnte nicht hergestellt werden.") - End If - - Using cmd As New SqlCommand(sql, conn) - cmd.Parameters.AddWithValue("@Standort", standort) - Dim result As Object = cmd.ExecuteScalar() - If result IsNot Nothing AndAlso Not IsDBNull(result) Then - standortID = Convert.ToInt32(result) - End If + Using conn As SqlConnection = cDatenbankAVISO.CreateNewOpenConnection() + Using cmd As New SqlCommand(sql, conn) + cmd.Parameters.AddWithValue("@StandortBezeichnung", standort) + Dim result As Object = cmd.ExecuteScalar() + If result IsNot Nothing AndAlso Not IsDBNull(result) Then + standortID = Convert.ToInt32(result) + End If + End Using End Using Catch ex As SqlException - ' Ausnahme weiterwerfen mit spezifischer Fehlermeldung - Throw New Exception("SQL Fehler beim Abrufen der StandortID: " & ex.Message) + Throw New Exception("SQL Fehler beim Abrufen der StandortID: " & ex.Message, ex) Catch ex As Exception - ' Allgemeine Ausnahme weiterwerfen - Throw New Exception("Allgemeiner Fehler beim Abrufen der StandortID: " & ex.Message) + Throw New Exception("Allgemeiner Fehler beim Abrufen der StandortID: " & ex.Message, ex) End Try Return standortID End Function - Public Function LadenAlleTvTextBezeichnungen() As List(Of cTvTextBezeichnung) - Dim bezeichnungen As New List(Of cTvTextBezeichnung)() + ''' + ''' Speichert die TV-Einstellungen in der Datenbank. + ''' + ''' Die TV-Einstellungen, die gespeichert werden sollen. + Public Sub SaveTvSettings(settings As cTvSettings) + Dim sqlCheck As String = "SELECT COUNT(*) FROM AvisoTvSettings WHERE StandortID = @StandortID" + Dim sqlUpdate As String = "UPDATE AvisoTvSettings SET + KachelWidthInPercent = @KachelWidthInPercent, + KachelHeightInPercent = @KachelHeightInPercent, + KachelFontSizeLkwNummer = @KachelFontSizeLkwNummer, + KachelFontSizeDateTime = @KachelFontSizeDateTime, + KachelRowGapInPercent = @KachelRowGapInPercent, + SeitenwechselInSek = @SeitenwechselInSek, + TextBalkenHeightInPercent = @TextBalkenHeightInPercent, + Logo = @Logo + WHERE StandortID = @StandortID" + Dim sqlInsert As String = "INSERT INTO AvisoTvSettings + (StandortID, KachelWidthInPercent, KachelHeightInPercent,KachelRowGapInPercent, + KachelFontSizeLkwNummer, KachelFontSizeDateTime, + SeitenwechselInSek, TextBalkenHeightInPercent,Logo) + VALUES + (@StandortID, @KachelWidthInPercent, @KachelHeightInPercent,@KachelRowGapInPercent, + @KachelFontSizeLkwNummer, @KachelFontSizeDateTime, + @SeitenwechselInSek, @TextBalkenHeightInPercent,@Logo)" Try - Dim conn As SqlConnection = cDatenbankAVISO.GetNewOpenConnectionWithoutError() - If conn Is Nothing Then - Throw New Exception("Die Datenbankverbindung konnte nicht hergestellt werden.") - End If + Using conn As SqlConnection = cDatenbankAVISO.CreateNewOpenConnection() + ' Überprüfen, ob bereits Einstellungen für den Standort existieren + Dim recordExists As Boolean + Using cmdCheck As New SqlCommand(sqlCheck, conn) + cmdCheck.Parameters.AddWithValue("@StandortID", settings.StandortID) + recordExists = Convert.ToInt32(cmdCheck.ExecuteScalar()) > 0 + End Using - Dim sql As String = " + ' Wähle Update oder Insert basierend auf der Existenz + Dim sql As String = If(recordExists, sqlUpdate, sqlInsert) + + Using cmdSave As New SqlCommand(sql, conn) + cmdSave.Parameters.AddWithValue("@StandortID", settings.StandortID) + cmdSave.Parameters.AddWithValue("@KachelWidthInPercent", settings.KachelWidthInPercent) + cmdSave.Parameters.AddWithValue("@KachelHeightInPercent", settings.KachelHeightInPercent) + cmdSave.Parameters.AddWithValue("@KachelRowGapInPercent", settings.KachelRowGapInPercent) + cmdSave.Parameters.AddWithValue("@KachelFontSizeLkwNummer", settings.KachelFontSizeLkwNummer) + cmdSave.Parameters.AddWithValue("@KachelFontSizeDateTime", settings.KachelFontSizeDateTime) + cmdSave.Parameters.AddWithValue("@SeitenwechselInSek", settings.SeitenwechselInSek) + cmdSave.Parameters.AddWithValue("@TextBalkenHeightInPercent", settings.TextBalkenHeightInPercent) + cmdSave.Parameters.AddWithValue("@Logo", settings.SelectedLogoValue) + cmdSave.ExecuteNonQuery() + End Using + End Using + Catch ex As SqlException + Throw New Exception("SQL Fehler beim Speichern der TV-Einstellungen: " & ex.Message, ex) + Catch ex As Exception + Throw New Exception("Allgemeiner Fehler beim Speichern der TV-Einstellungen: " & ex.Message, ex) + End Try + End Sub + + ''' + ''' Lädt die TV-Einstellungen basierend auf der StandortID. + ''' + ''' Die StandortID, für die die Einstellungen geladen werden sollen. + ''' Eine Liste der entsprechenden TV-Einstellungen. + Public Function GetTvSettingsByStandort(standortID As Integer) As List(Of cTvSettings) + Dim SettingsList As New List(Of cTvSettings)() + Dim sql As String = "SELECT * FROM AvisoTvSettings WHERE StandortID = @StandortID" + + Try + Using conn As SqlConnection = cDatenbankAVISO.CreateNewOpenConnection() + Using cmd As New SqlCommand(sql, conn) + cmd.Parameters.AddWithValue("@StandortID", standortID) + + Using dr As SqlDataReader = cmd.ExecuteReader() + While dr.Read() + Dim settings As New cTvSettings() With { + .TVSettingID = Convert.ToInt32(dr("TvSettingID")), + .StandortID = Convert.ToInt32(dr("StandortID")), + .KachelWidthInPercent = If(IsDBNull(dr("KachelWidthInPercent")), 0, Convert.ToDouble(dr("KachelWidthInPercent"))), + .KachelHeightInPercent = If(IsDBNull(dr("KachelHeightInPercent")), 0, Convert.ToDouble(dr("KachelHeightInPercent"))), + .KachelRowGapInPercent = If(IsDBNull(dr("KachelRowGapInPercent")), 0, Convert.ToDouble(dr("KachelRowGapInPercent"))), + .KachelFontSizeLkwNummer = If(IsDBNull(dr("KachelFontSizeLkwNummer")), 0, Convert.ToDouble(dr("KachelFontSizeLkwNummer"))), + .KachelFontSizeDateTime = If(IsDBNull(dr("KachelFontSizeDateTime")), 0, Convert.ToDouble(dr("KachelFontSizeDateTime"))), + .SeitenwechselInSek = If(IsDBNull(dr("SeitenwechselInSek")), 0, Convert.ToInt32(dr("SeitenwechselInSek"))), + .TextBalkenHeightInPercent = If(IsDBNull(dr("TextBalkenHeightInPercent")), 0, Convert.ToDouble(dr("TextBalkenHeightInPercent"))), + .SelectedLogoValue = If(IsDBNull(dr("Logo")), "", Convert.ToString(dr("Logo"))) + } + + SettingsList.Add(settings) + End While + End Using + End Using + End Using + Catch ex As SqlException + Throw New Exception("SQL Fehler beim Laden der TV-Einstellungen: " & ex.Message, ex) + Catch ex As Exception + Throw New Exception("Allgemeiner Fehler beim Laden der TV-Einstellungen: " & ex.Message, ex) + End Try + + Return SettingsList + End Function + + ''' + ''' Lädt alle TV-Textbezeichnungen aus der Datenbank. + ''' + ''' Eine Liste aller TV-Textbezeichnungen. + Public Function LadenAlleTvTextBezeichnungen() As List(Of cTvTextBezeichnung) + Dim bezeichnungen As New List(Of cTvTextBezeichnung)() + Dim sql As String = " SELECT TvTextBezeichnungID, TvTextBezeichnung FROM AvisoTvNew ORDER BY TvTextBezeichnung " - Using cmd As New SqlCommand(sql, conn) - Using dr As SqlDataReader = cmd.ExecuteReader() - While dr.Read() - Dim bezeichnung As New cTvTextBezeichnung() With { - .TvTextBezeichnungID = Convert.ToInt32(dr("TvTextBezeichnungID")), - .TvTextBezeichnung = Convert.ToString(dr("TvTextBezeichnung")) - } - bezeichnungen.Add(bezeichnung) - End While + Try + Using conn As SqlConnection = cDatenbankAVISO.CreateNewOpenConnection() + Using cmd As New SqlCommand(sql, conn) + Using dr As SqlDataReader = cmd.ExecuteReader() + While dr.Read() + Dim bezeichnung As New cTvTextBezeichnung() With { + .TvTextBezeichnungID = Convert.ToInt32(dr("TvTextBezeichnungID")), + .TvTextBezeichnung = Convert.ToString(dr("TvTextBezeichnung")) + } + bezeichnungen.Add(bezeichnung) + End While + End Using End Using End Using Catch ex As SqlException - Throw New Exception("SQL Fehler beim Laden der TvTextBezeichnungen: " & ex.Message) + Throw New Exception("SQL Fehler beim Laden der TvTextBezeichnungen: " & ex.Message, ex) Catch ex As Exception - Throw New Exception("Allgemeiner Fehler beim Laden der TvTextBezeichnungen: " & ex.Message) + Throw New Exception("Allgemeiner Fehler beim Laden der TvTextBezeichnungen: " & ex.Message, ex) End Try Return bezeichnungen End Function - - - - - ' Methode zum Überprüfen, ob eine TvTextBezeichnung bereits für einen Standort existiert + ''' + ''' Überprüft, ob eine TV-Textbezeichnung bereits vorhanden ist. + ''' + ''' Die TV-Textbezeichnung, die überprüft werden soll. + ''' True, wenn die Bezeichnung vorhanden ist; andernfalls False. Public Function IstTvTextBezeichnungVorhanden(tvTextBezeichnung As String) As Boolean Dim vorhanden As Boolean = False - Dim sql As String = "SELECT COUNT(*) - FROM AvisoTvNew - WHERE TvTextBezeichnung = @TvTextBezeichnung" + Dim sql As String = "SELECT COUNT(*) FROM AvisoTvNew WHERE TvTextBezeichnung = @TvTextBezeichnung" Try - Dim conn As SqlConnection = cDatenbankAVISO.GetNewOpenConnectionWithoutError() - If conn Is Nothing Then - Throw New Exception("Die Datenbankverbindung konnte nicht hergestellt werden.") - End If - - Using cmd As New SqlCommand(sql, conn) - cmd.Parameters.AddWithValue("@TvTextBezeichnung", tvTextBezeichnung) - Dim count As Integer = Convert.ToInt32(cmd.ExecuteScalar()) - If count > 0 Then - vorhanden = True - End If + Using conn As SqlConnection = cDatenbankAVISO.CreateNewOpenConnection() + Using cmd As New SqlCommand(sql, conn) + cmd.Parameters.AddWithValue("@TvTextBezeichnung", tvTextBezeichnung) + Dim count As Integer = Convert.ToInt32(cmd.ExecuteScalar()) + If count > 0 Then + vorhanden = True + End If + End Using End Using Catch ex As SqlException - ' Ausnahme weiterwerfen mit spezifischer Fehlermeldung - Throw New Exception("SQL Fehler beim Überprüfen der TvTextBezeichnung: " & ex.Message) + Throw New Exception("SQL Fehler beim Überprüfen der TvTextBezeichnung: " & ex.Message, ex) Catch ex As Exception - ' Allgemeine Ausnahme weiterwerfen - Throw New Exception("Allgemeiner Fehler beim Überprüfen der TvTextBezeichnung: " & ex.Message) + Throw New Exception("Allgemeiner Fehler beim Überprüfen der TvTextBezeichnung: " & ex.Message, ex) End Try Return vorhanden End Function - ' Methode zum Lesen von AvisoTvNew-Einträgen - - Public Sub LesenAvisoTvNew(tvid As Integer, bezeichnung As String, standort As String, ByRef liste As List(Of cAvisoTvNew)) + ''' + ''' Liest AvisoTvNew-Einträge basierend auf den angegebenen Kriterien. + ''' + ''' Die TV-TextbezeichnungID. + ''' Die Bezeichnung. + ''' Der Standort. + ''' Die Liste, in die die Ergebnisse eingefügt werden. + Public Sub LesenAvisoTvNew(tvid As Integer, bezeichnung As String, StandortBezeichnung As String, ByRef liste As List(Of cAvisoTvNew)) Dim sql As String = "SELECT stv.TvTextBezeichnungID, stv.StandortID, @@ -2613,69 +2732,67 @@ Public Class cAvisoTvNewDAL sql &= " AND a.TVTextBezeichnung LIKE @TVTextBezeichnung" End If - If Not String.IsNullOrWhiteSpace(standort) Then - sql &= " AND s.Standort = @Standort" + If Not String.IsNullOrWhiteSpace(StandortBezeichnung) Then + sql &= " AND s.Standortbezeichnung = @StandortBezeichnung" End If Try - Dim conn As SqlConnection = cDatenbankAVISO.GetNewOpenConnectionWithoutError() - If conn Is Nothing Then - Throw New Exception("Die Datenbankverbindung konnte nicht hergestellt werden.") - End If + Using conn As SqlConnection = cDatenbankAVISO.CreateNewOpenConnection() + Using cmd As New SqlCommand(sql, conn) + If tvid <> 0 Then + cmd.Parameters.AddWithValue("@TvTextBezeichnungID", tvid) + End If - Dim cmd As New SqlCommand(sql, conn) - If tvid <> 0 Then - cmd.Parameters.AddWithValue("@TvTextBezeichnungID", tvid) - End If + If Not String.IsNullOrWhiteSpace(bezeichnung) Then + cmd.Parameters.AddWithValue("@TVTextBezeichnung", "%" & bezeichnung & "%") + End If - If Not String.IsNullOrWhiteSpace(bezeichnung) Then - cmd.Parameters.AddWithValue("@TVTextBezeichnung", "%" & bezeichnung & "%") - End If + If Not String.IsNullOrWhiteSpace(StandortBezeichnung) Then + cmd.Parameters.AddWithValue("@StandortBezeichnung", StandortBezeichnung) + End If - If Not String.IsNullOrWhiteSpace(standort) Then - cmd.Parameters.AddWithValue("@Standort", standort) - End If - - Dim dr As SqlDataReader = cmd.ExecuteReader() - While dr.Read() - Dim aviso As New cAvisoTvNew() With { - .TvTextBezeichnungID = Convert.ToInt32(dr("TvTextBezeichnungID")), - .StandortID = Convert.ToInt32(dr("StandortID")), - .TvTextBezeichnung = Convert.ToString(dr("TVTextBezeichnung")), - .Standort = Convert.ToString(dr("Standort")), - .Position = If(IsDBNull(dr("Position")), Nothing, Convert.ToString(dr("Position"))), - .FixeZeile1RTF = If(IsDBNull(dr("FixeZeile1RTF")), Nothing, Convert.ToString(dr("FixeZeile1RTF"))), - .FixeZeile2RTF = If(IsDBNull(dr("FixeZeile2RTF")), Nothing, Convert.ToString(dr("FixeZeile2RTF"))), - .FixeZeile3RTF = If(IsDBNull(dr("FixeZeile3RTF")), Nothing, Convert.ToString(dr("FixeZeile3RTF"))), - .Art = If(IsDBNull(dr("Art")), Nothing, Convert.ToString(dr("Art"))), - .StartDate = If(IsDBNull(dr("StartDate")), CType(Nothing, Date?), Convert.ToDateTime(dr("StartDate"))), - .EndDate = If(IsDBNull(dr("EndDate")), CType(Nothing, Date?), Convert.ToDateTime(dr("EndDate"))), - .StartTime = If(IsDBNull(dr("StartTime")), CType(Nothing, TimeSpan?), Convert.ToDateTime(dr("StartTime")).TimeOfDay), - .EndTime = If(IsDBNull(dr("EndTime")), CType(Nothing, TimeSpan?), Convert.ToDateTime(dr("EndTime")).TimeOfDay), - .IsRecurring = If(IsDBNull(dr("IsRecurring")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsRecurring"))), - .IsMonday = If(IsDBNull(dr("IsMonday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsMonday"))), - .IsTuesday = If(IsDBNull(dr("IsTuesday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsTuesday"))), - .IsWednesday = If(IsDBNull(dr("IsWednesday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsWednesday"))), - .IsThursday = If(IsDBNull(dr("IsThursday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsThursday"))), - .IsFriday = If(IsDBNull(dr("IsFriday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsFriday"))), - .IsSaturday = If(IsDBNull(dr("IsSaturday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsSaturday"))), - .IsSunday = If(IsDBNull(dr("IsSunday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsSunday"))), - .IsActive = Convert.ToBoolean(dr("IsActive")) - } - liste.Add(aviso) - End While - dr.Close() - cmd.Dispose() - conn.Close() + Using dr As SqlDataReader = cmd.ExecuteReader() + While dr.Read() + Dim aviso As New cAvisoTvNew() With { + .TvTextBezeichnungID = Convert.ToInt32(dr("TvTextBezeichnungID")), + .StandortID = Convert.ToInt32(dr("StandortID")), + .TvTextBezeichnung = Convert.ToString(dr("TVTextBezeichnung")), + .Standort = Convert.ToString(dr("Standort")), + .Position = If(IsDBNull(dr("Position")), Nothing, Convert.ToString(dr("Position"))), + .FixeZeile1RTF = If(IsDBNull(dr("FixeZeile1RTF")), Nothing, Convert.ToString(dr("FixeZeile1RTF"))), + .FixeZeile2RTF = If(IsDBNull(dr("FixeZeile2RTF")), Nothing, Convert.ToString(dr("FixeZeile2RTF"))), + .FixeZeile3RTF = If(IsDBNull(dr("FixeZeile3RTF")), Nothing, Convert.ToString(dr("FixeZeile3RTF"))), + .Art = If(IsDBNull(dr("Art")), Nothing, Convert.ToString(dr("Art"))), + .StartDate = If(IsDBNull(dr("StartDate")), CType(Nothing, Date?), Convert.ToDateTime(dr("StartDate"))), + .EndDate = If(IsDBNull(dr("EndDate")), CType(Nothing, Date?), Convert.ToDateTime(dr("EndDate"))), + .StartTime = If(IsDBNull(dr("StartTime")), CType(Nothing, TimeSpan?), Convert.ToDateTime(dr("StartTime")).TimeOfDay), + .EndTime = If(IsDBNull(dr("EndTime")), CType(Nothing, TimeSpan?), Convert.ToDateTime(dr("EndTime")).TimeOfDay), + .IsRecurring = If(IsDBNull(dr("IsRecurring")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsRecurring"))), + .IsMonday = If(IsDBNull(dr("IsMonday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsMonday"))), + .IsTuesday = If(IsDBNull(dr("IsTuesday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsTuesday"))), + .IsWednesday = If(IsDBNull(dr("IsWednesday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsWednesday"))), + .IsThursday = If(IsDBNull(dr("IsThursday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsThursday"))), + .IsFriday = If(IsDBNull(dr("IsFriday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsFriday"))), + .IsSaturday = If(IsDBNull(dr("IsSaturday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsSaturday"))), + .IsSunday = If(IsDBNull(dr("IsSunday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsSunday"))), + .IsActive = Convert.ToBoolean(dr("IsActive")) + } + liste.Add(aviso) + End While + End Using + End Using + End Using Catch ex As SqlException - ' Ausnahme weiterwerfen mit spezifischer Fehlermeldung - Throw New Exception("SQL Fehler beim Lesen der Daten: " & ex.Message) + Throw New Exception("SQL Fehler beim Lesen der Daten: " & ex.Message, ex) Catch ex As Exception - ' Allgemeine Ausnahme weiterwerfen - Throw New Exception("Allgemeiner Fehler beim Lesen der Daten: " & ex.Message) + Throw New Exception("Allgemeiner Fehler beim Lesen der Daten: " & ex.Message, ex) End Try End Sub + ''' + ''' Liest alle AvisoTvNew-Einträge aus der Datenbank. + ''' + ''' Die Liste, in die die Ergebnisse eingefügt werden. Public Sub LesenAlleAvisoTvNew(ByRef liste As List(Of cAvisoTvNew)) ' Basis-SQL-Abfrage ohne Filter Dim sql As String = "SELECT @@ -2700,288 +2817,251 @@ Public Class cAvisoTvNewDAL a.IsActive FROM AvisoTvNew a" - Dim conn As SqlConnection = Nothing - Dim cmd As SqlCommand = Nothing - Dim dr As SqlDataReader = Nothing - Try - conn = cDatenbankAVISO.GetNewOpenConnectionWithoutError() - If conn Is Nothing Then - Throw New Exception("Die Datenbankverbindung konnte nicht hergestellt werden.") - End If + Using conn As SqlConnection = cDatenbankAVISO.CreateNewOpenConnection() + Using cmd As New SqlCommand(sql, conn) + ' Keine Parameter erforderlich, da keine Filter - cmd = New SqlCommand(sql, conn) + Using dr As SqlDataReader = cmd.ExecuteReader() + While dr.Read() + Dim aviso As New cAvisoTvNew() With { + .TvTextBezeichnungID = If(IsDBNull(dr("TvTextBezeichnungID")), 0, Convert.ToInt32(dr("TvTextBezeichnungID"))), + .TvTextBezeichnung = If(IsDBNull(dr("TvTextBezeichnung")), String.Empty, dr("TvTextBezeichnung").ToString()), + .FixeZeile1RTF = If(IsDBNull(dr("FixeZeile1RTF")), Nothing, dr("FixeZeile1RTF").ToString()), + .FixeZeile2RTF = If(IsDBNull(dr("FixeZeile2RTF")), Nothing, dr("FixeZeile2RTF").ToString()), + .FixeZeile3RTF = If(IsDBNull(dr("FixeZeile3RTF")), Nothing, dr("FixeZeile3RTF").ToString()), + .Art = If(IsDBNull(dr("Art")), Nothing, dr("Art").ToString()), + .StartDate = If(IsDBNull(dr("StartDate")), CType(Nothing, Date?), Convert.ToDateTime(dr("StartDate"))), + .EndDate = If(IsDBNull(dr("EndDate")), CType(Nothing, Date?), Convert.ToDateTime(dr("EndDate"))), + .StartTime = If(IsDBNull(dr("StartTime")), CType(Nothing, TimeSpan?), Convert.ToDateTime(dr("StartTime")).TimeOfDay), + .EndTime = If(IsDBNull(dr("EndTime")), CType(Nothing, TimeSpan?), Convert.ToDateTime(dr("EndTime")).TimeOfDay), + .IsRecurring = If(IsDBNull(dr("IsRecurring")), False, Convert.ToBoolean(dr("IsRecurring"))), + .IsMonday = If(IsDBNull(dr("IsMonday")), False, Convert.ToBoolean(dr("IsMonday"))), + .IsTuesday = If(IsDBNull(dr("IsTuesday")), False, Convert.ToBoolean(dr("IsTuesday"))), + .IsWednesday = If(IsDBNull(dr("IsWednesday")), False, Convert.ToBoolean(dr("IsWednesday"))), + .IsThursday = If(IsDBNull(dr("IsThursday")), False, Convert.ToBoolean(dr("IsThursday"))), + .IsFriday = If(IsDBNull(dr("IsFriday")), False, Convert.ToBoolean(dr("IsFriday"))), + .IsSaturday = If(IsDBNull(dr("IsSaturday")), False, Convert.ToBoolean(dr("IsSaturday"))), + .IsSunday = If(IsDBNull(dr("IsSunday")), False, Convert.ToBoolean(dr("IsSunday"))), + .IsActive = If(IsDBNull(dr("IsActive")), False, Convert.ToBoolean(dr("IsActive"))) + } - ' Keine Parameter erforderlich, da keine Filter - - ' Daten lesen und Objekte erstellen - dr = cmd.ExecuteReader() - While dr.Read() - Dim aviso As New cAvisoTvNew() With { - .TvTextBezeichnungID = If(IsDBNull(dr("TvTextBezeichnungID")), 0, Convert.ToInt32(dr("TvTextBezeichnungID"))), - .TvTextBezeichnung = If(IsDBNull(dr("TvTextBezeichnung")), String.Empty, dr("TvTextBezeichnung").ToString()), - .FixeZeile1RTF = If(IsDBNull(dr("FixeZeile1RTF")), Nothing, dr("FixeZeile1RTF").ToString()), - .FixeZeile2RTF = If(IsDBNull(dr("FixeZeile2RTF")), Nothing, dr("FixeZeile2RTF").ToString()), - .FixeZeile3RTF = If(IsDBNull(dr("FixeZeile3RTF")), Nothing, dr("FixeZeile3RTF").ToString()), - .Art = If(IsDBNull(dr("Art")), Nothing, dr("Art").ToString()), - .StartDate = If(IsDBNull(dr("StartDate")), CType(Nothing, Date?), Convert.ToDateTime(dr("StartDate"))), - .EndDate = If(IsDBNull(dr("EndDate")), CType(Nothing, Date?), Convert.ToDateTime(dr("EndDate"))), - .StartTime = If(IsDBNull(dr("StartTime")), CType(Nothing, TimeSpan?), Convert.ToDateTime(dr("StartTime")).TimeOfDay), - .EndTime = If(IsDBNull(dr("EndTime")), CType(Nothing, TimeSpan?), Convert.ToDateTime(dr("EndTime")).TimeOfDay), - .IsRecurring = If(IsDBNull(dr("IsRecurring")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsRecurring"))), - .IsMonday = If(IsDBNull(dr("IsMonday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsMonday"))), - .IsTuesday = If(IsDBNull(dr("IsTuesday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsTuesday"))), - .IsWednesday = If(IsDBNull(dr("IsWednesday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsWednesday"))), - .IsThursday = If(IsDBNull(dr("IsThursday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsThursday"))), - .IsFriday = If(IsDBNull(dr("IsFriday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsFriday"))), - .IsSaturday = If(IsDBNull(dr("IsSaturday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsSaturday"))), - .IsSunday = If(IsDBNull(dr("IsSunday")), CType(Nothing, Boolean?), Convert.ToBoolean(dr("IsSunday"))), - .IsActive = If(IsDBNull(dr("IsActive")), False, Convert.ToBoolean(dr("IsActive"))) - } - - liste.Add(aviso) - End While - dr.Close() - cmd.Dispose() - conn.Close() + liste.Add(aviso) + End While + End Using + End Using + End Using Catch ex As SqlException - ' Ausnahme weiterwerfen mit spezifischer Fehlermeldung - Throw New Exception($"SQL Fehler beim Lesen der Daten: {ex.Message}") + Throw New Exception($"SQL Fehler beim Lesen der Daten: {ex.Message}", ex) Catch ex As Exception - ' Allgemeine Ausnahme weiterwerfen - Throw New Exception($"Allgemeiner Fehler beim Lesen der Daten: {ex.Message}") + Throw New Exception($"Allgemeiner Fehler beim Lesen der Daten: {ex.Message}", ex) End Try End Sub - - - - ' Methode zum Speichern von AvisoTvNew-Einträgen + ''' + ''' Speichert einen AvisoTvNew-Eintrag in der Datenbank. + ''' + ''' Der AvisoTvNew-Eintrag, der gespeichert werden soll. Public Sub SpeichernAvisoTvNew(aviso As cAvisoTvNew) - Dim conn As SqlConnection = Nothing - Dim cmd As SqlCommand = Nothing - Dim cmdLink As SqlCommand = Nothing - Dim transaction As SqlTransaction = Nothing + Dim sqlInsert As String + Dim sqlUpdate As String Try - conn = cDatenbankAVISO.GetNewOpenConnectionWithoutError() - If conn Is Nothing Then - Throw New Exception("Die Datenbankverbindung konnte nicht hergestellt werden.") - End If + Using conn As SqlConnection = cDatenbankAVISO.CreateNewOpenConnection() + Using transaction As SqlTransaction = conn.BeginTransaction() + Try + If aviso.TvTextBezeichnungID = 0 Then + ' Neuanlage + sqlInsert = "INSERT INTO AvisoTvNew ( + TvTextBezeichnung, + FixeZeile1RTF, + FixeZeile1HTML, + FixeZeile2RTF, + FixeZeile2HTML, + FixeZeile3RTF, + FixeZeile3HTML, + StartDate, + EndDate, + StartTime, + EndTime, + IsRecurring, + IsMonday, + IsTuesday, + IsWednesday, + IsThursday, + IsFriday, + IsSaturday, + IsSunday, + IsActive + ) VALUES ( + @TvTextBezeichnung, + @FixeZeile1RTF, + @FixeZeile1HTML, + @FixeZeile2RTF, + @FixeZeile2HTML, + @FixeZeile3RTF, + @FixeZeile3HTML, + @StartDate, + @EndDate, + @StartTime, + @EndTime, + @IsRecurring, + @IsMonday, + @IsTuesday, + @IsWednesday, + @IsThursday, + @IsFriday, + @IsSaturday, + @IsSunday, + @IsActive + ); + SELECT CAST(scope_identity() AS int);" - ' Beginnen einer Transaktion, um Konsistenz zu gewährleisten - transaction = conn.BeginTransaction() + Using cmd As New SqlCommand(sqlInsert, conn, transaction) + cmd.Parameters.AddWithValue("@TvTextBezeichnung", aviso.TvTextBezeichnung) + cmd.Parameters.AddWithValue("@FixeZeile1RTF", If(String.IsNullOrWhiteSpace(aviso.FixeZeile1RTF), CType(Nothing, String), aviso.FixeZeile1RTF)) + cmd.Parameters.AddWithValue("@FixeZeile1HTML", If(String.IsNullOrWhiteSpace(aviso.FixeZeile1HTML), CType(Nothing, String), aviso.FixeZeile1HTML)) + cmd.Parameters.AddWithValue("@FixeZeile2RTF", If(String.IsNullOrWhiteSpace(aviso.FixeZeile2RTF), DBNull.Value, aviso.FixeZeile2RTF)) + cmd.Parameters.AddWithValue("@FixeZeile2HTML", If(String.IsNullOrWhiteSpace(aviso.FixeZeile2HTML), DBNull.Value, aviso.FixeZeile2HTML)) + cmd.Parameters.AddWithValue("@FixeZeile3RTF", If(String.IsNullOrWhiteSpace(aviso.FixeZeile3RTF), DBNull.Value, aviso.FixeZeile3RTF)) + cmd.Parameters.AddWithValue("@FixeZeile3HTML", If(String.IsNullOrWhiteSpace(aviso.FixeZeile3HTML), DBNull.Value, aviso.FixeZeile3HTML)) + cmd.Parameters.AddWithValue("@StartDate", If(aviso.StartDate.HasValue, CType(aviso.StartDate.Value, Object), DBNull.Value)) + cmd.Parameters.AddWithValue("@EndDate", If(aviso.EndDate.HasValue, CType(aviso.EndDate.Value, Object), DBNull.Value)) + cmd.Parameters.AddWithValue("@StartTime", If(aviso.StartTime.HasValue, CType(aviso.StartTime.Value, Object), DBNull.Value)) + cmd.Parameters.AddWithValue("@EndTime", If(aviso.EndTime.HasValue, CType(aviso.EndTime.Value, Object), DBNull.Value)) + cmd.Parameters.AddWithValue("@IsRecurring", aviso.IsRecurring) + cmd.Parameters.AddWithValue("@IsMonday", aviso.IsMonday) + cmd.Parameters.AddWithValue("@IsTuesday", aviso.IsTuesday) + cmd.Parameters.AddWithValue("@IsWednesday", aviso.IsWednesday) + cmd.Parameters.AddWithValue("@IsThursday", aviso.IsThursday) + cmd.Parameters.AddWithValue("@IsFriday", aviso.IsFriday) + cmd.Parameters.AddWithValue("@IsSaturday", aviso.IsSaturday) + cmd.Parameters.AddWithValue("@IsSunday", aviso.IsSunday) + cmd.Parameters.AddWithValue("@IsActive", aviso.IsActive) - Dim sql As String + Dim result As Object = cmd.ExecuteScalar() + If result Is Nothing OrElse IsDBNull(result) Then + Throw New Exception("Das INSERT hat keine ID zurückgegeben.") + End If + aviso.TvTextBezeichnungID = Convert.ToInt32(result) + End Using + Else + ' Aktualisierung + sqlUpdate = "UPDATE AvisoTvNew SET + FixeZeile1RTF = @FixeZeile1RTF, + FixeZeile1HTML = @FixeZeile1HTML, + FixeZeile2RTF = @FixeZeile2RTF, + FixeZeile2HTML = @FixeZeile2HTML, + FixeZeile3RTF = @FixeZeile3RTF, + FixeZeile3HTML = @FixeZeile3HTML, + StartDate = @StartDate, + EndDate = @EndDate, + StartTime = @StartTime, + EndTime = @EndTime, + IsRecurring = @IsRecurring, + IsMonday = @IsMonday, + IsTuesday = @IsTuesday, + IsWednesday = @IsWednesday, + IsThursday = @IsThursday, + IsFriday = @IsFriday, + IsSaturday = @IsSaturday, + IsSunday = @IsSunday, + IsActive = @IsActive + WHERE TvTextBezeichnungID = @TvTextBezeichnungID" - If aviso.TvTextBezeichnungID = 0 Then - ' Neuanlage - sql = "INSERT INTO AvisoTvNew ( - TvTextBezeichnung, - FixeZeile1RTF, - FixeZeile1HTML, - FixeZeile2RTF, - FixeZeile2HTML, - FixeZeile3RTF, - FixeZeile3HTML, - StartDate, - EndDate, - StartTime, - EndTime, - IsRecurring, - IsMonday, - IsTuesday, - IsWednesday, - IsThursday, - IsFriday, - IsSaturday, - IsSunday, - IsActive - ) VALUES ( - @TvTextBezeichnung, - @FixeZeile1RTF, - @FixeZeile1HTML, - @FixeZeile2RTF, - @FixeZeile2HTML, - @FixeZeile3RTF, - @FixeZeile3HTML, - @StartDate, - @EndDate, - @StartTime, - @EndTime, - @IsRecurring, - @IsMonday, - @IsTuesday, - @IsWednesday, - @IsThursday, - @IsFriday, - @IsSaturday, - @IsSunday, - @IsActive - ); - SELECT CAST(scope_identity() AS int);" - Else - ' Aktualisierung - sql = "UPDATE AvisoTvNew SET - FixeZeile1RTF = @FixeZeile1RTF, - FixeZeile1HTML = @FixeZeile1HTML, - FixeZeile2RTF = @FixeZeile2RTF, - FixeZeile2HTML = @FixeZeile2HTML, - FixeZeile3RTF = @FixeZeile3RTF, - FixeZeile3HTML = @FixeZeile3HTML, - StartDate = @StartDate, - EndDate = @EndDate, - StartTime = @StartTime, - EndTime = @EndTime, - IsRecurring = @IsRecurring, - IsMonday = @IsMonday, - IsTuesday = @IsTuesday, - IsWednesday = @IsWednesday, - IsThursday = @IsThursday, - IsFriday = @IsFriday, - IsSaturday = @IsSaturday, - IsSunday = @IsSunday, - IsActive = @IsActive - WHERE TvTextBezeichnungID = @TvTextBezeichnungID" - End If + Using cmd As New SqlCommand(sqlUpdate, conn, transaction) + cmd.Parameters.AddWithValue("@FixeZeile1RTF", If(String.IsNullOrWhiteSpace(aviso.FixeZeile1RTF), CType(Nothing, String), aviso.FixeZeile1RTF)) + cmd.Parameters.AddWithValue("@FixeZeile1HTML", If(String.IsNullOrWhiteSpace(aviso.FixeZeile1HTML), CType(Nothing, String), aviso.FixeZeile1HTML)) + cmd.Parameters.AddWithValue("@FixeZeile2RTF", If(String.IsNullOrWhiteSpace(aviso.FixeZeile2RTF), DBNull.Value, aviso.FixeZeile2RTF)) + cmd.Parameters.AddWithValue("@FixeZeile2HTML", If(String.IsNullOrWhiteSpace(aviso.FixeZeile2HTML), DBNull.Value, aviso.FixeZeile2HTML)) + cmd.Parameters.AddWithValue("@FixeZeile3RTF", If(String.IsNullOrWhiteSpace(aviso.FixeZeile3RTF), DBNull.Value, aviso.FixeZeile3RTF)) + cmd.Parameters.AddWithValue("@FixeZeile3HTML", If(String.IsNullOrWhiteSpace(aviso.FixeZeile3HTML), DBNull.Value, aviso.FixeZeile3HTML)) + cmd.Parameters.AddWithValue("@StartDate", If(aviso.StartDate.HasValue, CType(aviso.StartDate.Value, Object), DBNull.Value)) + cmd.Parameters.AddWithValue("@EndDate", If(aviso.EndDate.HasValue, CType(aviso.EndDate.Value, Object), DBNull.Value)) + cmd.Parameters.AddWithValue("@StartTime", If(aviso.StartTime.HasValue, CType(aviso.StartTime.Value, Object), DBNull.Value)) + cmd.Parameters.AddWithValue("@EndTime", If(aviso.EndTime.HasValue, CType(aviso.EndTime.Value, Object), DBNull.Value)) + cmd.Parameters.AddWithValue("@IsRecurring", aviso.IsRecurring) + cmd.Parameters.AddWithValue("@IsMonday", aviso.IsMonday) + cmd.Parameters.AddWithValue("@IsTuesday", aviso.IsTuesday) + cmd.Parameters.AddWithValue("@IsWednesday", aviso.IsWednesday) + cmd.Parameters.AddWithValue("@IsThursday", aviso.IsThursday) + cmd.Parameters.AddWithValue("@IsFriday", aviso.IsFriday) + cmd.Parameters.AddWithValue("@IsSaturday", aviso.IsSaturday) + cmd.Parameters.AddWithValue("@IsSunday", aviso.IsSunday) + cmd.Parameters.AddWithValue("@IsActive", aviso.IsActive) + cmd.Parameters.AddWithValue("@TvTextBezeichnungID", aviso.TvTextBezeichnungID) - cmd = New SqlCommand(sql, conn, transaction) + cmd.ExecuteNonQuery() + End Using + End If - cmd.Parameters.AddWithValue("@FixeZeile1RTF", If(String.IsNullOrWhiteSpace(aviso.FixeZeile1RTF), CType(Nothing, String), aviso.FixeZeile1RTF)) - cmd.Parameters.AddWithValue("@FixeZeile1HTML", If(String.IsNullOrWhiteSpace(aviso.FixeZeile1HTML), CType(Nothing, String), aviso.FixeZeile1HTML)) - cmd.Parameters.AddWithValue("@FixeZeile2RTF", If(String.IsNullOrWhiteSpace(aviso.FixeZeile2RTF), DBNull.Value, aviso.FixeZeile2RTF)) - cmd.Parameters.AddWithValue("@FixeZeile2HTML", If(String.IsNullOrWhiteSpace(aviso.FixeZeile2HTML), DBNull.Value, aviso.FixeZeile2HTML)) - cmd.Parameters.AddWithValue("@FixeZeile3RTF", If(String.IsNullOrWhiteSpace(aviso.FixeZeile3RTF), DBNull.Value, aviso.FixeZeile3RTF)) - cmd.Parameters.AddWithValue("@FixeZeile3HTML", If(String.IsNullOrWhiteSpace(aviso.FixeZeile3HTML), DBNull.Value, aviso.FixeZeile3HTML)) - cmd.Parameters.AddWithValue("@StartDate", If(aviso.StartDate.HasValue, CType(aviso.StartDate.Value, Object), DBNull.Value)) - cmd.Parameters.AddWithValue("@EndDate", If(aviso.EndDate.HasValue, CType(aviso.EndDate.Value, Object), DBNull.Value)) - cmd.Parameters.AddWithValue("@StartTime", If(aviso.StartTime.HasValue, CType(aviso.StartTime.Value, Object), DBNull.Value)) - cmd.Parameters.AddWithValue("@EndTime", If(aviso.EndTime.HasValue, CType(aviso.EndTime.Value, Object), DBNull.Value)) - cmd.Parameters.AddWithValue("@IsRecurring", aviso.IsRecurring) - cmd.Parameters.AddWithValue("@IsMonday", aviso.IsMonday) - cmd.Parameters.AddWithValue("@IsTuesday", aviso.IsTuesday) - cmd.Parameters.AddWithValue("@IsWednesday", aviso.IsWednesday) - cmd.Parameters.AddWithValue("@IsThursday", aviso.IsThursday) - cmd.Parameters.AddWithValue("@IsFriday", aviso.IsFriday) - cmd.Parameters.AddWithValue("@IsSaturday", aviso.IsSaturday) - cmd.Parameters.AddWithValue("@IsSunday", aviso.IsSunday) - cmd.Parameters.AddWithValue("@IsActive", aviso.IsActive) + ' Einfügen oder Aktualisieren in die StandortTvBezeichnung-Tabelle + Dim sqlLink As String = " + IF EXISTS ( + SELECT 1 FROM StandortTvBezeichnung + WHERE StandortID = @StandortID AND TvTextBezeichnungID = @TvTextBezeichnungID + ) + BEGIN + UPDATE StandortTvBezeichnung + SET Position = @Position + WHERE StandortID = @StandortID AND TvTextBezeichnungID = @TvTextBezeichnungID + END + ELSE + BEGIN + INSERT INTO StandortTvBezeichnung (StandortID, TvTextBezeichnungID, Position) + VALUES (@StandortID, @TvTextBezeichnungID, @Position) + END + " - If aviso.TvTextBezeichnungID <> 0 Then - cmd.Parameters.AddWithValue("@TvTextBezeichnungID", aviso.TvTextBezeichnungID) - End If + Using cmdLink As New SqlCommand(sqlLink, conn, transaction) + cmdLink.Parameters.AddWithValue("@StandortID", aviso.StandortID) + cmdLink.Parameters.AddWithValue("@TvTextBezeichnungID", aviso.TvTextBezeichnungID) + cmdLink.Parameters.AddWithValue("@Position", If(String.IsNullOrEmpty(aviso.Position), DBNull.Value, aviso.Position)) - If aviso.TvTextBezeichnungID = 0 Then - cmd.Parameters.AddWithValue("@TvTextBezeichnung", aviso.TvTextBezeichnung) - - ' Neuanlage: Führen Sie das INSERT aus und holen Sie die generierte ID - Dim result As Object = cmd.ExecuteScalar() - If result Is Nothing OrElse IsDBNull(result) Then - Throw New Exception("Das INSERT hat keine ID zurückgegeben.") - End If - aviso.TvTextBezeichnungID = Convert.ToInt32(result) - Else - ' Aktualisierung: Führen Sie das UPDATE aus - cmd.ExecuteNonQuery() - End If - - ' Einfügen oder Aktualisieren in die StandortTvBezeichnung-Tabelle - Dim sqlLink As String = " - IF EXISTS ( - SELECT 1 FROM StandortTvBezeichnung - WHERE StandortID = @StandortID AND TvTextBezeichnungID = @TvTextBezeichnungID - ) - BEGIN - UPDATE StandortTvBezeichnung - SET Position = @Position - WHERE StandortID = @StandortID AND TvTextBezeichnungID = @TvTextBezeichnungID - END - ELSE - BEGIN - INSERT INTO StandortTvBezeichnung (StandortID, TvTextBezeichnungID, Position) - VALUES (@StandortID, @TvTextBezeichnungID, @Position) - END - " - - cmdLink = New SqlCommand(sqlLink, conn, transaction) - cmdLink.Parameters.AddWithValue("@StandortID", aviso.StandortID) - cmdLink.Parameters.AddWithValue("@TvTextBezeichnungID", aviso.TvTextBezeichnungID) - cmdLink.Parameters.AddWithValue("@Position", If(String.IsNullOrEmpty(aviso.Position), DBNull.Value, aviso.Position)) - - cmdLink.ExecuteNonQuery() - - ' Transaktion committen, wenn alle Operationen erfolgreich waren - transaction.Commit() + cmdLink.ExecuteNonQuery() + End Using + ' Transaktion committen, wenn alle Operationen erfolgreich waren + transaction.Commit() + Catch ex As Exception + ' Fehlerbehandlung: Transaktion zurückrollen und Fehler weiterwerfen + Try + transaction.Rollback() + Catch rollbackEx As Exception + Throw New Exception("Fehler beim Zurückrollen der Transaktion: " & rollbackEx.Message, rollbackEx) + End Try + Throw ' Weiterwerfen der ursprünglichen Ausnahme + End Try + End Using + End Using Catch ex As SqlException - ' Fehlerbehandlung: Transaktion zurückrollen und Fehler weiterwerfen - If transaction IsNot Nothing Then - Try - transaction.Rollback() - Catch rollbackEx As Exception - Throw New Exception("Fehler beim Zurückrollen der Transaktion: " & rollbackEx.Message) - End Try - End If - Throw New Exception("SQL Fehler beim Speichern des Eintrags: " & ex.Message) + Throw New Exception("SQL Fehler beim Speichern des Eintrags: " & ex.Message, ex) Catch ex As Exception - ' Allgemeine Fehlerbehandlung: Transaktion zurückrollen und Fehler weiterwerfen - If transaction IsNot Nothing Then - Try - transaction.Rollback() - Catch rollbackEx As Exception - Throw New Exception("Fehler beim Zurückrollen der Transaktion: " & rollbackEx.Message) - End Try - End If - Throw New Exception("Allgemeiner Fehler beim Speichern des Eintrags: " & ex.Message) - Finally - ' Ressourcen manuell freigeben - If cmdLink IsNot Nothing Then - cmdLink.Dispose() - cmdLink = Nothing - End If - - If cmd IsNot Nothing Then - cmd.Dispose() - cmd = Nothing - End If - - If transaction IsNot Nothing Then - transaction.Dispose() - transaction = Nothing - End If - - If conn IsNot Nothing Then - conn.Close() - conn = Nothing - End If + Throw New Exception("Allgemeiner Fehler beim Speichern des Eintrags: " & ex.Message, ex) End Try End Sub - - - ' Methode zum Setzen eines Eintrags auf inaktiv + ''' + ''' Setzt einen AvisoTvNew-Eintrag auf inaktiv. + ''' + ''' Die ID des Eintrags, der inaktiv gesetzt werden soll. Public Sub SetzeAufInaktiv(ByVal hID As Integer) Dim sql As String = "UPDATE AvisoTvNew SET IsActive = 0 WHERE TVID = @TVID" Try - Dim conn As SqlConnection = cDatenbankAVISO.GetNewOpenConnectionWithoutError() - If conn Is Nothing Then - Throw New Exception("Die Datenbankverbindung konnte nicht hergestellt werden.") - End If - - Using cmd As New SqlCommand(sql, conn) - cmd.Parameters.AddWithValue("@TVID", hID) - Dim rowsAffected As Integer = cmd.ExecuteNonQuery() - If rowsAffected = 0 Then - Throw New Exception("Der Datensatz konnte nicht auf inaktiv gesetzt werden. Möglicherweise existiert er nicht mehr.") - End If + Using conn As SqlConnection = cDatenbankAVISO.CreateNewOpenConnection() + Using cmd As New SqlCommand(sql, conn) + cmd.Parameters.AddWithValue("@TVID", hID) + Dim rowsAffected As Integer = cmd.ExecuteNonQuery() + If rowsAffected = 0 Then + Throw New Exception("Der Datensatz konnte nicht auf inaktiv gesetzt werden. Möglicherweise existiert er nicht mehr.") + End If + End Using End Using Catch ex As SqlException - ' Ausnahme weiterwerfen mit spezifischer Fehlermeldung - Throw New Exception("AvisoTvNew-Eintrag kann nicht auf inaktiv gesetzt werden! " & vbCrLf & ex.Message) + Throw New Exception("AvisoTvNew-Eintrag kann nicht auf inaktiv gesetzt werden! " & vbCrLf & ex.Message, ex) Catch ex As Exception - ' Allgemeine Ausnahme weiterwerfen - Throw New Exception("Fehler beim Setzen auf inaktiv: " & ex.Message) + Throw New Exception("Fehler beim Setzen auf inaktiv: " & ex.Message, ex) End Try End Sub @@ -2990,6 +3070,7 @@ End Class + Public Class cAvisoTV Property TVID As Long = 0 Property FixeZeile1 As String