230 lines
7.8 KiB
VB.net
230 lines
7.8 KiB
VB.net
Imports System.Data.SqlClient
|
|
Imports System.Reflection
|
|
|
|
Public Class cGreendeal_CBAM_Trn
|
|
|
|
' =====================================================
|
|
' Properties = Spalten tblGreendeal_CBAM_Trn
|
|
' =====================================================
|
|
Public Property cbam_Id As Integer
|
|
Public Property trnPattern As String
|
|
Public Property ware As String
|
|
Public Property sektor As String
|
|
Public Property hinweis As String
|
|
Public Property is_exclusion As Boolean?
|
|
Public Property is_active As Boolean?
|
|
Public Property start_date As Date?
|
|
Public Property end_date As Date?
|
|
|
|
Public Property hasEntry As Boolean = False
|
|
|
|
Private SQL As New SQL
|
|
|
|
' =====================================================
|
|
' Konstruktor
|
|
' =====================================================
|
|
Sub New()
|
|
|
|
End Sub
|
|
Sub New(cbam_Id As Integer)
|
|
Me.cbam_Id = cbam_Id
|
|
LOAD()
|
|
End Sub
|
|
|
|
' =====================================================
|
|
' Parameterliste (Mapping Property <-> SQL)
|
|
' =====================================================
|
|
Public Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
|
|
|
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
|
|
|
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("cbam_Id", cbam_Id,, True))
|
|
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("trnPattern", trnPattern))
|
|
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ware", ware))
|
|
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sektor", sektor))
|
|
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("hinweis", hinweis))
|
|
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("is_exclusion", is_exclusion))
|
|
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("is_active", is_active))
|
|
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("start_date", start_date))
|
|
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("end_date", end_date))
|
|
|
|
Return list
|
|
End Function
|
|
|
|
' =====================================================
|
|
' SAVE (Insert / Update)
|
|
' =====================================================
|
|
Public Function SAVE() As Boolean
|
|
|
|
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
|
|
|
|
Dim sqlstr As String =
|
|
" BEGIN TRAN " &
|
|
" IF EXISTS (SELECT 1 FROM tblGreendeal_CBAM_Trn WHERE cbam_Id=@cbam_Id) " &
|
|
" BEGIN " & getUpdateCmd() & " END " &
|
|
" ELSE " &
|
|
" BEGIN " & getInsertCmd() & " END " &
|
|
" COMMIT TRAN "
|
|
|
|
Return SQL.doSQLVarList(sqlstr, "VERAG", , list)
|
|
|
|
End Function
|
|
|
|
' =====================================================
|
|
' LOAD
|
|
' =====================================================
|
|
Public Sub LOAD()
|
|
Try
|
|
hasEntry = False
|
|
|
|
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
|
|
Using cmd As New SqlCommand(
|
|
"SELECT * FROM tblGreendeal_CBAM_Trn WHERE cbam_Id=@cbam_Id", conn)
|
|
|
|
cmd.Parameters.AddWithValue("@cbam_Id", cbam_Id)
|
|
|
|
Using dr = cmd.ExecuteReader()
|
|
If dr.Read Then
|
|
For Each li In getParameterList()
|
|
Dim pi As PropertyInfo =
|
|
Me.GetType.GetProperty(li.Scalarvariable)
|
|
|
|
If pi IsNot Nothing Then
|
|
If dr.Item(li.Text) Is DBNull.Value Then
|
|
pi.SetValue(Me, Nothing)
|
|
Else
|
|
pi.SetValue(Me, dr.Item(li.Text))
|
|
End If
|
|
End If
|
|
Next
|
|
hasEntry = True
|
|
End If
|
|
End Using
|
|
End Using
|
|
End Using
|
|
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(
|
|
ex.Message,
|
|
ex.StackTrace,
|
|
System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
End Sub
|
|
|
|
' =====================================================
|
|
' UPDATE Command
|
|
' =====================================================
|
|
Private Function getUpdateCmd() As String
|
|
Try
|
|
Dim list = getParameterList()
|
|
Dim str As String = ""
|
|
|
|
For Each i In list
|
|
If Not i.isPrimaryParam Then
|
|
str &= "[" & i.Text & "] = @" & i.Scalarvariable & ","
|
|
End If
|
|
Next
|
|
|
|
str = str.Substring(0, str.Length - 1)
|
|
|
|
Return " UPDATE tblGreendeal_CBAM_Trn SET " & str &
|
|
" WHERE cbam_Id=@cbam_Id "
|
|
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(
|
|
ex.Message,
|
|
ex.StackTrace,
|
|
System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
|
|
Return ""
|
|
End Function
|
|
|
|
' =====================================================
|
|
' INSERT Command
|
|
' =====================================================
|
|
Private Function getInsertCmd() As String
|
|
Try
|
|
Dim list = getParameterList()
|
|
Dim cols As String = ""
|
|
Dim vals As String = ""
|
|
|
|
For Each i In list
|
|
If Not i.isPrimaryParam Then
|
|
cols &= "[" & i.Text & "],"
|
|
vals &= "@" & i.Scalarvariable & ","
|
|
End If
|
|
Next
|
|
|
|
cols = cols.Substring(0, cols.Length - 1)
|
|
vals = vals.Substring(0, vals.Length - 1)
|
|
|
|
Return " INSERT INTO tblGreendeal_CBAM_Trn (" & cols & ") VALUES (" & vals & ") "
|
|
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(
|
|
ex.Message,
|
|
ex.StackTrace,
|
|
System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
|
|
Return ""
|
|
End Function
|
|
|
|
Public Shared Function BuildCBAMPatternWhereClause(columnName As String, Optional onlyActive As Boolean = True, Optional includeExclusions As Boolean = False) As String
|
|
|
|
Dim sql As String =
|
|
"SELECT trnPattern " &
|
|
" FROM VERAG.dbo.tblGreendeal_CBAM_Trn " &
|
|
" WHERE trnPattern IS NOT NULL " &
|
|
" AND LTRIM(RTRIM(trnPattern)) <> '' "
|
|
|
|
If onlyActive Then
|
|
sql &= " AND is_active = 1 " &
|
|
" AND (start_date IS NULL OR start_date <= GETDATE()) " &
|
|
" AND (end_date IS NULL OR end_date >= GETDATE()) "
|
|
End If
|
|
|
|
If Not includeExclusions Then
|
|
sql &= " AND ISNULL(is_exclusion,0) = 0 "
|
|
End If
|
|
|
|
Dim dt As DataTable = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql(sql, "FMZOLL")
|
|
|
|
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
|
|
Return "1=0" ' bewusst: keine Patterns → kein Treffer
|
|
End If
|
|
|
|
Dim conditions As New List(Of String)
|
|
|
|
For Each r As DataRow In dt.Rows
|
|
Dim pattern As String = r("trnPattern").ToString().Trim()
|
|
|
|
' einfache SQL-Escaping-Sicherheit
|
|
pattern = pattern.Replace("'", "''")
|
|
|
|
conditions.Add($"{columnName} LIKE '{pattern}'")
|
|
Next
|
|
|
|
Return "(" & String.Join(" OR ", conditions) & ")"
|
|
|
|
End Function
|
|
|
|
|
|
Public Shared Function DELETE_ALL() As Boolean
|
|
Try
|
|
|
|
Dim sqlstr As String = " DELETE FROM tblGreendeal_CBAM_Trn "
|
|
Return (New VERAG_PROG_ALLGEMEIN.SQL).doSQL(sqlstr, "VERAG", , Nothing)
|
|
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(
|
|
ex.Message,
|
|
ex.StackTrace,
|
|
System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
|
|
Return False
|
|
End Function
|
|
|
|
End Class |