Imports System.Reflection Public Class cTrips Dim vpasql As New VERAG_PROG_ALLGEMEIN.SQL Property tripNr As String = "" Property trip_Aufträge As DataTable = Nothing '() As List(Of String) Property trip_Transporter As String = "" Property trip_FilNr As Integer = Nothing Property trip_Datum As Date Property trip_start As String = "" Property trip_end As String = "" Dim LoadString As String = "SELECT * FROM dbo.tblTrips WHERE trip_tripNr = '{0}'" Dim LoadAufträgeString As String = "SELECT atr_id, atr_frachtpos, atr_FilialenNr, atr_TransportauftragArt, atr_frachtf_firma, atr_frachtfAb_firma, case when atr_TransportauftragArt = 'NACH' then atr_frachtfab_firma when atr_TransportauftragArt = 'VOR' then atr_frachtf_firma when atr_TransportauftragArt = '' and atr_AuftragsArt = 'Transport' then '--na--' when atr_AuftragsArt = 'Handling' then '-' end as Frächter, atr_ladest_firma, atr_entladest_firma, atr_tripNr, atr_tripStopNr FROM tblAuftraege WHERE atr_tripNr = '{0}' ORDER BY atr_tripStopNr" Dim SaveAufträgeString As String = "UPDATE tblAuftraege SET atr_tripStopNr = '{0}' WHERE atr_tripNr = '{1}' AND atr_frachtpos = '{2}'" Dim TripsUpdateString As String = "UPDATE tblTrips SET {0} WHERE trip_tripNr = '{1}'" Function getparameterlist() As List(Of SQLVariable) Dim list As New List(Of SQLVariable) list.Add(New SQLVariable("trip_tripNr", tripNr)) 'Aufträge sind nicht Teil des Tables list.Add(New SQLVariable("trip_Transporter", trip_Transporter)) list.Add(New SQLVariable("trip_FilNr", trip_FilNr)) list.Add(New SQLVariable("trip_Datum", trip_Datum)) list.Add(New SQLVariable("trip_start", trip_start)) list.Add(New SQLVariable("trip_end", trip_end)) Return list End Function Function LoadTrip(Optional ByVal overrideTripNr As Integer = -1) Dim TripNummer As New Integer If overrideTripNr = -1 Then TripNummer = Me.tripNr Else TripNummer = overrideTripNr End If Dim dt As New DataTable dt = vpasql.loadDgvBySql(String.Format(LoadString, TripNummer), "DISPO") If dt.Rows.Count > 0 Then For Each c As DataColumn In dt.Columns Dim propInfo As PropertyInfo = Me.GetType.GetProperty(c.ColumnName) If propInfo IsNot Nothing Then If Not IsDBNull(c.Table.Rows(0).Item(c)) Then propInfo.SetValue(Me, c.Table.Rows(0).Item(c)) End If End If Next Else Return False Exit Function End If LoadTripAuftraege() Return True End Function Function SaveTripAsNew() tripNr = CreateNewTripNr() LoadTripAuftraege() getStartAndEnd() Dim Spalten As String = "" Dim Werte As String = "" Dim List As List(Of SQLVariable) = getparameterlist() For Each i In List Spalten &= i.SQLText & "," Werte &= "'" & i.SQLValue.replace("'", "") & "'," Next Spalten = Spalten.Substring(0, Spalten.Length - 1) Werte = Werte.Substring(0, Werte.Length - 1) Dim sqlstring As String = "INSERT INTO dbo.tblTrips (" & Spalten & ") VALUES (" & Werte & ")" vpasql.doSQLVarList(sqlstring, "DISPO") End Function Function CreateNewTripNr() Dim dt As New DataTable dt = vpasql.loadDgvBySql("SELECT MAX(trip_tripNr) as maxtrip from dbo.tblTrips", "DISPO") Dim maxtrip As Integer = vpasql.VarToDbl(dt.Rows(0).Item(0)) If Not maxtrip = -1 Then Return maxtrip + 1 tripNr = maxtrip + 1 Else Return 0 tripNr = 0 End If End Function Function CreateNextStop() Dim dt As New DataTable dt = vpasql.loadDgvBySql("SELECT MAX(atr_tripStopNr) as maxtripStopNr from dbo.tblAuftraege WHERE atr_tripNr = '" & Me.tripNr & "'", "DISPO") Dim maxtripstop As Integer = vpasql.VarToDbl(dt.Rows(0).Item(0)) If Not maxtripstop = -1 Then Return maxtripstop + 1 Else Return 0 End If End Function Function DeleteTrip() If MsgBox("Trip komplett löschen?", MsgBoxStyle.OkCancel, "Trip löschen!") = MsgBoxResult.Cancel Then Exit Function For Each row As DataRow In trip_Aufträge.Rows RemoveAuftragFromTrip(row.Item("atr_ID"), True) Next End Function Function RemoveAuftragFromTrip(ByVal AufID As Integer, Optional ByVal Silent As Boolean = False) LoadTripAuftraege() If trip_Aufträge.Rows.Count = 1 Then If Not Silent Then If MsgBox("Letzer Auftrag des Trips! Trip wird mit Bestätigung ebenfalls gelöscht!", MsgBoxStyle.OkCancel, "Letzter Auftrag!") = MsgBoxResult.Cancel Then Exit Function vpasql.doSQLVarList("delete from tblTrips where trip_tripNr = '" & Me.tripNr & "'", "DISPO") End If Dim sqlstring As String = "update tblAuftraege set atr_tripNr = null, atr_tripStopNr = null where atr_id = '" & AufID & "' " vpasql.doSQLVarList(sqlstring, "DISPO") End Function Function LoadTripAuftraege() trip_Aufträge = vpasql.loadDgvBySql(String.Format(LoadAufträgeString, Me.tripNr), "DISPO") End Function Function SaveTripAuftraege() For Each row As DataRow In trip_Aufträge.Rows vpasql.doSQL(String.Format(SaveAufträgeString, row.Item("atr_tripStopNr").ToString, row.Item("atr_tripNr").ToString, row.Item("atr_frachtpos").ToString), "DISPO") Next getStartAndEnd() update() End Function Function update() Dim UpdateString As String = "" Dim WhereString As String = "" Dim list As List(Of SQLVariable) = getparameterlist() For Each i In list If Not i.SQLText = "trip_tripNr" Then UpdateString &= "[" & i.SQLText & "]='" & i.SQLValue & "'," Next UpdateString = UpdateString.Substring(0, UpdateString.Length - 1) 'wg. ',' vpasql.doSQL(String.Format(TripsUpdateString, UpdateString, tripNr), "DISPO") End Function Function getStartAndEnd() trip_start = trip_Aufträge.Rows(0).Item("atr_ladest_firma").ToString trip_end = trip_Aufträge.Rows(trip_Aufträge.Rows.Count - 1).Item("atr_entladest_firma").ToString 'Select Case trip_Aufträge.Rows(0).Item("atr_TransportauftragArt").ToString ' Case "NACH" ' trip_Transporter = trip_Aufträge.Rows(0).Item("atr_frachtfAb_firma").ToString ' Case "VOR" ' trip_Transporter = trip_Aufträge.Rows(0).Item("atr_frachtf_firma").ToString ' Case Else ' trip_Transporter = "---" 'End Select trip_Transporter = trip_Aufträge.Rows(0).Item("Frächter").ToString End Function End Class 'atr_frachtf_firma, atr_frachtfAb_firma