DHF Artikelstamm

This commit is contained in:
2025-08-05 21:39:06 +02:00
parent 0f98cbcc8b
commit 2760a44ed7
13 changed files with 841 additions and 86 deletions

View File

@@ -1,4 +1,6 @@
Imports System.Data.SqlClient
Imports System.Reflection
Imports com.sun.org.apache.xml.internal.security.transforms
Imports DocumentFormat.OpenXml.Bibliography
Public Class SQL
@@ -545,6 +547,54 @@ Public Class SQL
Return Nothing
End Function
Public Function GetNewOpenConnection(conn_art) As SqlConnection
Dim conn As New SqlConnection
Select Case conn_art
Case "SDL" : conn = GetNewOpenConnectionSDL()
Case "FMZOLL" : conn = GetNewOpenConnectionFMZOLL()
Case "ADMIN" : conn = GetNewOpenConnectionADMIN()
Case "ASFINAG" : conn = GetNewOpenConnectionAsfinag()
Case "DISPO" : conn = GetNewOpenConnectionDISPO()
Case "ATLAS" : conn = GetNewOpenConnectionATLAS()
Case "ATLAS_SBG" : conn = GetNewOpenConnectionATLAS_SBG()
Case "EZOLL" : conn = GetNewOpenConnectionEZOLL()
Case "EZOLL_UNISPED" : conn = GetNewOpenConnectionEZOLL_UNISPED()
Case "AVISO" : conn = GetNewOpenConnectionAVISO()
Case "VERAG" : conn = GetNewOpenConnectionFMZOLL()
Case "FD" : conn = GetNewOpenConnectionFD()
Case "WEB" : conn = GetNewOpenConnectionWEB()
Case "FIBU", "SYSKA" : conn = GetNewOpenConnectionSYSKA()
Case "PARKZEIT" : conn = GetNewOpenConnectionPARKZEIT()
Case "AVISO_ATILLA"
conn.ConnectionString = "Data Source=172.16.0.98;Initial Catalog=AVISO_ATILLA;Integrated Security=false;User ID=sa;Password=BmWr501956;Pooling=true;Min Pool Size=5;Max Pool Size=200"
conn.Open()
End Select
Return conn
End Function
Public Function GetScalarValue(sql As String, conn_art As String, params As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As Integer
Try
Using conn As SqlConnection = GetNewOpenConnection(conn_art)
Using cmd As New SqlCommand(sql, conn)
For Each p In params
cmd.Parameters.AddWithValue("@" & p.Scalarvariable, If(p.Value, DBNull.Value))
Next
Dim result = cmd.ExecuteScalar()
If result Is Nothing OrElse result Is DBNull.Value Then
Return 0
Else
Return Convert.ToInt32(result)
End If
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Fehler in GetScalarValue: " & ex.Message, ex.StackTrace, MethodBase.GetCurrentMethod().Name)
Return 0
End Try
End Function
Public Function loadDgvBySql(ByVal sql As String, Optional conn_art As String = "SDL", Optional timeout As Integer = 0, Optional showerror As Boolean = True) As DataTable
Try
Dim myTable = New DataTable()
@@ -867,10 +917,27 @@ Public Class SQL
Case "PARKZEIT" : conn = GetNewOpenConnectionPARKZEIT()
End Select
Try
' MsgBox(sql)
Using cmd As New SqlCommand(sql, conn)
If list IsNot Nothing Then
For Each i In list
If String.IsNullOrWhiteSpace(i.Scalarvariable) Then
Throw New Exception("❌ Leerer Parametername in SQLVariable!")
End If
If i.Scalarvariable.ToLower = "errno" Then
Throw New Exception("❌ Ungültiger Parametername 'errno' bitte umbenennen.")
End If
If Not System.Text.RegularExpressions.Regex.IsMatch(i.Scalarvariable, "^[a-zA-Z0-9_]+$") Then
Throw New Exception("❌ Ungültiger SQL-Parametername (Regex): '" & i.Scalarvariable & "'")
End If
'MsgBox(i.Text.trim & " " & IIf(i.Value Is Nothing, DBNull.Value, i.Value))
cmd.Parameters.AddWithValue("@" & i.Scalarvariable.trim, IIf(i.Value Is Nothing, DBNull.Value, i.Value))
Next
@@ -881,7 +948,13 @@ Public Class SQL
Return True
Catch ex As Exception
' MsgBox("ERR!")
If showErr Then VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, , , , , sql)
If ex.Message.Contains("Falsche Syntax in der Nähe von '@errno'") Then
' Spezielle Behandlung für den Fehler mit dem Parameter 'errno'
'VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("❌ Ungültiger SQL-Parametername 'errno' bitte umbenennen.", ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, , , , , sql)
ElseIf ex.Message.Contains("Leerer Parametername") Then
If showErr Then VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, , , , , sql)
End If
End Try
Return False
End Function

View File

