Files
SDL/SDL/mdm/usrCntlLkwListe.vb
2019-09-10 13:51:31 +02:00

400 lines
17 KiB
VB.net

Imports System.Data.SqlClient
Public Class usrCntlLkwListe
Dim kundenSQL As New kundenSQL
Private bindingSDL As New BindingSource
Private dataAdapterLKW As New SqlDataAdapter
Dim SQL As New SQL
Dim FUNC As New cProgramFunctions
Dim bindingString As String
Dim aktbtn As String = ""
Dim dgvInitWait As Boolean = False
Sub init()
pnlFilter.AutoScroll = False
Me.dgvLkw.DataSource = Me.bindingSDL
newBinding("SELECT KundenNr, KfzKennzeichen, Nationalität, Baujahr, Verkauft,KZAenderung, Abgemeldet, KzMiete , KzLeasing,[KzFinanzierungBank] , Vermerk, Erfassungsdatum, Änderungsdatum, Sachbearbeiter FROM LKW WHERE 1=1 ")
End Sub
Private Sub usrCntlVERAGCard_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' btnFilter.Left = Panel4.Width - btnFilter.Width
init()
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_Leistungen_bearbeiten", Me.FindForm) Then
FlatButton1.Enabled = False
FlatButton2.Enabled = False
Button14.Enabled = False
End If
' Panel3.Height = Me.Height / 2 + 300
End Sub
Private Sub dgvLkw_KeyDown(sender As Object, e As KeyEventArgs) Handles dgvLkw.KeyDown
If e.KeyCode = Keys.Up Or e.KeyCode = Keys.Down Then
dgvLKW_SelectionChanged(dgvLkw, New EventArgs)
End If
End Sub
Private Sub dgvLKW_SelectionChanged(sender As Object, e As EventArgs) Handles dgvLkw.SelectionChanged ', dgvLKW.CellContentClick
If dgvLkw.SelectedCells.Count > 0 AndAlso Not dgvLkw.selectedrowS(0).Cells(1).Value Is DBNull.Value Then
Dim kd As cKunden = kundenSQL.getKundeByKdNr(dgvLkw.selectedrowS(0).Cells(0).Value)
lblFirma.Text = kd.Kurzname
' Panel3.Controls.Clear()
Dim usrCntlLKW As usrCntlLKW
If Panel3.Controls.Count > 0 Then
usrCntlLKW = Panel3.Controls(0)
Else
usrCntlLKW = New usrCntlLKW
AddHandler usrCntlLKW.LKWChanged, Sub(kdNr, newKfz, SDLNr, History)
dgvLKW_SelectionChanged(dgvLkw, New EventArgs)
Exit Sub
MsgBox("!!")
init()
dgvLkw.ClearSelection()
For Each r As DataGridViewRow In dgvLkw.Rows
If r.Cells("KfzKennzeichen").Value = newKfz Then
r.Selected = True
Exit For
End If
Next
End Sub
AddHandler usrCntlLKW.btnPrevLKW.Click, AddressOf prevLKW
AddHandler usrCntlLKW.btnNextLKW.Click, AddressOf nextLKW
Panel3.Controls.Add(usrCntlLKW)
usrCntlLKW.Dock = DockStyle.Fill
End If
Dim nat = ""
Try : nat = dgvLkw.selectedrowS(0).Cells(2).Value
Catch : End Try
usrCntlLKW.init(dgvLkw.SelectedRows(0).Cells(0).Value, dgvLkw.SelectedRows(0).Cells(1).Value, nat, FUNC.checkDbNullStr(dgvLkw.SelectedRows(0).Cells(7).Value), FUNC.checkDbNullStr(dgvLkw.SelectedRows(0).Cells(8).Value), FUNC.checkDbNullStr(dgvLkw.SelectedRows(0).Cells(9).Value))
End If
End Sub
Sub nextLKW(sender As Object, e As EventArgs)
Dim i As Integer = dgvLkw.selectedrowS(0).Index
' MsgBox(i)
If (i + 1 < dgvLkw.RowCount) Then
'dgvLKW.ClearSelection() 'dgvLKW.Rows(i + 1).Selected = True
' dgvLKW.Rows(i + 1).Selected = True
dgvLkw.CurrentCell = dgvLkw.Item(1, i + 1)
dgvLkw.Rows(i + 1).Selected = True
End If
End Sub
Sub prevLKW(sender As Object, e As EventArgs)
Dim i As Integer = dgvLkw.selectedrowS(0).Index
' MsgBox(i)
If (i > 0) Then
' dgvLKW.Rows(i - 1).Selected = True
'dgvLKW.Rows(i).Selected = False
dgvLkw.CurrentCell = dgvLkw.Item(1, i - 1)
dgvLkw.Rows(i - 1).Selected = True
End If
End Sub
Sub newBinding(ByVal sql As String)
dgvInitWait = True
' bindingSDL = Nothing
dgvLkw.Columns.Clear()
txtchanged = True
clearFilter()
setBindingstring(sql)
initSDLBinding()
initAllg()
initFilter()
txtchanged = False
dgvInitWait = False
If dgvLkw.RowCount > 0 Then dgvLkw.Rows(0).Cells(0).Selected = True
dgvSDL_SelectionChanged(dgvLkw, New EventArgs)
End Sub
Private Sub initSDLBinding()
dgvInitWait = True
Dim sqlstr As String = bindingString
' dgvLKW.DataSource = bindingSDL
Dim d As New SqlDataAdapter()
Try
Dim connectionString As String = cSqlDb.GetSDLConnectionString
Dim filter As String = getFilter()
If filter <> "" Then sqlstr &= " AND " & filter
Me.dataAdapterLKW = New SqlDataAdapter(sqlstr, connectionString)
Catch ex As SqlException
MessageBox.Show("Der Connection-String kann nicht verarbeitet werden. Wenden Sie sich an den Programmbetreuer.")
End Try
Dim commandBuilder As New SqlCommandBuilder(Me.dataAdapterLKW)
Dim table As New DataTable()
Me.dataAdapterLKW.Fill(table)
' table.Columns("KundenNr").DefaultValue = kdNr
table.Locale = System.Globalization.CultureInfo.InvariantCulture
'bindingSDL.Clear()
dgvLkw.DataBindings.Clear()
bindingSDL.DataSource = table
dgvInitWait = False
End Sub
Sub initFilter()
dgvInitWait = True
Dim left_value As Integer = 40 - dgvLkw.HorizontalScrollingOffset
pnlFilter.Controls.Clear()
Dim l As New Label
l.Left = left_value - 38 : l.Top = 12
l.Width = 36 : l.Text = "Filter:"
pnlFilter.Controls.Add(l)
If dgvLkw.Rows.Count > 0 Then
For i As Integer = 0 To dgvLkw.ColumnCount - 1 Step 1
Dim c As DataGridViewColumn = dgvLkw.Columns(i)
If c.Visible Then '
Try
If c.ValueType.Name = "Boolean" Then
Dim t As New CheckBox
t.Left = left_value
t.Top = 10
t.CheckAlign = ContentAlignment.MiddleCenter
t.ThreeState = True
t.CheckState = CheckState.Indeterminate
t.Name = "cbxSrch_" & c.Name
AddHandler t.CheckStateChanged, AddressOf initSearch
t.Width = c.Width
pnlFilter.Controls.Add(t)
End If
If c.ValueType.Name = "String" Or c.ValueType.Name = "Int32" Or c.ValueType.Name = "Decimal" Then
Dim t As New TextBox
t.Left = left_value
t.Top = 10
t.Name = "txtSrch_" & c.Name
' AddHandler t.TextChanged, AddressOf initSearch
AddHandler t.KeyDown, Sub(send As Object, ev As KeyEventArgs)
If ev.KeyCode = Keys.Return Or ev.KeyCode = Keys.Tab Then ev.SuppressKeyPress = True : initSearch(send, New EventArgs)
End Sub
t.Width = c.Width
pnlFilter.Controls.Add(t)
End If
If c.ValueType.Name = "DateTime" Then
Dim t As New TextBox
t.Left = left_value
t.Top = 10
t.Name = "datSrch_" & c.Name
' AddHandler t.TextChanged, AddressOf initSearch
AddHandler t.KeyDown, Sub(send As Object, ev As KeyEventArgs)
If ev.KeyCode = Keys.Return Or ev.KeyCode = Keys.Tab Then ev.SuppressKeyPress = True : initSearch(send, New EventArgs)
End Sub
t.Width = c.Width
pnlFilter.Controls.Add(t)
End If
left_value += c.Width
Catch ex As Exception
End Try
End If
Next
End If
dgvInitWait = False
End Sub
Dim txtchanged As Boolean = False
Sub initSearch(sender As Object, e As EventArgs)
txtchanged = True
initSDLBinding()
initAllg()
txtchanged = False
Try
If dgvLkw.RowCount > 0 Then dgvLkw.Rows(0).Cells(0).Selected = True
dgvSDL_SelectionChanged(dgvLkw, New EventArgs)
Catch ex As Exception
End Try
End Sub
Function getFilter() As String
Dim filter As String = ""
Dim andstr As String = ""
If pnlFilter.HasChildren Then
For Each c In pnlFilter.Controls
If c.GetType.Name = "TextBox" Then
Try
Dim t As TextBox = DirectCast(c, TextBox)
If t.Text <> "" Then
If t.Name.Contains("txtSrch_") Then
filter &= andstr & " [" & t.Name.Replace("txtSrch_", "") & "] LIKE '%" & t.Text & "%' "
andstr = " AND "
End If
If t.Name.Contains("datSrch_") AndAlso t.Text.Length = 10 Then
filter &= andstr & " ( [" & t.Name.Replace("datSrch_", "") & "] BETWEEN '" & t.Text & "' AND '" & t.Text & "' ) "
andstr = " AND "
End If
End If
Catch ex As Exception
End Try
ElseIf c.GetType.Name = "CheckBox" Then
Try
Dim t As CheckBox = DirectCast(c, CheckBox)
If Not t.CheckState = CheckState.Indeterminate Then
filter &= andstr & " [" & t.Name.Replace("cbxSrch_", "") & "] = '" & t.CheckState & "' "
andstr = " AND "
End If
Catch ex As Exception
End Try
End If
Next
' Me.bindingSDL = New BindingSource
' Me.dgvSDL.DataSource = Me.bindingSDL
End If
Return filter
End Function
Sub clearFilter()
If pnlFilter.HasChildren Then
pnlFilter.Controls.Clear()
End If
End Sub
Private Sub dgvSDL_ColumnWidthChanged(sender As Object, e As DataGridViewColumnEventArgs) Handles dgvLkw.ColumnWidthChanged
If Not txtchanged Then initFilter()
End Sub
Sub setBindingstring(ByVal b As String)
bindingString = b
End Sub
Sub initAllg()
With dgvLkw
.RowTemplate.Height = 20
.AllowUserToOrderColumns = False
.AllowUserToResizeRows = False
.Columns("Vermerk").MinimumWidth = 150
.Columns("Erfassungsdatum").Width = 150
.Columns("Änderungsdatum").Width = 150
.Columns("Sachbearbeiter").Width = 150
.Columns("KundenNr").Width = 150
.Columns("Erfassungsdatum").ReadOnly = True
.Columns("Änderungsdatum").ReadOnly = True
.Columns("Sachbearbeiter").ReadOnly = True
.Columns("Vermerk").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("KfzKennzeichen").AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
.Columns("Vermerk").Width = 250
.Columns("Verkauft").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns("KZAenderung").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns("KzMiete").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns("KzMiete").HeaderText = "Miete"
.Columns("KzLeasing").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns("KzLeasing").HeaderText = "Leasing"
.Columns("KzFinanzierungBank").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns("KzFinanzierungBank").HeaderText = "Finanz.Bank"
.Columns("Abgemeldet").Visible = False
'.Columns("Abgemeldet").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
End With
End Sub
Private Sub dgvLKW_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles dgvLkw.CellValueChanged
btnUpdate.Enabled = True
End Sub
Private Sub dgvSDL_SelectionChanged(sender As Object, e As EventArgs) Handles dgvLkw.SelectionChanged
End Sub
Private Sub btnUpdate2_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
Try
Me.dataAdapterLKW.Update(CType(Me.bindingSDL.DataSource, DataTable))
sender.Enabled = False
Catch ex As Exception
MsgBox("Es ist ein Fehler aufgetreten: " & ex.Message)
End Try
End Sub
Private Sub lblFirma_Click(sender As Object, e As EventArgs) Handles lblFirma.Click
If dgvLkw.SelectedCells.Count > 0 Then
If dgvLkw.selectedrowS(0).Cells(0).Value > 0 Then
cProgramFunctions.openKundenblatt(dgvLkw.selectedrowS(0).Cells(0).Value, Me.FindForm, True)
'Dim pf As New cProgramFunctions
'pf.openKundenblatt(dgvLkw.selectedrowS(0).Cells(0).Value)
End If
End If
End Sub
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
cProgramFunctions.genExcelFromDGV(dgvLkw, True)
End Sub
Private Sub dgvLKW_RowHeaderMouseDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvLkw.CellDoubleClick
Dim frmGrayOut = cProgramFunctions.grayoutForm(Me)
Dim l As New frmLKWDetails(dgvLkw.Rows(e.RowIndex).Cells("KundenNr").Value, dgvLkw.Rows(e.RowIndex).Cells("KfzKennzeichen").Value)
If l.ShowDialog(frmGrayOut) = DialogResult.OK Then
initSearch(New Object, New EventArgs)
End If
frmGrayOut.Close()
End Sub
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_Leistungen_bearbeiten", Me.FindForm) Then
MsgBox("Keine Berechtigung!")
Exit Sub
End If
Dim frmGrayOut = cProgramFunctions.grayoutForm(Me)
Dim l As New frmLKWDetails(-1, "", True)
If l.ShowDialog(frmGrayOut) = DialogResult.OK Then
initSearch(New Object, New EventArgs)
End If
frmGrayOut.Close()
End Sub
Private Sub FlatButton2_Click_1(sender As Object, e As EventArgs) Handles FlatButton2.Click
If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_Leistungen_bearbeiten", Me.FindForm) Then
MsgBox("Keine Berechtigung!")
Exit Sub
End If
If dgvLkw.SelectedRows.Count > 20 Then MsgBox("Es können nicht mehr als 20 Zeilen gelöscht werden!") : Exit Sub
If dgvLkw.SelectedRows.Count = 0 Then Exit Sub
Dim txt As String = "Möchten Sie den Eintrag / die Einträge wirklich löschen?" & vbNewLine & vbNewLine
For Each r As DataGridViewRow In dgvLkw.SelectedRows
txt &= r.Cells("KfzKennzeichen").Value & vbNewLine
Next
If vbYes = MsgBox(txt, vbYesNoCancel) Then
For Each r As DataGridViewRow In dgvLkw.SelectedRows
Dim kdTMP = r.Cells("KundenNr").Value
Dim kfzKzTMP = r.Cells("KfzKennzeichen").Value
SQL.doSQL("DELETE TOP (1) FROM LKW WHERE KundenNr='" & kdTMP & "' AND KfzKennzeichen='" & kfzKzTMP & "'", "SDL", True)
SQL.doSQL("DELETE FROM SDL WHERE KundenNr='" & kdTMP & "' AND KfzKennzeichen='" & kfzKzTMP & "' and SDLNr <> '501' ", "SDL", True)
usrCntlSDLLeistungVERAGCard.clearAllVeragCard(kdTMP, kfzKzTMP)
' SQL.doSQL("UPDATE FROM SDL WHERE KundenNr='" & kdTMP & "' AND KfzKennzeichen='" & kfzKzTMP & "' and SDLNr <> '501' ", "SDL", True)
'SQL.doSQL("UPDATE [Kartenpool] SET [KundenNr]=NULL, [KfzKennzeichen]=NULL, [Fahrer]=NULL, [Datum]=NULL, [Kaution]=NULL, [BelegNr]=NULL, [Ersatzkarte]=NULL, [Gesperrt]=0, [Defekt]=0, [Verloren]=0, [Gestohlen]=0, [Vermerk]='', [Änderungsdatum]='" & Now & "', [Sachbearbeiter]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE KundenNr='" & kdTMP & "' AND KfzKennzeichen='" & kfzKzTMP & "'", "SDL", True)
Next
initSearch(New Object, New EventArgs)
End If 'DEL
End Sub
End Class