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