Imports System.Data.SqlClient Imports System.Reflection Public Class cAdressen Property Auswahl As Object = Nothing Property AdressenNr As Object = Nothing Property Ordnungsbegriff As Object = Nothing Property Name_1 As Object = Nothing Property Name_2 As Object = Nothing Property Postfach As Object = Nothing Property PLZPF As Object = Nothing Property Straße As Object = Nothing Property LandKz As Object = Nothing Property PLZ As Object = Nothing Property Ort As Object = Nothing Property Telefon As Object = Nothing Property Telefax As Object = Nothing Property Mobiltelefon As Object = Nothing Property E_Mail As Object = Nothing Property E_Mail2 As Object = Nothing Property Anrede As Object = Nothing Property Ansprechpartner As Object = Nothing Property UstIdKz As Object = Nothing Property UstIdNr As Object = Nothing Property UstIdGeprüft As Object = Nothing Property BLZ As Object = Nothing Property KTO As Object = Nothing Property Eingegeben_am As Object = Nothing Property Geändert_am As Object = Nothing Property Sachbearbeiter As Object = Nothing Property Rechnungsdruck As Object = Nothing Property Steuernummer As Object = Nothing Property IDSKundenNr As Object = Nothing Property WölflKundenNr As Object = Nothing Property MSEKundenNr As Object = Nothing Property MSEExportCSV As Object = Nothing Property TELEPASS_Kd_Nr As Object = Nothing Property ASFINAGExportCSV As Object = Nothing Property UStV_GVAnfDat As Object = Nothing Property UStV_GVAusDat As Object = Nothing Property ExportMautberichtCSV As Object = Nothing Property UTAKundenNr As Object = Nothing Property UTAExportCSV As Object = Nothing 'Property SSMA_TimeStamp As Object = Nothing Property MWSTVorauszahlung As Object = Nothing Property PLOSEKundenNr As Object = Nothing Public hasEntry = False Shared SQL As New SQL Sub New(AdressenNr) Me.AdressenNr = AdressenNr If AdressenNr <= 0 Then INIT_NEWKD_DATA() Else LOAD() End If End Sub Public Shared Function getHoechsteKdNr(NrKr_von As Integer, NrKr_bis As Integer) As Integer Try Using conn As SqlConnection = cSqlDb.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("select isnull(min([AdressenNr]) +1," & NrKr_von & ") as AdressenNr from [Adressen] a INNER JOIN Kunden ON Kundennr=adressennr where AdressenNr between '" & NrKr_von & "' AND '" & NrKr_bis & "' AND not exists ( select * from [Adressen] b where AdressenNr between '" & NrKr_von & "' AND '" & NrKr_bis & "' and a.[AdressenNr] +1 = b.[AdressenNr]) AND KundenNr NOT IN (([AdressenNr]) +1) ", conn) 'Using cmd As New SqlCommand("SELECT isnull(max([AdressenNr])," & NrKr_von & ") as AdressenNr FROM Adressen WHERE AdressenNr BETWEEN '" & NrKr_von & "' AND '" & NrKr_bis & "' ", conn) Dim dr = cmd.ExecuteReader() If dr.HasRows Then dr.Read() If IsNumeric(dr.Item("AdressenNr")) Then Return (CInt(dr.Item("AdressenNr"))) 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) End Try Return -1 End Function 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("Mandant", Mandant)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Auswahl", Auswahl)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AdressenNr", AdressenNr, , True)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Ordnungsbegriff", Ordnungsbegriff)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Name 1", Name_1, "Name_1")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Name 2", Name_2, "Name_2")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Postfach", Postfach)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PLZPF", PLZPF)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Straße", Straße)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LandKz", LandKz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PLZ", PLZ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Ort", Ort)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Telefon", Telefon)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Telefax", Telefax)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Mobiltelefon", Mobiltelefon)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("E-Mail", E_Mail, "E_Mail")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("E-Mail2", E_Mail2, "E_Mail2")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anrede", Anrede)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Ansprechpartner", Ansprechpartner)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UstIdKz", UstIdKz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UstIdNr", UstIdNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UstIdGeprüft", UstIdGeprüft)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BLZ", BLZ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KTO", KTO)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Eingegeben am", Eingegeben_am, "Eingegeben_am")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Geändert am", Geändert_am, "Geändert_am")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", Sachbearbeiter)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsdruck", Rechnungsdruck)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuernummer", Steuernummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("IDSKundenNr", IDSKundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("WölflKundenNr", WölflKundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("MSEKundenNr", MSEKundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("MSEExportCSV", MSEExportCSV)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("TELEPASS-Kd-Nr", TELEPASS_Kd_Nr, "TELEPASS_Kd_Nr")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ASFINAGExportCSV", ASFINAGExportCSV)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStV_GVAnfDat", UStV_GVAnfDat)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStV_GVAusDat", UStV_GVAusDat)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ExportMautberichtCSV", ExportMautberichtCSV)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UTAKundenNr", UTAKundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UTAExportCSV", UTAExportCSV)) ' list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SSMA_TimeStamp", SSMA_TimeStamp)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("MWSTVorauszahlung", MWSTVorauszahlung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PLOSEKundenNr", PLOSEKundenNr)) Return list End Function Sub INIT_NEWKD_DATA() If Me.Sachbearbeiter Is Nothing Then Me.Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME Me.Eingegeben_am = Now.ToShortDateString Me.Auswahl = "A" Me.Rechnungsdruck = 0 End Sub Function VALID(ByRef ERROR_TXT) As Boolean If If(Ordnungsbegriff, "") = "" Then ERROR_TXT = "Bitte geben Sie einen Ordnungsbegriff ein!" : Return False If If(Name_1, "") = "" Then ERROR_TXT = "Bitte geben Sie den Firmenwortlaut ein!" : Return False If If(LandKz, "") = "" Then ERROR_TXT = "Bitte geben Sie das Land an!" : Return False If If(Ort, "") = "" Then ERROR_TXT = "Bitte geben Sie den Ort an!" : Return False If If(PLZ, "") = "" Then ERROR_TXT = "Bitte geben Sie die PLZ an!" : Return False If If(Straße, "") = "" Then ERROR_TXT = "Bitte geben Sie die Straße an!" : Return False Return True End Function Public Function SAVE(Optional newFlag = False) As Boolean 'obj As Object, tablename As String, where As String) As Boolean If newFlag Then INIT_NEWKD_DATA() If AdressenNr <= 0 Then MsgBox("Fehler: KundenNr <= 0!") Return False End If Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM Adressen WHERE AdressenNr=@AdressenNr) " & " BEGIN " & getUpdateCmd() & " END " & " Else " & " BEGIN " & getInsertCmd() & " END " & " commit tran " 'MsgBox(sqlstr) Dim id = SQL.doSQLVarListID(AdressenNr, sqlstr, "FMZOLL", , list,,, False, 2) If id = -2 Then id = SQL.doSQLVarListID(AdressenNr, sqlstr, "FMZOLL", , list,,, False, 2) '2.Versuch --> Oft Timeout wg.Fmzoll If id = -2 Then id = SQL.doSQLVarListID(AdressenNr, sqlstr, "FMZOLL", , list) '3.Versuch --> Oft Timeout wg.Fmzoll ' Dim id = SQL.doSQLVarListID(, sqlstr, "FMZOLL", , list) If id > 0 Then AdressenNr = id 'Sonst wird beim Speichern mit Fehler -1 in die AdressenNr übergeben Return id > 0 End Function Public Sub LOAD() Dim test = "" Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM Adressen WHERE AdressenNr=@AdressenNr ", conn) cmd.Parameters.AddWithValue("@AdressenNr", AdressenNr) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each l In getParameterList() ' Me.GetType.GetProperty(l.Scalarvariable) = dr.Item(l.Text) Dim propInfo As PropertyInfo = Me.GetType.GetProperty(l.Scalarvariable) ' MsgBox(l.Text) ' MsgBox(propInfo.PropertyType.ToString) ' propInfo.SetValue(GetType(Object), l.Text) 'propInfo.SetValue(Me, l.Text) ' Try test = l.Text If dr.Item(l.Text) Is DBNull.Value Then propInfo.SetValue(Me, Nothing) Else propInfo.SetValue(Me, dr.Item(l.Text)) End If ' Catch ex As Exception ' End Try ' Me.GetType.GetProperty(l.Scalarvariable).setSetValue(GetType(Object), l.Text) 'If propInfo IsNot Nothing Then 'propInfo.SetValue(l.Scalarvariable, l.Text) ' End If Next Me.hasEntry = True End If dr.Close() End Using End Using 'Return Nothing Catch ex As Exception MsgBox(test & "Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try ' Return Nothing End Sub Public Function doesOrdnungsbegriffExist() As Boolean Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT count(*) FROM Adressen WHERE Ordnungsbegriff=@Ordnungsbegriff ", conn) cmd.Parameters.AddWithValue("@Ordnungsbegriff", Ordnungsbegriff) Dim dr = cmd.ExecuteReader() If dr.Read Then Return dr.Item(0) > 0 End If dr.Close() End Using End Using 'Return Nothing 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 False End Function Public Function getUpdateCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," 'Text.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE [Adressen] SET " & str & " WHERE AdressenNr=@AdressenNr ") 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 Shared Function getNewAdressenNr752000() As Integer Return (New SQL).getValueTxtBySql("SELECT isnull(MAX (Adressennr),752000)+1 FROM [VERAG].[dbo].[Adressen] where [AdressenNr]>752000 and [AdressenNr]<800000", "FMZOLL") 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.isonlyForLoad Then 'And (Not i.isPrimaryParam OrElse i.Value > 0) Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," 'Text.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO Adressen (" & 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 End Class