Imports System.Data.SqlClient Public Class cAllgemein Public Shared FIRMA As String Public Shared NIEDERLASSUNG As String 'SUB, WAI, ... Public Shared ABTEILUNG As String 'QS ZOLL ... Public Shared ERR_OP_GLOBAL As String = ERROR_OP.SHOW Public Shared BÜRO As String Public Shared dpi As Integer Public Shared TESTSYSTEM As Boolean = True Public Shared PROGNAME = "" Public Shared PROGID As Integer Public Shared PROGVERSION As String = "" Public Shared USRNAME As String 'Public Shared USRBER As Integer Public Shared USRID As Integer Public Shared USR_VNAME As String Public Shared USR_NNAME As String Public Shared USRKURZNAME As String Public Shared USR_HrFrNAME As String Public Shared FIRMA_ID As Integer Public Shared FIRMA_NAME As String Public Shared AUTO_ABF_NR As Boolean = True Public Shared BENUTZER_BERECHTIGUNGS_GRUPPEN As cBerechtigungenBenutzerGruppenZuordnung_List = Nothing Public Shared PARAMS As cParameterList = Nothing Public Shared SESSION As New cSession Shared SQL As New SQL Public Shared MITARBEITER As cMitarbeiter Public Shared Sub LOAD_DATA() MITARBEITER = New cMitarbeiter If MITARBEITER.LOAD(USRID) Then USR_NNAME = MITARBEITER.mit_nname USR_VNAME = MITARBEITER.mit_vname USR_HrFrNAME = "" Select Case MITARBEITER.mit_geschlecht Case "m" : USR_HrFrNAME = "Herr " Case "w" : USR_HrFrNAME = "Frau " End Select USR_HrFrNAME &= MITARBEITER.mit_nname If FIRMA = "" Then FIRMA = If(MITARBEITER.mit_firma = "BEIDE", "VERAG", MITARBEITER.mit_firma) USRNAME = (MITARBEITER.mit_vname & " " & MITARBEITER.mit_nname) If NIEDERLASSUNG = "" Then NIEDERLASSUNG = MITARBEITER.mit_niederlassung If ABTEILUNG = "" Then ABTEILUNG = MITARBEITER.mit_abteilung Else MITARBEITER = Nothing End If LOAD_PARAM() End Sub Public Shared Sub LOAD_BER() BENUTZER_BERECHTIGUNGS_GRUPPEN = New cBerechtigungenBenutzerGruppenZuordnung_List(USRID) End Sub Public Shared Sub LOAD_PARAM() PARAMS = New cParameterList(PROGID, FIRMA) End Sub Public Shared Function getMaxPosNrIncrement(FilialeNr As Integer, year As Integer) As Integer Dim cnt = 0 Dim returnValue = -1 Dim newMaxwert = CInt(year.ToString.Substring(2, 2) & "000000") '16000000 Do Dim conn As SqlConnection = VERAG_PROG_ALLGEMEIN.SQL.GetNewOpenConnectionFMZOLL Dim sql As String = " begin tran" & " if exists (select * from tblPosNr with (updlock,serializable) WHERE FilialeNr = @FilialeNr AND Jahr = @Jahr) " & " begin " & " UPDATE tblPosNr " & " SET wert=(select MAX(wert) FROM tblPosNr WHERE FilialeNr = @FilialeNr AND Jahr = @Jahr)+1 " & " WHERE FilialeNr = @FilialeNr AND Jahr = @Jahr " & " End " & " Else " & " begin " & " INSERT INTO tblPosNr " & " (wert,FilialeNr,Jahr) " & " VALUES(@newMaxwert, @FilialeNr,@Jahr) " & " End " & " commit tran " & " SELECT isnull(wert,-1) FROM tblPosNr WHERE FilialeNr = @FilialeNr AND Jahr = @Jahr" Dim dr As SqlDataReader Using cmd As New SqlCommand(sql, conn) cmd.Parameters.AddWithValue("@FilialeNr", FilialeNr) cmd.Parameters.AddWithValue("@Jahr", year) cmd.Parameters.AddWithValue("@newMaxwert", newMaxwert) Try dr = cmd.ExecuteReader() If dr.Read Then returnValue = CInt(dr.Item(0)) Catch ex As Exception MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Fehler mit der Datenbankverbindung:" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Datenbankfehler") Finally dr.Close() End Try End Using cnt += 1 Loop While (SpedBuchExists(FilialeNr, returnValue) And cnt < 100000) ' conn.Close() Return returnValue End Function Public Shared Function SpedBuchExists(FilialenNr As Integer, AbfertigungsNr As Integer) As Boolean Return (CInt(SQL.getValueTxtBySql("SELECT count(*) FROM Speditionsbuch WHERE FilialenNr=" & FilialenNr & " AND AbfertigungsNr=" & AbfertigungsNr & " ", "FMZOLL")) > 0) End Function End Class