Imports System.ComponentModel Imports System.IO Imports System.Globalization Imports System.Data.SqlClient Imports System.Reflection Public Class usrcntlFirmen Private DISPO As New cOptionenDAL Public Shared dt As DataTable Public Shared SelectedDGVIndex As Integer Private Sub usrcntlFirmen_Load(sender As Object, e As EventArgs) Handles Me.Load EnableDoubleBuffered(dgvKunden) SplitContainer1.Panel1Collapsed = True btnDetailSuche.Text = ChrW(9660) & ChrW(9660) & ChrW(9660) & "Detailsuche" & ChrW(9660) & ChrW(9660) & ChrW(9660) cboRolle.Items.Clear() cboRolle.Items.Add(New MyListItem("nicht filtern", "-1")) cboRolle.Items.Add(New MyListItem("ohne (-)", "0")) cboRolle.Items.Add(New MyListItem("Auftraggeber", "1")) cboRolle.Items.Add(New MyListItem("Ladestelle", "2")) cboRolle.Items.Add(New MyListItem("Entladestelle", "3")) cboRolle.Items.Add(New MyListItem("Frachtführer", "4")) cboRolle.Items.Add(New MyListItem("Transportunternehmen", "5")) showDGVKunden() End Sub Private Sub initDGVKunden(bindingString As String) Dim sqlstr As String = bindingString ' dgvLKW.DataSource = bindingSDL Dim vpasql As New VERAG_PROG_ALLGEMEIN.SQL dt = vpasql.loadDgvBySql(sqlstr, "DISPO") dgvKunden.DataSource = dt End Sub Public Sub showDGVKunden() Dim where As String = "" Dim search As String = "" Dim start As Long = (DateTime.Now - New DateTime(1970, 1, 1)).TotalMilliseconds Whereinator3000(search, where) With dgvKunden Dim top As String = "" initDGVKunden("SELECT " & top & " kd_id, kd_firma, (kd_str + ' ' + kd_strnr) as strasse, (kd_plz + ' - ' + kd_ort) as ort, kd_land,kd_oez_id FROM tblKunden " & where & " ") 'locZeilen = -1 ' If Not Grid_aktiv Then Exit Sub 'Tabelle Kommt/Geht bereinigen If .RowCount = 0 Then Exit Sub .Sort(.Columns(1), ListSortDirection.Ascending) .RowTemplate.Height = 20 .RowTemplate.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopLeft .AllowUserToAddRows = False .AllowUserToDeleteRows = False .AllowUserToOrderColumns = False .AllowUserToResizeColumns = True .AllowUserToResizeRows = False .RowTemplate.ReadOnly = True .RowHeadersVisible = False .MultiSelect = False .SelectionMode = DataGridViewSelectionMode.FullRowSelect .ReadOnly = True .Columns(0).Visible = False .Columns(1).MinimumWidth = 300 .Columns(1).HeaderText = "Firma" .Columns(1).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill ' .Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(2).Width = 250 .Columns(2).HeaderText = "Straße" .Columns(3).Width = 250 .Columns(3).HeaderText = "Ort" .Columns(4).Width = 150 .Columns(4).HeaderText = "Land" .Columns(5).Visible = False 'initDGVKundenFilter() 'Anzeige der Anzahl gewählter/aller Datensätze lblAnzahl.Text = Format(.RowCount, "#,##0") & " Einträge" If (.RowCount = 100) Then lblAnzahl.Text &= " (Die Suche wurde auf 100 Ergebnisse beschränkt.)" End With lblAnzahl.Refresh() Dim ende As Long = (DateTime.Now - New DateTime(1970, 1, 1)).TotalMilliseconds lblMs.Text = "Ladezeit: " & (ende - start) & " ms" Try If dgvKunden.Rows.Count - 1 >= SelectedDGVIndex Then dgvKunden.Rows(SelectedDGVIndex).Selected = True Catch ex As Exception MsgBox(ex.Message) End Try 'lblMs.Image = Nothing End Sub Public Sub EnableDoubleBuffered(ByVal dgv As DataGridView) Dim dgvType As Type = dgv.[GetType]() Dim pi As PropertyInfo = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance Or BindingFlags.NonPublic) pi.SetValue(dgv, True, Nothing) End Sub Private Sub txtSuche_TextChanged(sender As Object, e As EventArgs) Handles txtSuche.TextChanged showDGVKunden() End Sub Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click txtSuche.Text = "" cboLand.SelectedItem = "-" cboRolle._value = "-1" showDGVKunden() End Sub Private Sub btnNew_Click(sender As Object, e As EventArgs) Handles btnNew.Click frmDetails.rowId = -1 : frmDetails.mainForm = "frmMain" : frmDetails.Show() : AddHandler frmDetails.Disposed, AddressOf meEnabledTrue End Sub Private Sub meEnabledTrue() Me.Enabled = True showDGVKunden() Me.BringToFront() End Sub Private Sub btnChange_Click(sender As Object, e As EventArgs) Handles btnChange.Click SelectedDGVIndex = dgvKunden.CurrentRow.Index Try If frmDetails.Visible Then MsgBox("Ein Kunden-Formular ist bereits geöffnet!", vbCritical, "Fenster geöffnet") frmDetails.BringToFront() Else frmDetails.rowId = dgvKunden.CurrentRow.Cells(0).Value frmDetails.mainForm = "frmMain" frmDetails.Show() AddHandler frmDetails.Disposed, AddressOf meEnabledTrue Me.Enabled = False End If Catch ex As Exception Me.Enabled = True End Try End Sub Private Sub btnDel_Click(sender As Object, e As EventArgs) Handles btnDel.Click Select Case MsgBox("Soll der Eintrag wirklich gelöscht werden?", vbQuestion Or vbYesNo Or vbDefaultButton2, "Löschen?") Case vbYes DISPO.delData(Convert.ToInt32(dgvKunden.CurrentRow.Cells(0).Value)) DISPO.delOeffnungszeiten(Convert.ToInt32(dgvKunden.CurrentRow.Cells(5).Value)) showDGVKunden() Case vbNo End Select End Sub Private Sub dgvKunden_CellDouble(sender As Object, e As DataGridViewCellEventArgs) Handles dgvKunden.CellDoubleClick SelectedDGVIndex = dgvKunden.CurrentRow.Index Try If frmDetails.Visible Then MsgBox("Ein Kunden-Formular ist bereits geöffnet!", vbCritical, "Fenster geöffnet") frmDetails.BringToFront() Else frmDetails.rowId = dgvKunden.CurrentRow.Cells(0).Value frmDetails.mainForm = "frmMain" frmDetails.Show() AddHandler frmDetails.Disposed, AddressOf meEnabledTrue Me.Enabled = False End If Catch ex As Exception Me.Enabled = True End Try End Sub Private Sub btnDetailSuche_Click(sender As Object, e As EventArgs) Handles btnDetailSuche.Click SplitContainer1.Panel1Collapsed = Not SplitContainer1.Panel1Collapsed If SplitContainer1.Panel1Collapsed Then btnDetailSuche.BackColor = Color.White btnDetailSuche.Text = ChrW(9660) & ChrW(9660) & ChrW(9660) & "Detailsuche" & ChrW(9660) & ChrW(9660) & ChrW(9660) Else btnDetailSuche.BackColor = Color.RoyalBlue btnDetailSuche.Text = ChrW(9650) & ChrW(9650) & ChrW(9650) & "Detailsuche" & ChrW(9650) & ChrW(9650) & ChrW(9650) End If End Sub Function Whereinator3000(ByRef search As String, ByRef where As String) If txtSuche.Text <> "" Then search = txtSuche.Text.Replace("'", "") Else search = "%" End If where &= " WHERE (kd_firma LIKE '%" & search & "%' OR (kd_str + ' ' + kd_strnr) LIKE '%" & search & "%' OR (kd_plz + ' - ' + kd_ort) LIKE '%" & search & "%' OR kd_land LIKE '%" & search & "%')" If cboRolle._value IsNot "-1" And cboRolle._value IsNot "" Then where &= " AND kd_rolle = '" & cboRolle._value & "'" End If If cboLand.SelectedItem IsNot "" And cboLand.SelectedItem IsNot "-" And cboLand.SelectedItem IsNot Nothing Then where &= " AND kd_land = '" & cboLand.SelectedItem & "'" End If 'Else ' If cboRolle._value IsNot "-1" And cboRolle._value IsNot "" Then ' where &= " WHERE kd_rolle = '" & cboRolle._value & "'" ' End If 'End If End Function Private Sub cboRolle_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboRolle.SelectedIndexChanged, cboLand.SelectedIndexChanged showDGVKunden() End Sub End Class