Files
AVISO/Aviso/Auswertung/usrctlAuswertung.vb
2020-03-12 14:48:24 +01:00

468 lines
20 KiB
VB.net

Imports VERAG_PROG_ALLGEMEIN
Imports VERAG_PROG_ALLGEMEIN.cMeineFunktionenAVISO
Public Class usrctlAuswertung
Dim SQL As New Statistik
Dim grid_Aktiv As Boolean = False
Dim Firmen As New cFirmenDAL
Dim Auswahl_Standort As String = ""
Private Sub usrctlStatistik_Load(sender As Object, e As EventArgs) Handles Me.Load
txtCntVon.Text = "5"
cboFirma.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
cboGrenzstelle.Text = "ALLE"
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
initFilter()
initStat()
grid_Aktiv = True
showFirmen()
End Sub
Sub initStat()
datStatVon.Format = DateTimePickerFormat.Short
datStatBis.Format = DateTimePickerFormat.Short
cboSrchAuftrFraecht.SelectedIndex = 0
End Sub
Sub initFilter()
'AuswahlCombos mit Daten befüllen
cboFirma.DataSource = Firmen.Anzeigen_cboFirmen("")
cboFirma.DisplayMember = "Firma"
cboFirma.ValueMember = "FirmaID"
'Vorschlagswerte setzen
optKunde.Checked = True
optAlle.Checked = True
' optAnkunft.Checked = frmMain.optAnkunft.Checked
' optErfasst.Checked = frmMain.optErfasst.Checked
' optFreigegeben.Checked = frmMain.optFreigegeben.Checked
' optNichtEingetroffen.Checked = frmMain.optNichtEingetroffen.Checked
dtpAvisoVon.Value = frmHauptfenster.dtpVon.Value
dtpAvisoBis.Value = frmHauptfenster.dtpBis.Value
dtpAnkunftVon.Value = frmHauptfenster.dtpVon.Value
dtpAnkunftBis.Value = frmHauptfenster.dtpBis.Value
dtpFreigabeVon.Value = frmHauptfenster.dtpVon.Value
dtpFreigabeBis.Value = frmHauptfenster.dtpBis.Value
txtMonat.Text = Now.Month.ToString
txtJahr.Text = Now.Year.ToString
optDatumAviso.Checked = True
Select Case frmHauptfenster.lblGrenzstelle.Text
Case "SUB" : optSUB.Checked = True
Case "SBG" : optSBG.Checked = True
Case "NKD" : optNKD.Checked = True
Case "WAI" : optWAI.Checked = True
Case Else : optStandortAlle.Checked = True
End Select
cboFirma.Text = ""
optFirmaBeides.Checked = True
txtStdVon.Text = "0"
txtStdBis.Text = "10"
' If cGlobal.AktiverMitarbeiter.Sicherheitsstufe > 0 Then
'optIntern.Visible = False
' End If
End Sub
Sub showFirmen()
If grid_Aktiv Then
Dim srch As String = cboSrchAuftrFraecht.Text.Replace("Avisierer", "Auftraggeber")
Dim sqlstr As String = "select COUNT(" & srch & ")as cnt, " & srch & ", AVG(Dauer)as av, MIN(Dauer)as minimum,max(Dauer)as maximum from Aviso "
'WHERE
Dim where As String = ""
Dim where_and As String = ""
If txtSearch.Text.Trim <> "" Then where = " " & srch & " LIKE '%" & txtSearch.Text & "%' " : where_and = " AND "
If cbxStatVon.Checked Then where &= where_and & " Datum >= '" & datStatVon.Value.ToShortDateString & "' " : where_and = " AND "
If cbxStatBis.Checked Then where &= where_and & " Datum <= '" & datStatBis.Value.ToShortDateString & "' " : where_and = " AND "
If IsNumeric(txtDauerVon.Text) And txtDauerVon.Text.Trim <> "" Then where &= where_and & " Dauer >= '" & txtDauerVon.Text & "' " : where_and = " AND "
If IsNumeric(txtDauerBis.Text) And txtDauerBis.Text.Trim <> "" Then where &= where_and & " Dauer <= '" & txtDauerBis.Text & "' " : where_and = " AND "
If cboGrenzstelle.Text <> "ALLE" Then where &= where_and & " Grenzstelle = '" & cboGrenzstelle.Text & "' " : where_and = " AND "
If cboFirmaIntern.Text <> "ALLE" Then where &= where_and & " FIRMA = '" & cboFirmaIntern.Text & "' " : where_and = " AND "
If where <> "" Then sqlstr &= "WHERE 1=1 AND ( " & where & " ) " 'Firma='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "'
sqlstr &= " GROUP BY " & srch & " "
Dim having As String = ""
Dim having_and As String = ""
If txtCntVon.Text <> "" Then having = " COUNT(" & srch & ") >= " & txtCntVon.Text & " " : having_and = " AND "
If txtCntBis.Text <> "" Then having &= having_and & " COUNT(" & srch & ") <= " & txtCntBis.Text & " "
If having <> "" Then sqlstr &= " HAVING " & having
sqlstr &= " ORDER BY AV DESC "
DataGridView1.DataSource = SQL.getKunden(sqlstr)
setColumnsFirmen()
End If
End Sub
Sub setColumnsFirmen()
With DataGridView1
.RowTemplate.Height = 20
.RowTemplate.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopLeft
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.AllowUserToOrderColumns = False
.AllowUserToResizeColumns = True
.AllowUserToResizeRows = False
'.RowTemplate.ReadOnly = True
.RowHeadersVisible = False
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.MultiSelect = False
.ReadOnly = True
.Columns(0).Width = 70
.Columns(0).HeaderText = "Frequenz"
.Columns(1).Width = 300
.Columns(2).Width = 150
.Columns(2).HeaderText = "Durchschnittliche Wartezeit (min)"
.Columns(3).Width = 150
.Columns(3).HeaderText = "Schnellste Abfertigung (min)"
.Columns(4).Width = 150
.Columns(4).HeaderText = "Langsamste Abfertigung (min)"
End With
End Sub
Private Sub txtSearch_TextChanged(sender As Object, e As EventArgs) Handles txtSearch.TextChanged, txtCntVon.TextChanged, txtCntBis.TextChanged, txtDauerVon.TextChanged, txtDauerBis.TextChanged
showFirmen()
End Sub
Private Sub frmAuswahl_Aviso_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs)
'Escape händisch abfangen und auf Abbruch-Taste legen
If e.KeyCode = Keys.Escape Then
btnAbbruch.PerformClick()
End If
End Sub
Private Sub btnAbbruch_Click(sender As System.Object, e As System.EventArgs) Handles btnAbbruch.Click
'Fenster schließen
'Me.Close()
End Sub
Private Sub txtFeld_GotFocus(sender As Object, e As System.EventArgs) Handles txtMitarbeiter.GotFocus, txtLKW_Nr.GotFocus, txtFrächter.GotFocus, txtAuftraggeber.GotFocus, txtMonat.GotFocus, txtJahr.GotFocus
CType(sender, TextBox).SelectAll()
End Sub
Private Sub txtZahl_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtStdVon.KeyPress, txtStdBis.KeyPress, txtMonat.KeyPress, txtJahr.KeyPress
'Es sind nur Zahleneingaben erlaubt
Dim asc As Integer = Convert.ToInt32(e.KeyChar)
Select Case asc
'Folgende Tasten sind erlaubt
'8 = Rücktaste (Back)
'13 = Enter
'27 = Esc
'48 To 57 = 0 bis 9
Case 8, 13, 27, 48 To 57
Case Else
e.Handled = True
End Select
End Sub
Private Sub btnDruck_Click(sender As System.Object, e As System.EventArgs) Handles btnDruck.Click
'Logische Prüfungen vor dem Drucken
If optDatumAnkunft.Checked Then
If dtpAnkunftBis.Value.Date < dtpAnkunftVon.Value.Date Then
MsgBox("Ankunft-Bis-Datum darf nicht kleiner sein als Von-Datum.", vbInformation)
dtpAnkunftVon.Focus()
Exit Sub
End If
End If
If optDatumAviso.Checked Then
If dtpAvisoBis.Value.Date < dtpAvisoVon.Value.Date Then
MsgBox("Aviso-Eingang-Bis-Datum darf nicht kleiner sein als Von-Datum.", vbInformation)
dtpAvisoVon.Focus()
Exit Sub
End If
End If
If optDatumFreigabe.Checked Then
If dtpFreigabeBis.Value.Date < dtpFreigabeVon.Value.Date Then
MsgBox("Freigabe-Bis-Datum darf nicht kleiner sein als Von-Datum.", vbInformation)
dtpFreigabeVon.Focus()
Exit Sub
End If
End If
If optMonatJahr.Checked Then
Dim Monat As Integer = VarToInt(txtMonat.Text.Trim)
If Monat < 1 Or Monat > 12 Then
MsgBox("Monat muss zwischen 1 und 12 liegen.", vbInformation)
txtMonat.Focus()
Exit Sub
End If
Dim Jahr As Integer = VarToInt(txtJahr.Text.Trim)
If Jahr < 2014 Or Jahr > Now.Year Then
MsgBox("Jahr muss zwischen 2014 und " & Now.Year.ToString & " liegen.", vbInformation)
txtJahr.Focus()
Exit Sub
End If
End If
If optFreigegeben.Checked Then
If VarToInt(txtStdVon.Text) > VarToInt(txtStdBis.Text) Then
MsgBox("Dauer-Bis darf nicht kleiner sein als Dauer-Von.", vbInformation)
txtStdVon.Focus()
Exit Sub
End If
End If
'alles OK --> Report starten
ActiveReportAnzeigen()
End Sub
Private Sub ActiveReportAnzeigen()
'Zusammenbau der SQL-Abfrage und der Auswahlinfo für den Druck
Dim hSQL As String = "SELECT * FROM Aviso WHERE Firma='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' AND "
Dim hAuswahl As String = "Auswahl: "
If optDatumAnkunft.Checked Then
hSQL += "Ankunft >= " & SQLDatum(dtpAnkunftVon.Value.Date) & " AND Ankunft <= " & SQLDatum(dtpAnkunftBis.Value.Date.AddDays(1))
hAuswahl += "Ankunftsdatum von " & Format(dtpAnkunftVon.Value, "dd.MM.yyyy") & " bis " & Format(dtpAnkunftBis.Value, "dd.MM.yyyy") & "; "
ElseIf optDatumFreigabe.Checked Then
hSQL += "Freigabe >= " & SQLDatum(dtpFreigabeVon.Value.Date) & " AND Freigabe <= " & SQLDatum(dtpFreigabeBis.Value.Date.AddDays(1))
hAuswahl += "Freigabedatum von " & Format(dtpFreigabeVon.Value, "dd.MM.yyyy") & " bis " & Format(dtpFreigabeBis.Value, "dd.MM.yyyy") & "; "
ElseIf optDatumAviso.Checked Then
hSQL += "Datum >= " & SQLDatum(dtpAvisoVon.Value.Date) & " AND Datum <= " & SQLDatum(dtpAvisoBis.Value.Date.AddDays(1))
hAuswahl += "Aviso-Eingang von " & Format(dtpAvisoVon.Value, "dd.MM.yyyy") & " bis " & Format(dtpAvisoBis.Value, "dd.MM.yyyy") & "; "
Else
hAuswahl += "Monat: " & txtMonat.Text & "/" & txtJahr.Text
Dim hVon As Date = DateSerial(VarToInt(txtJahr.Text), VarToInt(txtMonat.Text), 1)
Dim hBis As Date = hVon.AddMonths(1)
hSQL += "((Datum >= " & SQLDatum(hVon) & " AND Datum <= " & SQLDatum(hBis) & ") OR " &
"(Ankunft >= " & SQLDatum(hVon) & " AND Ankunft <= " & SQLDatum(hBis) & ") OR " &
"(Freigabe >= " & SQLDatum(hVon) & " AND Freigabe <= " & SQLDatum(hBis) & ")) "
End If
If optAlle.Checked Then
hAuswahl += "Status=alle; "
ElseIf optErfasst.Checked Then
hSQL += " AND Status = " & VERAG_PROG_ALLGEMEIN.cGlobal.Status_Erfasst.ToString
hAuswahl += "Status=erfasst; "
ElseIf optNichtEingetroffen.Checked Then
hSQL += " AND Status = " & VERAG_PROG_ALLGEMEIN.cGlobal.Status_NichtEingetroffen.ToString
hAuswahl += "Status=LKW n.e.; "
ElseIf optAnkunft.Checked Then
hSQL += " AND Status = " & VERAG_PROG_ALLGEMEIN.cGlobal.Status_Ankunft.ToString
hAuswahl += "Status=Ankunft; "
ElseIf optFreigegeben.Checked Then
hSQL += " AND Status = " & VERAG_PROG_ALLGEMEIN.cGlobal.Status_Freigegeben.ToString
hAuswahl += "Status=freigegeben; "
End If
If optSUB.Checked Then
hAuswahl += "Standort=Suben; "
Auswahl_Standort = "SUB"
ElseIf optSBG.Checked Then
hAuswahl += "Standort=Salzburg; "
Auswahl_Standort = "SBG"
ElseIf optNKD.Checked Then
hAuswahl += "Standort=Nickelsdorf; "
Auswahl_Standort = "NKD"
ElseIf optWAI.Checked Then
hAuswahl += "Standort=Waidhaus; "
Auswahl_Standort = "WAI"
Else
hAuswahl += "Standort=Alle; "
Auswahl_Standort = ""
End If
If Auswahl_Standort <> "" Then hSQL += " AND Grenzstelle = '" & Auswahl_Standort & "' "
If cboFirma.Text <> "" Then
hAuswahl = "Firma " & cboFirma.Text
If optFirmaBeides.Checked Then
hAuswahl = " (Frächter+Auftraggeber); "
hSQL += " AND (Frächter = '" & cboFirma.Text & "' OR Auftraggeber = '" & cboFirma.Text & "')"
ElseIf optFrächter.Checked Then
hAuswahl = " (Frächter); "
hSQL += " AND Frächter = '" & cboFirma.Text & "'"
ElseIf optAuftraggeber.Checked Then
hAuswahl = " (Auftraggeber); "
hSQL += " AND Auftraggeber = '" & cboFirma.Text & "'"
End If
End If
Dim hStern As String = ""
If txtLKW_Nr.Text.Trim <> "" Then
hStern += "LKW_Nr LIKE '%" & txtLKW_Nr.Text.Trim & "%'"
hAuswahl += "LKW-Nr=*" & txtLKW_Nr.Text.Trim & "*; "
End If
If txtFrächter.Text.Trim <> "" Then
If hStern <> "" Then hStern += " OR "
hStern += "Frächter LIKE '%" & txtFrächter.Text.Trim & "%'"
hAuswahl += "Frächter=*" & txtFrächter.Text.Trim & "*; "
End If
If txtAuftraggeber.Text.Trim <> "" Then
If hStern <> "" Then hStern += " OR "
hStern += "Auftraggeber LIKE '%" & txtAuftraggeber.Text.Trim & "%'"
hAuswahl += "Auftraggeber=*" & txtAuftraggeber.Text.Trim & "*; "
End If
If txtMitarbeiter.Text.Trim <> "" Then
If hStern <> "" Then hStern += " OR "
hStern += "LetzterMitarbeiter LIKE '%" & txtMitarbeiter.Text.Trim & "%'"
hAuswahl += "Mitarbeiter=*" & txtMitarbeiter.Text.Trim & "*; "
End If
If hStern <> "" Then
hStern = "(" & hStern & ")"
hSQL += " AND " & hStern
End If
If optFreigegeben.Checked Then
'bei Freigabe auch die Dauer mitprüfen
hSQL += " AND Dauer >= " & (VarToInt(txtStdVon.Text) * 60).ToString & " AND Dauer <= " & (VarToInt(txtStdBis.Text) * 60)
hAuswahl += "Dauer: " & txtStdVon.Text.Trim & " - " & txtStdBis.Text.Trim & " Std."
End If
'jetzt die Sortierung festlegen
If optAnkunft.Checked Then
hSQL += " ORDER BY Ankunft"
ElseIf optFreigegeben.Checked Then
hSQL += " ORDER BY Freigabe"
Else
hSQL += " ORDER BY Datum"
End If
''nachsehen, ob Frächter speziell ausgewählt wurde
'Dim hFrächter As String = ""
'If txtFrächter.Text.Trim <> "" Then
' If txtFrächter.Text.Contains("*") Then
' hFrächter = ""
' Else
' hFrächter = txtFrächter.Text.Trim
' End If
'End If
'If hFrächter = "" Then
' If txtAuftraggeber.Text.Trim <> "" Then
' If txtAuftraggeber.Text.Contains("*") Then
' hFrächter = ""
' Else
' hFrächter = txtAuftraggeber.Text.Trim
' End If
' End If
'End If
Dim f As New cStatFunctions
f.showReport(hAuswahl, hSQL, optIntern.Checked, cboFirma.Text, Auswahl_Standort)
End Sub
Private Sub btnDatum_Click(sender As System.Object, e As System.EventArgs) Handles btnLfdMonat.Click, btnLfdJahr.Click, btnVormonat.Click
Dim Monatsanfang As Date = DateSerial(Now.Year, Now.Month, 1)
If sender Is btnLfdMonat Then
'laufenden Monat überall vorschlagen
dtpAvisoVon.Value = Monatsanfang
dtpAvisoBis.Value = Now.Date
dtpAnkunftVon.Value = Monatsanfang
dtpAnkunftBis.Value = Now.Date
dtpFreigabeVon.Value = Monatsanfang
dtpFreigabeBis.Value = Now.Date
txtMonat.Text = Now.Month.ToString
txtJahr.Text = Now.Year.ToString
End If
If sender Is btnVormonat Then
'Vormonat überall vorschlagen
dtpAvisoVon.Value = Monatsanfang.AddMonths(-1)
dtpAvisoBis.Value = Monatsanfang.AddDays(-1)
dtpAnkunftVon.Value = Monatsanfang.AddMonths(-1)
dtpAnkunftBis.Value = Monatsanfang.AddDays(-1)
dtpFreigabeVon.Value = Monatsanfang.AddMonths(-1)
dtpFreigabeBis.Value = Monatsanfang.AddDays(-1)
txtMonat.Text = dtpAvisoVon.Value.Month.ToString
txtJahr.Text = dtpAvisoVon.Value.Year.ToString
End If
If sender Is btnLfdJahr Then
'Vormonat überall vorschlagen
dtpAvisoVon.Value = DateSerial(Now.Year, 1, 1)
dtpAvisoBis.Value = Now.Date
dtpAnkunftVon.Value = DateSerial(Now.Year, 1, 1)
dtpAnkunftBis.Value = Now.Date
dtpFreigabeVon.Value = DateSerial(Now.Year, 1, 1)
dtpFreigabeBis.Value = Now.Date
txtMonat.Text = dtpAvisoVon.Value.Month.ToString
txtJahr.Text = dtpAvisoVon.Value.Year.ToString
End If
End Sub
Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
If e.RowIndex >= 0 Then
frmStatFrima.auftrFraecht = CStr(DataGridView1.CurrentRow.Cells(1).Value)
frmStatFrima.srch = cboSrchAuftrFraecht.Text.Replace("Avisierer", "Auftraggeber")
If cbxStatVon.Checked Then frmStatFrima.StatVon = datStatVon.Value.ToShortDateString
If cbxStatBis.Checked Then frmStatFrima.StatBis = datStatBis.Value.ToShortDateString
If IsNumeric(txtDauerVon.Text) Then frmStatFrima.DauerVon = txtDauerVon.Text
If IsNumeric(txtDauerBis.Text) Then frmStatFrima.DauerBis = txtDauerBis.Text
frmStatFrima.firma = CStr(DataGridView1.CurrentRow.Cells(1).Value)
frmStatFrima.lblAnzLKWs.Text = CStr(DataGridView1.CurrentRow.Cells(0).Value)
frmStatFrima.lblDurchschnSZ.Text = CStr(DataGridView1.CurrentRow.Cells(2).Value) & " min"
frmStatFrima.lblMinWZ.Text = CStr(DataGridView1.CurrentRow.Cells(3).Value) & " min"
frmStatFrima.lblMaxWZ.Text = CStr(DataGridView1.CurrentRow.Cells(4).Value) & " min"
frmStatFrima.Show()
End If
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
showFirmen()
End Sub
Private Sub cbxStatVon_CheckedChanged(sender As Object, e As EventArgs) Handles cbxStatVon.CheckedChanged
datStatVon.Enabled = cbxStatVon.Checked
showFirmen()
End Sub
Private Sub cbxStatBis_CheckedChanged(sender As Object, e As EventArgs) Handles cbxStatBis.CheckedChanged#
datStatBis.Enabled = cbxStatBis.Checked
showFirmen()
End Sub
Private Sub datStatVon_ValueChanged(sender As Object, e As EventArgs) Handles datStatVon.ValueChanged, datStatBis.ValueChanged
showFirmen()
End Sub
Private Sub cboSrchAuftrFraecht_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSrchAuftrFraecht.SelectedIndexChanged
showFirmen()
End Sub
Private Sub cboFirmaIntern_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFirmaIntern.SelectedIndexChanged, cboGrenzstelle.SelectedIndexChanged
showFirmen()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
SDL.cProgramFunctions.genExcelFromDT_NEW(DataGridView1.DataSource)
End Sub
End Class