@@ -61,7 +61,96 @@ Public Class MyListItem2
End Class
'Public Class SQLVariable
' Private ReadOnly TextSQLName As String
' Private ReadOnly ValueSQLVALUE As Object
' Private ReadOnly ScalarvariablenameIntern As String
' Private ReadOnly primaryParam As Boolean
' Private ReadOnly onlyForLoad As Boolean
' Private ReadOnly onlyForSave As Boolean
' ''' <summary>
' ''' Erstellt eine neue SQLVariable für Parameterübergaben an SQL-Befehle.
' ''' </summary>
' ''' <param name="Text">Spaltenname in der Datenbank</param>
' ''' <param name="Value">Wert, der gespeichert oder gelesen werden soll</param>
' ''' <param name="Scalarvariablename">Parametername für SQL-Bindung (optional, sonst = Text)</param>
' ''' <param name="primaryParam">Kennzeichnet Primärschlüssel für WHERE-Klausel</param>
' ''' <param name="onlyForLoad">Wird nur beim Laden verwendet</param>
' ''' <param name="onlyForSave">Wird nur beim Speichern verwendet</param>
' Public Sub New(ByVal Text As String,
' ByVal Value As Object,
' Optional Scalarvariablename As String = "",
' Optional primaryParam As Boolean = False,
' Optional onlyForLoad As Boolean = False,
' Optional onlyForSave As Boolean = False)
' If String.IsNullOrWhiteSpace(Text) Then
' Throw New ArgumentException("❌ SQLVariable: Text darf nicht leer sein!")
' End If
' Me.TextSQLName = Text
' Me.ValueSQLVALUE = Value
' Me.primaryParam = primaryParam
' Me.onlyForLoad = onlyForLoad
' Me.onlyForSave = onlyForSave
' Me.ScalarvariablenameIntern = If(String.IsNullOrWhiteSpace(Scalarvariablename), Text, Scalarvariablename)
' End Sub
' ''' <summary>
' ''' Name der SQL-Spalte
' ''' </summary>
' Public ReadOnly Property Text() As String
' Get
' Return TextSQLName
' End Get
' End Property
' ''' <summary>
' ''' Wert der SQL-Spalte
' ''' </summary>
' Public ReadOnly Property Value() As Object
' Get
' Return ValueSQLVALUE
' End Get
' End Property
' ''' <summary>
' ''' Parametername für die SQL-Zuweisung (z.B. @Bezeichnung)
' ''' </summary>
' Public ReadOnly Property Scalarvariable() As String
' Get
' Return ScalarvariablenameIntern
' End Get
' End Property
' ''' <summary>
' ''' True, wenn es sich um einen Primärschlüssel handelt
' ''' </summary>
' Public ReadOnly Property isPrimaryParam() As Boolean
' Get
' Return primaryParam
' End Get
' End Property
' ''' <summary>
' ''' True, wenn nur für Lade-Operationen verwenden
' ''' </summary>
' Public ReadOnly Property isOnlyForLoad() As Boolean
' Get
' Return onlyForLoad
' End Get
' End Property
' ''' <summary>
' ''' True, wenn nur für Speicher-Operationen verwenden
' ''' </summary>
' Public ReadOnly Property isOnlyForSave() As Boolean
' Get
' Return onlyForSave
' End Get
' End Property
'End Class
Public Class SQLVariable
Private TextSQLName As String

View File

@@ -24,6 +24,7 @@ Public Class cZollArtikel
Property zollArt_Besondere_Maßeinheit_Qualifikator As Object = Nothing
Property zollArt_Gewicht As Object = Nothing
Property zollArt_Menge As Object = Nothing
Property zollArt_Ursprungsland As Object = Nothing
Property Erfassungsdatum As Object = Nothing
Property Aenderungsdatum As Object = Nothing
Property Sachbearbeiter As Object = Nothing
@@ -67,6 +68,7 @@ Public Class cZollArtikel
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Besondere_Maßeinheit_Qualifikator", zollArt_Besondere_Maßeinheit_Qualifikator))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Gewicht", zollArt_Gewicht))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Menge", zollArt_Menge))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Ursprungsland", zollArt_Ursprungsland))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Erfassungsdatum", Erfassungsdatum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Aenderungsdatum", Aenderungsdatum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", Sachbearbeiter))
@@ -81,7 +83,7 @@ Public Class cZollArtikel
Public Function SAVE(Optional errHinweis = "") As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblZollArtikel WHERE zollArt_id=@zollArt_id) " &
Dim sqlstr = " BEGIN TRAN If EXISTS(Select * FROM tblZollArtikel WHERE zollArt_id=@zollArt_id) " &
" BEGIN " & getUpdateCmd() & " End " &
" Else " &
" BEGIN " & getInsertCmd() & " End " &
@@ -170,4 +172,32 @@ Public Class cZollArtikel
Dim sqlstr = " DELETE FROM tblZollArtikel WHERE zollArt_id=" & id
Return SQL.doSQL(sqlstr, "FMZOLL")
End Function
Public Shared Function GetListByKundenNr(kdnr As Integer) As List(Of cZollArtikel)
Dim result As New List(Of cZollArtikel)
Dim SQL As New SQL
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblZollArtikel WHERE KundenNr = @kdnr", conn)
cmd.Parameters.AddWithValue("@kdnr", kdnr)
Using dr = cmd.ExecuteReader()
While dr.Read()
Dim item As New cZollArtikel()
For Each prop In GetType(cZollArtikel).GetProperties()
prop.SetValue(item, dr(prop.Name))
Next
item.hasEntry = True
result.Add(item)
End While
End Using
End Using
End Using
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & MethodBase.GetCurrentMethod.Name & "'" & vbNewLine &
ex.Message & vbNewLine & ex.StackTrace)
End Try
Return result
End Function
End Class