Imports System.Data.SqlClient Imports System.Reflection Public Class cSicherheiten Property gs_gsId As Integer Property gs_ATBNr As String Property gs_posNr As Integer Property gs_datum As DateTime Property gs_erstellungsdatum As DateTime Property gs_warenwert As Object Property gs_sicherheitsbetrag As Object Property gs_saldo As Object Property gs_standort As String Property gs_art As String Property gs_gsNr As Integer Property gs_ust As Integer Property gs_freitext As String Property gs_filialenNr As Integer Property gs_abfertigungsnr As String Property gs_LKWKZ As String Property gs_atr As String = "" Property gs_warenort As String Property gs_zollsatz As Object Property gs_avisoId As Integer Property gs_isRundungsdiff As Boolean Property gs_ReferenzAenderung As Boolean Property gs_zuletztgeandert As Object = Nothing Property gs_systemuser As Object = Nothing Property gs_MRNNr As Object = Nothing Property gs_posSubNr As Object = Nothing Property gs_VeralteteWeitereRegistriernummer As Object = Nothing Property gs_dakoyimport As Boolean = False Property gs_EH_Anzahl As Object = Nothing Property gs_DK_laufnr As Object = Nothing Property gs_gewicht As Object = Nothing Public hasEntry = False Dim SQL As New SQL Sub New(gs_gsID, gs_posNr) Me.gs_gsId = gs_gsID Me.gs_posNr = gs_posNr LOAD() End Sub Sub New(gs_gsID, gs_posNr, gs_posSubNr) Me.gs_gsId = gs_gsID Me.gs_posNr = gs_posNr Me.gs_posSubNr = gs_posSubNr LOADSubNr() End Sub Sub New(gs_gsID, gs_posNr, gs_posSubNr, gs_DK_laufnr) Me.gs_gsId = gs_gsID Me.gs_posNr = gs_posNr Me.gs_posSubNr = gs_posSubNr Me.gs_DK_laufnr = gs_DK_laufnr LOADDakosyLaufNr() End Sub Sub New(gs_gsNr) Me.gs_gsNr = gs_gsNr LOADGSNR() End Sub Sub New() End Sub Function getParameterList(Optional WithoutPosSubNr As Boolean = False) As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_gsId", gs_gsId,, True)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_ATBNr", gs_ATBNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_posNr", gs_posNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_datum", gs_datum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_erstellungsdatum", gs_erstellungsdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_warenwert", gs_warenwert)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_sicherheitsbetrag", gs_sicherheitsbetrag)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_saldo", gs_saldo)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_standort", gs_standort)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_art", gs_art)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_gsNr", gs_gsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_ust", gs_ust)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_freitext", gs_freitext)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_filialenNr", gs_filialenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_abfertigungsnr", gs_abfertigungsnr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_LKWKZ", gs_LKWKZ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_atr", gs_atr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_warenort", gs_warenort)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_zollsatz", gs_zollsatz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_avisoId", gs_avisoId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_isRundungsdiff", gs_isRundungsdiff)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_ReferenzAenderung", gs_ReferenzAenderung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_zuletztgeandert", gs_zuletztgeandert)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_systemuser", gs_systemuser)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_MRNNr", gs_MRNNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_VeralteteWeitereRegistriernummer", gs_VeralteteWeitereRegistriernummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_dakoyimport", gs_dakoyimport)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_EH_Anzahl", gs_EH_Anzahl)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_DK_laufnr", gs_DK_laufnr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_gewicht", gs_gewicht)) If Not WithoutPosSubNr Then list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_posSubNr", gs_posSubNr)) Return list End Function Public Function SAVE() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM [tblGesamtsicherheit] WHERE gs_gsId=@gs_gsId AND gs_posNr=@gs_posNr) " & " BEGIN " & getUpdateCmd() & " END " & " Else " & " BEGIN " & getInsertCmd() & " END " & " commit tran " Return SQL.doSQLVarList(sqlstr, "AVISO", , list) End Function Public Function SAVEOBJECT() As Integer Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM [tblGesamtsicherheit] WHERE gs_gsId=@gs_gsId AND gs_posNr=@gs_posNr) " & " BEGIN " & getUpdateCmd() & " END " & " Else " & " BEGIN " & getInsertCmd() & " END " & " commit tran " gs_gsId = SQL.doSQLVarListID(gs_gsId, sqlstr, "AVISO", , list) Return gs_gsId End Function Public Function UPDATEWithNewPosNr(Optional ingorePosSubNr As Boolean = False) As Integer Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList(ingorePosSubNr) Dim sqlstr = " BEGIN " & getUpdateCmd(ingorePosSubNr) & " END " gs_gsId = SQL.doSQLVarListID(gs_gsId, sqlstr, "AVISO", , list) Return gs_gsId End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAVISO() Using cmd As New SqlCommand("SELECT * FROM [tblGesamtsicherheit] WHERE gs_gsId=@gs_gsId AND gs_posNr=@gs_posNr ", conn) cmd.Parameters.AddWithValue("@gs_gsID", gs_gsId) cmd.Parameters.AddWithValue("@gs_posNr", gs_posNr) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each li In getParameterList() Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then propInfo.SetValue(Me, Nothing) Else propInfo.SetValue(Me, dr.Item(li.Text)) End If Next hasEntry = True End If dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Sub LOADSubNr() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAVISO() Using cmd As New SqlCommand("SELECT * FROM [tblGesamtsicherheit] WHERE gs_gsId=@gs_gsId AND gs_posNr=@gs_posNr AND gs_posSubNr=@gs_posSubNr ", conn) cmd.Parameters.AddWithValue("@gs_gsID", gs_gsId) cmd.Parameters.AddWithValue("@gs_posNr", gs_posNr) cmd.Parameters.AddWithValue("@gs_posSubNr", gs_posSubNr) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each li In getParameterList() Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then propInfo.SetValue(Me, Nothing) Else propInfo.SetValue(Me, dr.Item(li.Text)) End If Next hasEntry = True End If dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Sub LOADDakosyLaufNr() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAVISO() Using cmd As New SqlCommand("SELECT * FROM [tblGesamtsicherheit] WHERE gs_gsId=@gs_gsId AND gs_posNr=@gs_posNr AND gs_DK_laufnr=@gs_DK_laufnr ", conn) cmd.Parameters.AddWithValue("@gs_gsID", gs_gsId) cmd.Parameters.AddWithValue("@gs_posNr", gs_posNr) cmd.Parameters.AddWithValue("@gs_DK_laufnr", gs_DK_laufnr) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each li In getParameterList() Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then propInfo.SetValue(Me, Nothing) Else propInfo.SetValue(Me, dr.Item(li.Text)) End If Next hasEntry = True End If dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Sub LOADGSNR() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionAVISO() Using cmd As New SqlCommand("SELECT * FROM [tblGesamtsicherheit] WHERE gs_gsNr=@gs_gsNr ", conn) cmd.Parameters.AddWithValue("@gs_gsNr", gs_gsNr) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each li In getParameterList() Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then propInfo.SetValue(Me, Nothing) Else propInfo.SetValue(Me, dr.Item(li.Text)) End If Next hasEntry = True End If dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Function getUpdateCmd(Optional ingorePosSubNr As Boolean = False) As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList(ingorePosSubNr) Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE [tblGesamtsicherheit] SET " & str & " WHERE gs_gsId=@gs_gsId") ' AND gs_posNr=@gs_posNr ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function Public Function getInsertCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO [tblGesamtsicherheit] (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function Public Function Delete() SQL.doSQL("delete from [tblGesamtsicherheit] where gs_gsId = '" & Me.gs_gsId & "' AND gs_posNr='" & Me.gs_posNr & "'", "AVISO") End Function Public Shared Sub rearangePosNr(gsNr As Integer, ATBNr As String, posNr As Integer) If posNr = -1 Or posNr = 1 Then Exit Sub Dim sqlq As String = "select [gs_gsId], [gs_posNr] from [tblGesamtsicherheit] where gs_gsnr = " & gsNr & " AND gs_ATBNR = '" & ATBNr & "' AND gs_posNr >= " & posNr Dim dt As New DataTable dt = (New SQL).loadDgvBySql(sqlq, "AVISO", 100, True) If (dt.Rows.Count = 0) Then Exit Sub For i As Integer = 0 To dt.Rows.Count - 1 Dim sicherheit = New cSicherheiten(dt.Rows(i).Item("gs_gsId"), dt.Rows(i).Item("gs_posNr")) Dim currentPos = sicherheit.gs_posNr If sicherheit.gs_posSubNr IsNot Nothing Then rearangeSubPosNr(gsNr, ATBNr, currentPos, sicherheit.gs_posSubNr) End If If currentPos > 0 Then sicherheit.gs_posNr = currentPos - 1 End If sicherheit.UPDATEWithNewPosNr(True) Next End Sub Public Shared Function rearangePosNrByDakosyLaufNr(gsNr As Integer, ATBNr As String) If gsNr > 0 AndAlso ATBNr <> "" Then Dim SQLString = "WITH Ordered AS ( SELECT gs_gsId, ROW_NUMBER() OVER ( ORDER BY gs_DK_laufnr, gs_posSubNr ) - 1 AS NewPosNr FROM tblGesamtsicherheit WHERE gs_gsnr = " & gsNr & " AND gs_ATBNR = '" & ATBNr & "' ) UPDATE t SET gs_posNr = o.NewPosNr FROM tblGesamtsicherheit t INNER JOIN Ordered o ON t.gs_gsId = o.gs_gsId" If (New SQL).doSQL(SQLString, "AVISO") Then Return True Else Return False End If Else Return False End If End Function Public Shared Sub rearangeSubPosNr(gsNr As Integer, ATBNr As String, posNr As Integer, subposNr As Integer) If subposNr = -1 Or subposNr = 1 Then Exit Sub Dim sqlq As String = "select [gs_gsId], [gs_posNr] ,[gs_posSubNr] from [tblGesamtsicherheit] where gs_gsnr = " & gsNr & " AND gs_ATBNR = '" & ATBNr & "' AND gs_posSubNr >= " & subposNr Dim dt As New DataTable dt = (New SQL).loadDgvBySql(sqlq, "AVISO", 100, True) If (dt.Rows.Count = 0) Then Exit Sub For i As Integer = 0 To dt.Rows.Count - 1 Dim sicherheit = New cSicherheiten(dt.Rows(i).Item("gs_gsId"), dt.Rows(i).Item("gs_posNr"), dt.Rows(i).Item("gs_posSubNr")) Dim currentPos = sicherheit.gs_posSubNr sicherheit.gs_posSubNr = currentPos - 1 sicherheit.UPDATEWithNewPosNr() Next End Sub Public Shared Function getLatestPosNr(gs_gsnr As Integer, gs_ATBNr As String) As Integer Dim posNr As Integer = 0 Dim sqlq As String = "Select MAX([gs_posNr]) As MaxPosNr from [tblGesamtsicherheit] where gs_gsnr = " & gs_gsnr & " And gs_ATBNR = '" & gs_ATBNr & "'" Dim dt As New DataTable dt = (New SQL).loadDgvBySql(sqlq, "AVISO", 100, True) If (dt.Rows(0).Item(0) IsNot DBNull.Value) Then posNr = dt.Rows(0).Item(0) End If Return posNr End Function Public Shared Function getLatestSubPosNr(gs_gsnr As Integer, gs_ATBNr As String, gs_MRNNr As String) As Integer Dim posNr As Integer = 0 Dim sqlq As String = "Select MAX([gs_posSubNr]) As MaxPosNr from [tblGesamtsicherheit] where gs_gsnr = " & gs_gsnr & " And gs_MRNNr is not null and gs_MRNNr = '" & gs_MRNNr & "' And gs_ATBNR = '" & gs_ATBNr & "'" Dim dt As New DataTable dt = (New SQL).loadDgvBySql(sqlq, "AVISO", 100, True) If (dt.Rows(0).Item(0) IsNot DBNull.Value) Then posNr = dt.Rows(0).Item(0) End If Return posNr End Function End Class