Imports System.Windows.Forms Imports System.Drawing Imports System.Security.Principal Public Class FrmReportSelect #Region "Deklarationen" Dim auswertungen As New TKB.Auswertung.clsAuswertung Dim CtrlList As New List(Of Control) Dim splits() As String Dim dr As DataRow Dim s As String = "" Dim SQLWhere As String = "" Friend selectPoint As New System.Drawing.Point() Dim Auswertungsdaten As New DataTable Dim tt As New TKB.VV.Utils.clsToolTips Dim On_Load As Boolean = False Dim DescriptionToolTip As New ToolTip Dim WhereModified As Boolean = False Dim sec As New TKB.VV.Utils.MySecurity Dim CurrentUser As String = "" Dim ParamCollection As New Collection Dim paramvalue1 As String Dim paramvalue2 As String Dim paramvalue3 As String #End Region #Region "Formular" ''' ''' Formular schliessen ''' ''' ''' ''' Private Sub btnAbbruch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.Close() End Sub ''' ''' Formualr schliessen ''' ''' ''' ''' Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click btnAbbruch_Click(sender, e) End Sub ''' ''' Formular schliessen ''' ''' ''' ''' Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click btnAbbruch_Click(sender, e) End Sub #End Region #Region "User" ''' ''' Security-Deklaration zum Auslesen der UserID vom Windows-User ''' ''' Dim ouser As New WindowsPrincipal(WindowsIdentity.GetCurrent) ''' ''' Windows-User auslesen ''' ''' ''' Private Function Get_Username() As String With ouser.Identity.Name Return (.Substring(.IndexOf("\") + 1)) End With End Function #End Region Private Sub FrmReportSelect_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try Try tt.Set_ToolTips(Me) Catch End Try auswertungen.Get_Auswertungen(Me.TreeAuswertungen) Me.TreeAuswertungen.CollapseAll() Me.TreeAuswertungen.SelectedNode = Me.TreeAuswertungen.Nodes(0) sec.Set_Form_Security(Me) Catch End Try End Sub Private Sub btnAufbereiten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAufbereitenCSV.Click Me.Cursor = Cursors.WaitCursor If Me.auswertungen.Auswertung.bTXP_Auswertung.Value = True Then TXP_Auswertung() Me.Cursor = Cursors.Default Exit Sub End If If Me.WhereModified = False Then Get_SQLWhere() Me.Auswertungsdaten = Me.auswertungen.Get_Auswertungsdaten(Me.auswertungen.Auswertung.sSQL.Value, Me.ParamCollection) Dim f As New frmAuswertung(Me.TreeAuswertungen.SelectedNode.Text, Me.Auswertungsdaten) f.MdiParent = Me.MdiParent Me.Cursor = Cursors.Default f.Show() End Sub Private Sub BtnAufbereitenCR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAufbereitenCR.Click Me.Cursor = Cursors.WaitCursor Me.auswertungen.TitelZeile1 = Me.txtTitel1.Text Me.auswertungen.TitelZeile2 = Me.txtTitel2.Text 'If Me.cbpa1.Text <> "" Then ' Me.ParamCollection.Clear() ' Dim i As Integer ' Dim pname As String ' Dim pvalue As String ' For i = 1 To 7 ' CtrlList.Clear() ' Me.GetControl(Me, "cbpa" + i.ToString, CtrlList) ' For Each x As ComboBox In CtrlList ' pname = x.Text ' Next ' CtrlList.Clear() ' Me.GetControl(Me, "cbvalue" + i.ToString, CtrlList) ' For Each x As ComboBox In CtrlList ' pvalue = x.Text ' Next ' Dim params As New TKB.Auswertung.RptParams(pname, pvalue) ' If pname <> "" Then Me.ParamCollection.Add(params) ' Next i 'End If If Me.auswertungen.Auswertung.bTXP_Auswertung.Value = True Then TXP_AuswertungCR() Me.Cursor = Cursors.Default Exit Sub End If If Me.WhereModified = False Then Get_SQLWhere() Me.Auswertungsdaten = Me.auswertungen.Get_Auswertungsdaten(Me.auswertungen.Auswertung.sSQL.Value, Me.ParamCollection) Dim f As New frmcrreporting(Me.Auswertungsdaten, Me.auswertungen.Auswertung.iAuswertungNr.Value, Me.auswertungen, Me.checkboxprintparam.Checked, CurrentUser) f.Text = "Auswertung " + Me.TreeAuswertungen.SelectedNode.Text f.MdiParent = Me.MdiParent Me.Cursor = Cursors.Default f.Show() End Sub Private Sub TXP_Auswertung() If Me.WhereModified = False Then Get_SQLWhere() Me.Auswertungsdaten = Me.auswertungen.Get_Auswertungsdaten(Me.auswertungen.Auswertung.sSQL.Value, Me.ParamCollection, True) Dim f As New frmAuswertung(Me.TreeAuswertungen.SelectedNode.Text, Me.Auswertungsdaten) f.Text = "Auswertung " + Me.TreeAuswertungen.SelectedNode.Text f.MdiParent = Me.MdiParent f.Show() End Sub Private Sub TXP_AuswertungCR() If Me.WhereModified = False Then Get_SQLWhere() Me.Auswertungsdaten = Me.auswertungen.Get_Auswertungsdaten(Me.auswertungen.Auswertung.sSQL.Value, Me.ParamCollection, True) Dim f As New frmcrreporting(Me.Auswertungsdaten, Me.auswertungen.Auswertung.iAuswertungNr.Value, Me.auswertungen, Me.checkboxprintparam.Checked, CurrentUser) f.MdiParent = Me.MdiParent Me.Cursor = Cursors.Default f.Show() End Sub Private Sub TreeAuswertungen_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeAuswertungen.DoubleClick 'If Me.TreeAuswertungen.SelectedNode.Tag > -1 Then btnAufbereiten_Click(sender, e) End Sub ''' ''' Mousedown-Ereignis auf dem Tree ''' ''' ''' ''' Private Sub TreeStruktur_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TreeAuswertungen.MouseDown Try Dim mouseEvents As MouseEventArgs mouseEvents = e selectPoint.Y = mouseEvents.Y selectPoint.X = mouseEvents.X Me.TreeAuswertungen.SelectedNode = Me.TreeAuswertungen.GetNodeAt(selectPoint) Catch ex As Exception MsgBox(ex.Message) End Try End Sub ''' ''' Nach Selektion eines Nodes Parameter neu aufbereiten und Auswerungsmöglichkeit (CR/CSV) anzeigen ''' ''' ''' ''' Private Sub TreeAuswertungen_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeAuswertungen.AfterSelect Me.On_Load = True Me.WhereModified = False Me.PictureBox1.Visible = False Try Me.txtTitel1.Text = Me.TreeAuswertungen.SelectedNode.Text Me.txtTitel2.Text = "" Me.checkboxprintparam.Checked = True Me.txtbeschreibung.Text = Me.TreeAuswertungen.SelectedNode.ToolTipText DescriptionToolTip.SetToolTip(Me.txtbeschreibung, Me.txtbeschreibung.Text) If Me.TreeAuswertungen.SelectedNode.Tag < 1 Then Me.GrpParameter.Enabled = False Me.BtnAufbereitenCR.Enabled = False Me.btnAufbereitenCSV.Enabled = False Me.grpcr.Enabled = False Me.grpdb.Enabled = False Exit Sub End If Me.auswertungen.Get_Auswertung(Me.TreeAuswertungen.SelectedNode.Tag) If Me.auswertungen.MitarbeiterAuswertungsparameter.Rows.Count > 0 Then Me.ComboboxMAParameter.Visible = True Try Me.ComboboxMAParameter.DataSource = Nothing Me.ComboboxMAParameter.DataSource = Me.auswertungen.MitarbeiterAuswertungsparameter Me.ComboboxMAParameter.DisplayMember = "Beschreibung" Me.ComboboxMAParameter.ValueMember = "Mitarbeiter_AuswertungsparameterNr" Me.ComboboxMAParameter.SelectedIndex = -1 Catch ex As Exception End Try Else Me.ComboboxMAParameter.Visible = False End If If Me.auswertungen.AuswertungParameter.Rows.Count = 0 Then Me.GrpParameter.Enabled = False Else Me.GrpParameter.Enabled = True End If If Me.auswertungen.Auswertung.bCR_Report.Value = True Then Me.BtnAufbereitenCR.Enabled = True Me.grpcr.Enabled = True Else Me.BtnAufbereitenCR.Enabled = False Me.grpcr.Enabled = False End If If Me.auswertungen.Auswertung.bCSV_Report.Value = True Then Me.btnAufbereitenCSV.Enabled = True Me.grpdb.Enabled = True Else Me.btnAufbereitenCSV.Enabled = False Me.grpdb.Enabled = False End If Init_Params() sec.Set_Form_Security(Me) Catch ex As Exception MsgBox(ex.Message) End Try Me.On_Load = False End Sub #Region "Parameters" #Region "Utils" ''' ''' Sucht in den Base-Controls sämtliche Controls mit dem Namen in "Key" (Wildcards * möglich) und listet ''' die gefundnen Controls in der Liste L zur weiteren Bearbeitung ''' ''' Base-Contrlo (z.B. aktuelles Formular ''' Schlüssel welcher gesucht werden soll ''' Liste der gefundenen Objekte ''' True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde. ''' ''' Private Function GetControl(ByVal BaseControl As Control, ByVal Key As String, ByRef L As List(Of Control), Optional ByVal ReturnAtFirstElement As Boolean = False) As Boolean If L Is Nothing Then L = New List(Of Control) Dim Gut As Boolean Dim ReturnFlag As Boolean = False If Key IsNot Nothing Then Key = Key.ToLower If BaseControl.HasChildren = True Then For Each ctl As Control In BaseControl.Controls Gut = False If Key Is Nothing Then Gut = True Else If ctl.Name.Length >= Key.Length Then Key = Key.ToLower If Key.StartsWith("*") Then If Key.Substring(1) = ctl.Name.ToLower.Substring(ctl.Name.Length - (Key.Length - 1), Key.Length - 1) Then Gut = True ElseIf Key.EndsWith("*") Then If Key.Substring(0, Key.Length - 1) = ctl.Name.ToLower.Substring(0, Key.Length - 1) Then Gut = True Else If Key = ctl.Name.ToLower Then Gut = True End If End If End If If Gut = True Then L.Add(ctl) If ReturnAtFirstElement = True Then ReturnFlag = True End If If ReturnFlag = False Then Call GetControl(ctl, Key, L) End If Next End If If L.Count - 1 > -1 Then Return True Else Return False End If End Function #End Region ''' ''' Parameter initialisieren ''' ''' ''' Private Sub SetControl(ByVal ctrlname As String, visible As Boolean, enabled As Boolean, inahalt As String) Me.CtrlList.Clear() Me.GetControl(Me, ctrlname, CtrlList) For Each x As ComboBox In CtrlList Try x.DataSource = Nothing x.Items.Clear() x.Enabled = enabled x.Visible = visible x.Text = inahalt Catch ex As Exception End Try Next End Sub Private Sub SetControl_Tabledata(ByVal ctrlname As String, visible As Boolean, enabled As Boolean, inhalt As String) Dim fb As New DataTable fb = Me.auswertungen.get_rptparam_values(inhalt) Me.CtrlList.Clear() Me.GetControl(Me, ctrlname, CtrlList) For Each x As ComboBox In CtrlList Try x.Items.Clear() x.Enabled = enabled x.Visible = visible x.DataSource = Nothing x.DataSource = fb x.DisplayMember = "Bezeichnung" x.ValueMember = "keyvalue" Catch ex As Exception End Try Next End Sub Sub Set_Value(ByVal name As String, int As Integer, values As String) Dim selval() As String = values.Split(";") CtrlList.Clear() Me.GetControl(Me, name + int.ToString, CtrlList) For Each x As ComboBox In CtrlList For Each ss As String In selval x.Items.Add(ss) Next x.Enabled = True x.SelectedItem = x.Items(0) Next End Sub Sub Enable_Combo(ByVal name As String, Int As Integer) CtrlList.Clear() Me.GetControl(Me, name + Int.ToString, CtrlList) For Each x As ComboBox In CtrlList x.Enabled = True Next End Sub Private Sub Init_Params(Optional ByVal Initialize_ComboBox As Boolean = True) If Initialize_ComboBox = True Then Me.ComboboxMAParameter.SelectedIndex = -1 Me.CtrlList.Clear() Me.GetControl(Me, "cb*", CtrlList) For Each x As ComboBox In CtrlList Try x.DataSource = Nothing x.Items.Clear() x.Enabled = False x.Text = "" Catch ex As Exception End Try Next Dim i As Integer For i = 1 To 6 SetControl("cbandor" + i.ToString, True, True, "") Next i = 0 For Each r As DataRow In Me.auswertungen.AuswertungParameter.Rows If r("Fix") = True Then i = i + 1 SetControl("cbparam" + i.ToString, True, False, r("Bezeichnung")) SetControl("cbop" + i.ToString, True, False, r("FixOperator")) Dim pv As String If Len(r("defaultvalue")) > 0 Then If Len(r("Defaultvalue")) > 3 Then If r("defaultvalue").ToString.Substring(0, 1) = "@" Then pv = Get_Param1(r("defaultvalue")) SetControl("cbvalue" + i.ToString, True, r("editable"), Get_Param1(r("defaultvalue"))) Else If UCase(r("defaultvalue").ToString.Substring(0, 3)) = "SP_" Then pv = Get_Param1(r("defaultvalue")) SetControl_Tabledata("cbvalue" + i.ToString, True, r("editable"), r("defaultvalue")) Else pv = r("defaultvalue") SetControl("cbvalue" + i.ToString, True, r("editable"), pv) Set_Value("cbvalue", i, pv) End If End If SetControl("cbandor" + i.ToString, False, False, "") Else pv = r("defaultvalue") SetControl("cbvalue" + i.ToString, True, r("editable"), pv) Set_Value("cbvalue", i, pv) End If Else pv = r("defaultvalue") SetControl("cbvalue" + i.ToString, True, r("editable"), pv) Set_Value("cbvalue", i, pv) End If End If Next Dim AnzahlFixParameter As Integer = i Dim i1 As Integer For i1 = AnzahlFixParameter + 1 To 7 Me.CtrlList.Clear() Me.GetControl(Me, "cb*" + i1.ToString, CtrlList) For Each x As ComboBox In CtrlList Try x.DataSource = Nothing x.Items.Clear() x.Enabled = False x.Text = "" Catch ex As Exception End Try Next Next For i1 = AnzahlFixParameter + 1 To 7 CtrlList.Clear() Me.GetControl(Me, "cbandor" + i1.ToString, CtrlList) For Each x As ComboBox In CtrlList x.Items.Clear() x.Items.Add("und") x.Items.Add("oder") Next Next i1 Enable_Combo("cbparam", AnzahlFixParameter + 1) Enable_Combo("cbop", AnzahlFixParameter + 1) Enable_Combo("cbvalue", AnzahlFixParameter + 1) Enable_Combo("cbandor", AnzahlFixParameter + 1) For i1 = AnzahlFixParameter + 1 To 7 Me.CtrlList.Clear() Me.GetControl(Me, "cbparam" + i1.ToString, CtrlList) For Each x As ComboBox In CtrlList For Each dr As DataRow In Me.auswertungen.AuswertungParameter.Rows If dr.Item("Fix") = False Then x.Items.Add(dr.Item("Bezeichnung")) Next Next Next i1 Exit Sub If Initialize_ComboBox = True Then Me.ComboboxMAParameter.SelectedIndex = -1 Me.CtrlList.Clear() Me.GetControl(Me, "cb*", CtrlList) For Each x As ComboBox In CtrlList Try x.DataSource = Nothing x.Items.Clear() x.Enabled = False x.Text = "" Catch ex As Exception End Try Next Dim fix As Boolean If Me.auswertungen.AuswertungParameter.Rows.Count > 0 Then fix = True End If For Each r As DataRow In Me.auswertungen.AuswertungParameter.Rows If r.Item("Fix") = False Then fix = False Next If fix Then Setup_Fix_Param() Exit Sub End If CtrlList.Clear() Me.GetControl(Me, "cbandor*", CtrlList) For Each x As ComboBox In CtrlList x.Items.Clear() x.Items.Add("und") x.Items.Add("oder") Next Me.cbparam1.Enabled = True Me.cbop1.Enabled = True Me.cbvalue1.Enabled = True Me.cbandor1.Enabled = True Me.CtrlList.Clear() Me.GetControl(Me, "cbparam*", CtrlList) For Each x As ComboBox In CtrlList For Each dr As DataRow In Me.auswertungen.AuswertungParameter.Rows If dr.Item("Fix") = False Then x.Items.Add(dr.Item("Bezeichnung")) Next Next For Each r As DataRow In Me.auswertungen.AuswertungParameter.Rows Next End Sub Private Sub Setup_Fix_Param() Dim i1 As Integer For i1 = 1 To 7 Me.CtrlList.Clear() Me.GetControl(Me, "cbpa" + i1.ToString, CtrlList) For Each x As ComboBox In CtrlList x.Visible = False Next Next Me.CtrlList.Clear() Me.GetControl(Me, "cbandor*", CtrlList) For Each x As ComboBox In CtrlList Try x.DataSource = Nothing x.Items.Clear() x.Enabled = False x.Text = "" x.Visible = False Catch ex As Exception End Try Next Me.lblundoder.Visible = False Dim i As Integer = 0 For Each dr As DataRow In Me.auswertungen.AuswertungParameter.Rows i = i + 1 Me.CtrlList.Clear() Me.GetControl(Me, "cbparam" + i.ToString, CtrlList) For Each x As ComboBox In CtrlList x.Enabled = False x.Text = dr.Item("Bezeichnung") Next Me.CtrlList.Clear() Me.GetControl(Me, "cbop" + i.ToString, CtrlList) For Each x As ComboBox In CtrlList x.Enabled = False x.Text = dr.Item("FixOperator") Next Me.CtrlList.Clear() Me.GetControl(Me, "cbpa" + i.ToString, CtrlList) For Each x As ComboBox In CtrlList x.Enabled = False x.Visible = False x.Text = dr.Item("Param_Name") Next Me.CtrlList.Clear() Me.GetControl(Me, "cbvalue" + i.ToString, CtrlList) For Each x As ComboBox In CtrlList x.Text = Set_DefaultValue(dr.Item("Defaultvalue")) If dr.Item("Editable") = False Then x.Enabled = False Else x.Enabled = True If dr.Item("Feldbezug").ToString <> "" Then If UCase(dr.Item("feldbezug").ToString.Substring(0, 3)) = "SP_" Then Dim fb As New DataTable fb = Me.auswertungen.get_rptparam_values(dr.Item("Feldbezug")) x.DataSource = Nothing x.Items.Clear() x.DataSource = fb x.DisplayMember = "Bezeichnung" x.ValueMember = "KeyValue" Else 'Fixer Feldbezug If dr.Item("Feldbezug").ToString <> "" Then Dim selval() As String = dr.Item("Feldbezug").ToString.Split(";") Dim cbvalue As String = "cbvalue" + s x.DataSource = Nothing x.Items.Clear() For Each ss As String In selval x.Items.Add(ss) Next End If End If End If Next Next End Sub Private Function Set_DefaultValue(ByVal Inputvalue As String) As String Return Get_Param1(Inputvalue) End Function ''' ''' Selektion Parameter ''' ''' ''' ''' Private Sub cbparam1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbparam1.SelectedIndexChanged, cbparam2.SelectedIndexChanged, _ cbparam3.SelectedIndexChanged, cbparam4.SelectedIndexChanged, cbparam5.SelectedIndexChanged, cbparam6.SelectedIndexChanged, cbparam7.SelectedIndexChanged If Me.On_Load Then Exit Sub Me.WhereModified = False Me.PictureBox1.Visible = False Dim s As String = ParamNr(sender.name) Dim cbop As String = "cbop" + s dr = Findrow(sender.text) 'Operatoren festlegen CtrlList.Clear() Me.GetControl(Me, "cbop" + s, CtrlList) For Each ob As ComboBox In CtrlList ob.Items.Clear() splits = dr.Item("Operator").ToString.Split(";") For Each x As String In splits ob.Items.Add(x) Next ob.SelectedIndex = 0 Next ' Wenn ein Datenbezug ab DB oder eingegeben, dann aufbereiten If dr.Item("Feldbezug").ToString <> "" Then 'Feldbezug ab DB If UCase(dr.Item("feldbezug").ToString.Substring(0, 3)) = "SP_" Then Dim fb As New DataTable fb = Me.auswertungen.get_rptparam_values(dr.Item("Feldbezug")) CtrlList.Clear() Me.GetControl(Me, "cbvalue" + s, CtrlList) For Each x As ComboBox In CtrlList x.DataSource = Nothing x.Items.Clear() x.DataSource = fb x.DisplayMember = "Bezeichnung" x.ValueMember = "KeyValue" Next Else 'Fixer Feldbezug If dr.Item("Feldbezug").ToString <> "" Then Dim selval() As String = dr.Item("Feldbezug").ToString.Split(";") Dim cbvalue As String = "cbvalue" + s CtrlList.Clear() Me.GetControl(Me, "cbvalue" + s, CtrlList) For Each x As ComboBox In CtrlList x.DataSource = Nothing x.Items.Clear() For Each ss As String In selval x.Items.Add(ss) Next Next End If End If End If End Sub ''' ''' Datenrow in den zur Auswertung gehörenden Parameterliste suchen ''' ''' ''' ''' Private Function Findrow(ByVal key As String) As DataRow For Each dr As DataRow In Me.auswertungen.AuswertungParameter.Rows If dr.Item("Bezeichnung") = key Then Return dr End If Next End Function 'Param-Nr auslesen Private Function ParamNr(ByVal s As String) As String Return s.Substring(Len(s) - 1, 1) End Function ''' ''' Where Bedingung für die Abfrage zusammenstellen ''' ''' Private Sub Get_SQLWhere() Me.ParamCollection.Clear() Me.auswertungen.ParamCollection.Clear() Dim s As String Dim i As Integer Me.SQLWhere = "" 'If Me.cbparam1.Text <> "" And Me.cbop1.Text <> "" And Me.cbvalue1.Text <> "" Then ' If cbparam1.Enabled = True Then ' Me.auswertungen.ParamCollection.Add(cbparam1.Text & " " & cbop1.Text & " " & cbvalue1.Text) ' s = cbparam1.Text & " " & cbop1.Text & " " & cbvalue1.Text ' SQLWhere = SQLWhere + get_where(1) ' Else ' Set_Fixparameter(1, s) ' End If 'End If If Me.cbparam1.Text <> "" And Me.cbop1.Text <> "" And Me.cbvalue1.Text <> "" Then If cbparam1.Enabled = True Then Me.auswertungen.ParamCollection.Add(cbparam1.Text & " " & cbop1.Text & " " & cbvalue1.Text) s = cbparam1.Text & " " & cbop1.Text & " " & cbvalue1.Text SQLWhere = SQLWhere + get_where(1) Else Set_Fixparameter(1, s) End If End If If Me.cbparam2.Text <> "" And Me.cbop2.Text <> "" And Me.cbvalue2.Text <> "" Then If cbparam2.Enabled = True Then If cbandor1.Text <> "" Then If Me.cbandor1.Text = "und" Then SQLWhere = SQLWhere + " and " + get_where(2) If Me.cbandor1.Text = "oder" Then SQLWhere = SQLWhere + " or " + get_where(2) Me.auswertungen.ParamCollection.Add(cbandor1.Text + " " + cbparam2.Text & " " & cbop2.Text & " " & cbvalue2.Text) s = s & "' & Chr(10) & Chr(13) & '" & cbandor1.Text & " " & cbparam2.Text & " " & cbop2.Text & " " & cbvalue2.Text Else Me.auswertungen.ParamCollection.Add(cbparam2.Text & " " & cbop2.Text & " " & cbvalue2.Text) s = cbparam1.Text & " " & cbop1.Text & " " & cbvalue1.Text SQLWhere = SQLWhere + get_where(2) End If Else Set_Fixparameter(2, s) End If End If If Me.cbparam3.Text <> "" And Me.cbop3.Text <> "" And Me.cbvalue3.Text <> "" Then If cbparam3.Enabled = True Then If Me.cbandor2.Text <> "" Then If Me.cbandor2.Text = "und" Then SQLWhere = SQLWhere + " and " + get_where(3) If Me.cbandor2.Text = "oder" Then SQLWhere = SQLWhere + " or " + get_where(3) Me.auswertungen.ParamCollection.Add(cbandor2.Text + " " + cbparam3.Text & " " & cbop3.Text & " " & cbvalue3.Text) s = s + " " + cbandor2.Text + " " + cbparam3.Text & " " & cbop3.Text & " " & cbvalue3.Text Else Me.auswertungen.ParamCollection.Add(cbparam3.Text & " " & cbop3.Text & " " & cbvalue3.Text) s = cbparam1.Text & " " & cbop1.Text & " " & cbvalue1.Text SQLWhere = SQLWhere + get_where(3) End If Else Set_Fixparameter(3, s) End If End If If Me.cbparam4.Text <> "" And Me.cbop4.Text <> "" And Me.cbvalue4.Text <> "" Then If cbparam4.Enabled = True Then If Me.cbandor3.Text <> "" Then If Me.cbandor3.Text = "und" Then SQLWhere = SQLWhere + " and " + get_where(4) If Me.cbandor3.Text = "oder" Then SQLWhere = SQLWhere + " or " + get_where(4) Me.auswertungen.ParamCollection.Add(cbandor3.Text + " " + cbparam4.Text & " " & cbop4.Text & " " & cbvalue4.Text) s = s + " " + cbandor3.Text + " " + cbparam4.Text & " " & cbop4.Text & " " & cbvalue4.Text Else Me.auswertungen.ParamCollection.Add(cbparam4.Text & " " & cbop4.Text & " " & cbvalue4.Text) s = cbparam1.Text & " " & cbop1.Text & " " & cbvalue1.Text SQLWhere = SQLWhere + get_where(4) End If Else Set_Fixparameter(4, s) End If End If If Me.cbparam5.Text <> "" And Me.cbop5.Text <> "" And Me.cbvalue5.Text <> "" Then If cbparam5.Enabled = True Then If Me.cbandor4.Text <> "" Then If Me.cbandor4.Text = "und" Then SQLWhere = SQLWhere + " and " + get_where(5) If Me.cbandor4.Text = "oder" Then SQLWhere = SQLWhere + " or " + get_where(5) Me.auswertungen.ParamCollection.Add(cbandor4.Text + " " + cbparam5.Text & " " & cbop5.Text & " " & cbvalue5.Text) s = s + " " + cbandor4.Text + " " + cbparam5.Text & " " & cbop5.Text & " " & cbvalue5.Text Else Me.auswertungen.ParamCollection.Add(cbparam5.Text & " " & cbop5.Text & " " & cbvalue5.Text) s = cbparam1.Text & " " & cbop1.Text & " " & cbvalue1.Text SQLWhere = SQLWhere + get_where(5) End If Else Set_Fixparameter(5, s) End If End If If Me.cbparam6.Text <> "" And Me.cbop6.Text <> "" And Me.cbvalue6.Text <> "" Then If cbparam6.Enabled = True Then If Me.cbandor5.Text <> "" Then If Me.cbandor5.Text = "und" Then SQLWhere = SQLWhere + " and " + get_where(6) If Me.cbandor5.Text = "oder" Then SQLWhere = SQLWhere + " or " + get_where(6) Me.auswertungen.ParamCollection.Add(cbandor5.Text + " " + cbparam6.Text & " " & cbop6.Text & " " & cbvalue6.Text) s = s + " " + cbandor5.Text + " " + cbparam6.Text & " " & cbop6.Text & " " & cbvalue6.Text Else Me.auswertungen.ParamCollection.Add(cbparam6.Text & " " & cbop6.Text & " " & cbvalue6.Text) s = cbparam1.Text & " " & cbop1.Text & " " & cbvalue1.Text SQLWhere = SQLWhere + get_where(6) End If Else Set_Fixparameter(6, s) End If End If If Me.cbparam7.Text <> "" And Me.cbop7.Text <> "" And Me.cbvalue7.Text <> "" Then If cbparam7.Enabled = True Then If Me.cbandor6.Text <> "" Then If Me.cbandor6.Text = "und" Then SQLWhere = SQLWhere + " and " + get_where(7) If Me.cbandor6.Text = "oder" Then SQLWhere = SQLWhere + " or " + get_where(7) Me.auswertungen.ParamCollection.Add(cbandor6.Text + " " + cbparam7.Text & " " & cbop7.Text & " " & cbvalue7.Text) s = s + " " + cbandor6.Text + " " + cbparam7.Text & " " & cbop7.Text & " " & cbvalue7.Text Else Me.auswertungen.ParamCollection.Add(cbparam7.Text & " " & cbop7.Text & " " & cbvalue7.Text) s = cbparam1.Text & " " & cbop1.Text & " " & cbvalue1.Text SQLWhere = SQLWhere + get_where(7) End If Else Set_Fixparameter(6, 7) End If End If If Me.auswertungen.Auswertung.sSQL.ToString.IndexOf("(CurrentUser)") > 0 Then Me.CurrentUser = Me.Get_Username If SQLWhere = "" Then SQLWhere = " ForUserID='" + Me.Get_Username + "'" Else SQLWhere = "(" + SQLWhere + ") AND ForUserID='" + Me.Get_Username + "'" End If End If 'For Each r As DataRow In Me.auswertungen.AuswertungParameter.Rows ' If r("Fix") = True Then ' Dim x As String ' x = Get_Param1(r("Feldbezug")) ' get_where(-1, True, r("DBfeldname"), r("Operator"), x, r("paramtype")) ' If r("Param_name") <> "" Then ' 'Eigener Parameter ' Me.ParamCollection.Add(New TKB.Auswertung.RptParams(r("Param_name"), x)) ' Me.auswertungen.ParamCollection.Add("" + " " + r.Item("Bezeichnung").ToString & " " & r("Operator").ToString & " " & x) ' s = s & "' & Chr(10) & Chr(13) & '" & "" + " " + r.Item("Bezeichnung").ToString & " " & r("Operator").ToString & " " & x ' Else ' 'Erweiterung SQL-Wehere ' If LCase(r("fixandor")) = "and" Then ' SQLWhere = SQLWhere + " und " + get_where(-1, True, r("DBfeldname"), r("Operator"), x, r("paramtype")) ' Me.auswertungen.ParamCollection.Add("und" + " " + r.Item("Bezeichnung").ToString & " " & r("Operator").ToString & " " & x) ' s = s & "' & Chr(10) & Chr(13) & '" & "und" + " " + r.Item("Bezeichnung").ToString & " " & r("Operator").ToString & " " & x ' Else ' SQLWhere = SQLWhere + " oder " + get_where(-1, True, r("DBfeldname"), r("Operator"), x, r("paramtype")) ' Me.auswertungen.ParamCollection.Add("oder" + " " + r.Item("Bezeichnung").ToString & " " & r("Operator").ToString & " " & x) ' s = s & "' & Chr(10) & Chr(13) & '" & "oder" + " " + r.Item("Bezeichnung").ToString & " " & r("Operator").ToString & " " & x ' End If ' End If ' End If 'Next If SQLWhere <> "" Then If ParamCollection.Count > 0 Then Me.ParamCollection.Add(New TKB.Auswertung.RptParams("@sqlwhere", SQLWhere), , 1) Else Me.ParamCollection.Add(New TKB.Auswertung.RptParams("@sqlwhere", SQLWhere)) End If End If Me.auswertungen.FullParam = s End Sub Private Sub Set_Fixparameter(ByVal Itemnr As Integer, ByRef s As String) Dim ParamName As String Dim ParamOP As String Dim ParamValue As String Dim ParamValueText As String = "" CtrlList.Clear() Me.GetControl(Me, "cbparam" + Itemnr.ToString, CtrlList) For Each ob As ComboBox In CtrlList ParamName = ob.Text Next CtrlList.Clear() Me.GetControl(Me, "cbop" + Itemnr.ToString, CtrlList) For Each ob As ComboBox In CtrlList ParamOP = ob.Text Next Dim Set_CBBoxValue As Boolean = False For Each r As DataRow In Me.auswertungen.AuswertungParameter.Rows If r("bezeichnung") = ParamName Then If UCase(r("Paramtype")) = "INT;VARCHAR" Then set_cbboxvalue = True End If End If Next CtrlList.Clear() Me.GetControl(Me, "cbvalue" + Itemnr.ToString, CtrlList) For Each ob As ComboBox In CtrlList If Set_CBBoxValue = True Then ParamValue = ob.SelectedValue ParamValueText = ob.Text Else ParamValue = ob.Text ParamValueText = ob.Text End If Next For Each r As DataRow In Me.auswertungen.AuswertungParameter.Rows If r("bezeichnung") = ParamName Then Dim x As String x = ParamValue x = get_where_fix(-1, True, r("DBfeldname"), r("Operator"), x, r("paramtype")) If UCase(r("Paramtype")) = "DATEPART" Then Dim paramsplit() As String = r("param_name").ToString.Split(";") Me.ParamCollection.Add(New TKB.Auswertung.RptParams(paramsplit(0), Me.paramvalue1)) Me.ParamCollection.Add(New TKB.Auswertung.RptParams(paramsplit(1), Me.paramvalue2)) Me.auswertungen.ParamCollection.Add(ParamName + " " + ParamOP + " " + ParamValue) ' Me.auswertungen.ParamCollection.Add("" + " " + paramsplit(0).ToString & " " & ParamOP & " " & Me.paramvalue1) ' s = s & "' & Chr(10) & Chr(13) & '" & "und" + " " + paramsplit(0).ToString & " " & ParamOP & " " & Me.paramvalue1 ' Me.auswertungen.ParamCollection.Add("" + " " + paramsplit(1).ToString & " " & ParamOP & " " & Me.paramvalue2) ' s = s & "' & Chr(10) & Chr(13) & '" & "und" + " " + paramsplit(1).ToString & " " & ParamOP & " " & Me.paramvalue2 Else Me.ParamCollection.Add(New TKB.Auswertung.RptParams(r("Param_Name"), x)) Me.auswertungen.ParamCollection.Add("" + " " + r("Bezeichnung").ToString & " " & ParamOP & " " & ParamValueText) s = s & "' & Chr(10) & Chr(13) & '" & "und" + " " + r.Item("Bezeichnung").ToString & " " & ParamOP & " " & ParamValueText End If End If Next End Sub ''' ''' Where zusammenstellen ''' ''' ''' ''' Private Function get_where(ByVal nr As Integer, Optional fixparam As Boolean = False, Optional wdbfeld As String = "", Optional wop As String = "", Optional wvalue As String = "", Optional wparamtyp As String = "") As String Dim param As New ComboBox Dim op As New ComboBox Dim val As New ComboBox Dim wertvalue As String = "" Dim wertdbfeld As String = "" Dim wertop As String = op.Text Dim paramtyp As String = "" If fixparam = False Then CtrlList.Clear() Me.GetControl(Me, "cbparam" + Trim(Str(nr)), CtrlList) param = CtrlList.Item(0) CtrlList.Clear() Me.GetControl(Me, "cbop" + Trim(Str(nr)), CtrlList) op = CtrlList.Item(0) CtrlList.Clear() Me.GetControl(Me, "cbvalue" + Trim(Str(nr)), CtrlList) val = CtrlList.Item(0) dr = Me.Findrow(param.Text) wertop = op.Text Dim paramsplit() As String = dr.Item("Paramtype").ToString.Split(";") Dim dbfeldsplit() As String = dr.Item("dbfeldname").ToString.Split(";") If dbfeldsplit.Length > 1 And val.SelectedIndex > -1 Then wertvalue = val.SelectedValue wertdbfeld = dbfeldsplit(0) paramtyp = paramsplit(0) Else wertvalue = val.Text If dbfeldsplit.Length > 1 Then wertdbfeld = dbfeldsplit(1) paramtyp = paramsplit(1) Else wertdbfeld = dbfeldsplit(0) paramtyp = paramsplit(0) End If End If Else wertdbfeld = wdbfeld wertop = wop wertvalue = wvalue paramtyp = wparamtyp End If Select Case UCase(paramtyp) Case "VARCHAR", "STRING", "CHAR" Return wertdbfeld + " " + wertop + " '" + wertvalue + "'" Case "INTEGER", "INT" Return wertdbfeld + " " + wertop + " " + wertvalue + "" Case "DATEPART" Select Case LCase(wertvalue) Case "letzte woche" Return wertdbfeld & " between dbo.get_dateperiode('LastWeek',1) and dbo.get_dateperiode('LastWeek',0)" Case "letzter monat" Return wertdbfeld & " between dbo.get_dateperiode('LastMonth',1) and dbo.get_dateperiode('LastMonth',0)" Case "letztes quartal" Return wertdbfeld & " between dbo.get_dateperiode('LastQuarter',1) and dbo.get_dateperiode('LastQuarter',0)" Case "letztes jahr" Return wertdbfeld & " between dbo.get_dateperiode('LastYear',1) and dbo.get_dateperiode('LastYear',0)" Case "aktuelle woche" Return wertdbfeld & " between dbo.get_dateperiode('ActWeek',1) and dbo.get_dateperiode('ActWeek',0)" Case "aktueller monat" Return wertdbfeld & " between dbo.get_dateperiode('ActMonth',1) and dbo.get_dateperiode('ActMonth',0)" Case "aktuelles quartal" Return wertdbfeld & " between dbo.get_dateperiode('ActQuarter',1) and dbo.get_dateperiode('ActQuarter',0)" Case "aktuelles jahr" Return wertdbfeld & " between dbo.get_dateperiode('ActYear',1) and dbo.get_dateperiode('ActYear',0)" End Select Case "DATUM" Select Case wertop Case "=" Return wertdbfeld + " > convert(datetime,'" + wertvalue + " 00:00:00',104) and " + wertdbfeld + " < convert(datetime,'" + wertvalue + " 23:59:59',104)" Case "<>" Return wertdbfeld + " < convert(datetime,'" + wertvalue + " 00:00:00',104) and " + wertdbfeld + " > convert(datetime,'" + wertvalue + " 23:59:59',104)" Case ">=" Return wertdbfeld + " " + wertop + " convert(datetime,'" + wertvalue + " 00:00:00',104)" Case ">" Return wertdbfeld + " " + wertop + " convert(datetime,'" + wertvalue + " 23:59:59',104)" Case "<" Return wertdbfeld + " " + wertop + " convert(datetime,'" + wertvalue + " 00:00:00',104)" Case "<=" Return wertdbfeld + " " + wertop + " convert(datetime,'" + wertvalue + " 23:59:59',104)" Case Else Return wertdbfeld + " " + wertop + " convert(datetime,'" + wertvalue + " 00:00:00',104)" End Select Case "DATUM+1" Dim d As DateTime = wertvalue d = DateAdd(DateInterval.Day, 1, d) wertvalue = d.ToString Return wertdbfeld + " " + wertop + " convert(datetime,'" + wertvalue + " 00:00:00',104)" Case "BOOLEAN" If UCase(wertvalue) = "TRUE" Or UCase(wertvalue) = "JA" Then Return wertdbfeld + " " + wertop + " 1" Else Return wertdbfeld + " " + wertop + " 0" End If Case Else End Select End Function Private Function get_where_fix(ByVal nr As Integer, Optional fixparam As Boolean = False, Optional wdbfeld As String = "", Optional wop As String = "", Optional wvalue As String = "", Optional wparamtyp As String = "") As String Dim param As New ComboBox Dim op As New ComboBox Dim val As New ComboBox Dim wertvalue As String = "" Dim wertdbfeld As String = "" Dim wertop As String = op.Text Dim paramtyp As String = "" wertdbfeld = wdbfeld wertop = wop wertvalue = wvalue paramtyp = wparamtyp Select Case UCase(paramtyp) Case "VARCHAR", "STRING", "CHAR" Return wertvalue Case "INTEGER", "INT" Return wertvalue Case "DATEPART" Select Case LCase(wertvalue) Case "letzte woche" Me.paramvalue1 = Get_Param1("@FIRSTOFLASTWEEK") + " 00:00:00" Me.paramvalue2 = Get_Param1("@LASTOFLASTWEEK") + " 23:59:59" Return "" Case "letzter monat" Me.paramvalue1 = Get_Param1("@FIRSTOFLASTMONTH") + " 00:00:00" Me.paramvalue2 = Get_Param1("@LASTOFLASTMONTH") + " 23:59:59" Return "" Case "letztes quartal" Me.paramvalue1 = Get_Param1("@FIRSTOFLASTQUARTER") + " 00:00:00" Me.paramvalue2 = Get_Param1("@LASTOFLASTQUARTER") + " 23:59:59" Return "" Case "letztes jahr" Me.paramvalue1 = Get_Param1("@FIRSTOFLASTYEAR") + " 00:00:00" Me.paramvalue2 = Get_Param1("@LASTOFLASTYEAR") + " 23:59:59" Return "" Case "aktuelle woche" Me.paramvalue1 = Get_Param1("@FIRSTOFACTWEEK") + " 00:00:00" Me.paramvalue2 = Get_Param1("@LASTOFACTWEEK") + " 23:59:59" Return "" Case "aktueller monat" Me.paramvalue1 = Get_Param1("@FIRSTOFACTMONTH") + " 00:00:00" Me.paramvalue2 = Get_Param1("@LASTOFACTMONTH") + " 23:59:59" Return "" Case "aktuelles quartal" Me.paramvalue1 = Get_Param1("@FIRSTOFACTQUARTER") + " 00:00:00" Me.paramvalue2 = Get_Param1("@LASTOFACTQUARTER") + " 23:59:59" Return "" Case "aktuelles jahr" Me.paramvalue1 = Get_Param1("@FIRSTOFACTYEAR") + " 00:00:00" Me.paramvalue2 = Get_Param1("@LASTOFACTYEAR") + " 23:59:59" Return "" Case "aktuelles jahr bis ende letzter monat" Me.paramvalue1 = Get_Param1("@FIRSTOFACTYEAR") + " 00:00:00" Me.paramvalue2 = Get_Param1("@LASTOFLASTMONTH") + " 23:59:59" Return "" End Select Case "DATUM" Return wertvalue Case "DATUM+1" Return wertvalue Case "BOOLEAN" If UCase(wertvalue) = "TRUE" Or UCase(wertvalue) = "JA" Then Return "1" Else Return "0" End If Case Else Return wertvalue End Select End Function #End Region Private Sub cbvalue1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbvalue1.DropDown, cbvalue2.DropDown, _ cbvalue3.DropDown, cbvalue4.DropDown, cbvalue5.DropDown, cbvalue6.DropDown, cbvalue7.DropDown Try Dim s As String = ParamNr(sender.name) Dim nr As Integer = s Dim param As New ComboBox Dim op As New ComboBox Dim val As New ComboBox CtrlList.Clear() Me.GetControl(Me, "cbparam" + Trim(Str(nr)), CtrlList) param = CtrlList.Item(0) CtrlList.Clear() Me.GetControl(Me, "cbvalue" + Trim(Str(nr)), CtrlList) val = CtrlList.Item(0) dr = Me.Findrow(param.Text) If dr.Item("Paramtype") = "Datum" Then Dim LocalMousePosition As Point LocalMousePosition = val.PointToClient(Cursor.Position) Dim f As New frmCalendar ' f.Top = Me.Top + val.Top + 200 ' f.Left = Me.Left + val.Width + 399 f.StartPosition = FormStartPosition.Manual f.Location = System.Windows.Forms.Cursor.Position f.ShowDialog() If f.DialogResult = Windows.Forms.DialogResult.OK Then CtrlList.Clear() Me.GetControl(Me, "cbvalue" + Trim(Str(nr)), CtrlList) param = CtrlList.Item(0) param.DropDownStyle = ComboBoxStyle.Simple param.Text = f.MonthCalendar1.SelectionRange.Start.Date param.DropDownStyle = ComboBoxStyle.DropDown param.Focus() param.DropDownStyle = ComboBoxStyle.DropDown End If End If If dr.Item("Feldbezug") = "OESelectSingle" Or dr.Item("Feldbezug") = "OESelectMulti" Or dr.Item("Feldbezug") = "OEMa" Then Dim LocalMousePosition As Point LocalMousePosition = val.PointToClient(Cursor.Position) Dim f As New frmTreeselect(dr.Item("Feldbezug")) ' f.Top = Me.Top + val.Top + 200 ' f.Left = Me.Left + val.Width + 399 f.StartPosition = FormStartPosition.Manual f.Location = System.Windows.Forms.Cursor.Position f.ShowDialog() If f.DialogResult = Windows.Forms.DialogResult.OK Then If dr.Item("Feldbezug") = "OESelectSingle" Then Me.GetControl(Me, "cbvalue" + Trim(Str(nr)), CtrlList) param = CtrlList.Item(0) param.DropDownStyle = ComboBoxStyle.Simple param.SelectedValue = f.SelectedValues param.DropDownStyle = ComboBoxStyle.DropDown Else Me.GetControl(Me, "cbvalue" + Trim(Str(nr)), CtrlList) param = CtrlList.Item(0) param.DropDownStyle = ComboBoxStyle.Simple param.Items.Clear() param.Items.Add(f.SelectedValues) param.Text = f.SelectedValues param.DropDownStyle = ComboBoxStyle.DropDown End If f.Dispose() End If End If Catch ex As Exception End Try End Sub Private Sub BtnInitParam_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnInitParam.Click Me.Init_Params() End Sub Private Sub cbandor1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbandor1.SelectedIndexChanged, _ cbandor2.SelectedIndexChanged, cbandor3.SelectedIndexChanged, cbandor3.SelectedIndexChanged, cbandor4.SelectedIndexChanged, cbandor5.SelectedIndexChanged, _ cbandor6.SelectedIndexChanged If Me.On_Load Then Exit Sub Me.WhereModified = False Me.PictureBox1.Visible = False s = Me.ParamNr(sender.name) s = s + 1 CtrlList.Clear() Me.GetControl(Me, "cbparam" + s, CtrlList) For Each x As ComboBox In CtrlList x.Enabled = True Next CtrlList.Clear() Me.GetControl(Me, "cbop" + s, CtrlList) For Each x As ComboBox In CtrlList x.Enabled = True Next CtrlList.Clear() Me.GetControl(Me, "cbvalue" + s, CtrlList) For Each x As ComboBox In CtrlList x.Enabled = True Next CtrlList.Clear() Me.GetControl(Me, "cbandor" + s, CtrlList) For Each x As ComboBox In CtrlList x.Enabled = True Next End Sub Private Sub Init_ParamRow(ByVal s As String) s = s + 1 CtrlList.Clear() Me.GetControl(Me, "cbparam" + s, CtrlList) For Each x As ComboBox In CtrlList Try x.Text = "" Catch ex As Exception End Try x.Enabled = False Next CtrlList.Clear() Me.GetControl(Me, "cbop" + s, CtrlList) For Each x As ComboBox In CtrlList x.Text = "" x.Enabled = False Next CtrlList.Clear() Me.GetControl(Me, "cbvalue" + s, CtrlList) For Each x As ComboBox In CtrlList x.Text = "" x.Enabled = False Next CtrlList.Clear() Me.GetControl(Me, "cbandor" + s, CtrlList) For Each x As ComboBox In CtrlList x.Text = "" Next End Sub Private Sub BtnParamDel1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnParamDel1.Click, BtnParamDel2.Click, _ BtnParamDel3.Click, BtnParamDel4.Click, BtnParamDel5.Click, BtnParamDel6.Click Init_ParamRow(Me.ParamNr(sender.name)) End Sub Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click Me.On_Load = True Dim s As String CtrlList.Clear() Me.GetControl(Me, "cbandor*", CtrlList) For Each x As ComboBox In CtrlList s = s + ParamNr(x.Name) + "~" + x.Text + ";" Next s = s + "|" CtrlList.Clear() Me.GetControl(Me, "cbparam*", CtrlList) For Each x As ComboBox In CtrlList s = s + ParamNr(x.Name) + "~" + x.Text + ";" Next s = s + "|" CtrlList.Clear() Me.GetControl(Me, "cbop*", CtrlList) For Each x As ComboBox In CtrlList s = s + ParamNr(x.Name) + "~" + x.Text + ";" Next s = s + "|" CtrlList.Clear() Me.GetControl(Me, "cbval*", CtrlList) For Each x As ComboBox In CtrlList s = s + ParamNr(x.Name) + "~" + x.Text + ";" Next Dim Bez As String = InputBox("Bezeichnung für die Parameter:", "Auswertungsparameter sichern") If Me.WhereModified = False Then If Bez <> "" Then Me.auswertungen.Save_MAParameter(Me.auswertungen.Auswertung.iAuswertungNr.Value, Bez, s, Me.txtTitel1.Text, Me.txtTitel2.Text, Me.checkboxprintparam.Checked, "") Else If Bez <> "" Then Me.auswertungen.Save_MAParameter(Me.auswertungen.Auswertung.iAuswertungNr.Value, Bez, s, Me.txtTitel1.Text, Me.txtTitel2.Text, Me.checkboxprintparam.Checked, Me.SQLWhere) End If If Me.auswertungen.MitarbeiterAuswertungsparameter.Rows.Count > 0 Then Me.ComboboxMAParameter.Visible = True Try Me.ComboboxMAParameter.DataSource = Nothing Me.ComboboxMAParameter.DataSource = Me.auswertungen.MitarbeiterAuswertungsparameter Me.ComboboxMAParameter.DisplayMember = "Beschreibung" Me.ComboboxMAParameter.ValueMember = "Mitarbeiter_AuswertungsparameterNr" Catch ex As Exception End Try Else Me.ComboboxMAParameter.Visible = False End If Me.On_Load = False Try For Each dr As DataRow In Me.auswertungen.MitarbeiterAuswertungsparameter.Rows If dr.Item("Beschreibung") = Bez Then Me.ComboboxMAParameter.SelectedValue = dr.Item(0) Me.ComboboxMAParameter_SelectedIndexChanged(sender, e) End If Next Catch End Try End Sub Private Sub ComboboxMAParameter_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboboxMAParameter.SelectedIndexChanged If Me.On_Load = True Then Exit Sub Dim wheremod As Boolean = False Me.WhereModified = False Me.PictureBox1.Visible = False Try Dim s As String = "" For Each dr As DataRow In Me.auswertungen.MitarbeiterAuswertungsparameter.Rows If dr.Item("Mitarbeiter_AuswertungsparameterNr") = Me.ComboboxMAParameter.SelectedValue Then s = dr.Item("Parameterdaten") Me.txtTitel1.Text = dr.Item("Titelzeile1") Me.txtTitel2.Text = dr.Item("Titelzeile2") Me.checkboxprintparam.Checked = dr.Item("ParamPrint") If dr.Item("SQLWhere").ToString <> "" Then Me.SQLWhere = dr.Item("SQLWhere").ToString Me.WhereModified = True wheremod = True Me.PictureBox1.Visible = True End If End If Next If s = "" Then Exit Sub Me.Init_Params(False) Dim grp() As String = s.Split("|") Dim andor As String = grp(0) Dim param As String = grp(1) Dim op As String = grp(2) Dim val As String = grp(3) Dim tmpvalue() As String Dim ValueItem() As String Dim tmpparam() As String Dim ParamItem() As String Dim tmpop() As String Dim opItem() As String Dim tmpandor() As String Dim andorItem() As String Dim tmpcbidx As Integer Dim vals() As String Dim CTLIndex As Integer Dim CTLAndOr As String Dim CTLParam As String Dim CTLOP As String Dim CTLValue As String Dim CTLSplit() As String Dim SelIndexSet As Boolean Dim i As Integer For i = 6 To 0 Step -1 tmpvalue = val.ToString.Split(";") If tmpvalue(i).ToString.Length > 2 Then ValueItem = tmpvalue(i).Split("~") CTLIndex = ValueItem(0) CTLValue = ValueItem(1) tmpparam = param.Split(";") ParamItem = tmpparam(i).Split("~") CTLParam = ParamItem(1) tmpop = op.Split(";") opItem = tmpop(i).Split("~") CTLOP = opItem(1) If i > 1 Then tmpandor = andor.Split(";") andorItem = tmpandor(i - 1).Split("~") CTLAndOr = andorItem(1) End If 'Parameter Dim l As New List(Of Control) Me.GetControl(Me, "cbparam" + Trim(Str(CTLIndex)), l) Dim x As ComboBox = l(0) SelIndexSet = False Dim ii As Integer = 0 For ii = 0 To x.Items.Count - 1 If x.Items(ii).ToString = CTLParam Then x.SelectedIndex = ii SelIndexSet = True End If Next If SelIndexSet = False Then x.Text = CTLParam 'Operator l.Clear() Me.GetControl(Me, "cbop" + Trim(Str(CTLIndex)), l) x = l(0) SelIndexSet = False For ii = 0 To x.Items.Count - 1 If x.Items(ii).ToString = CTLOP Then x.SelectedIndex = ii SelIndexSet = True End If Next If SelIndexSet = False Then x.Text = CTLOP 'value l.Clear() Me.GetControl(Me, "cbvalue" + Trim(Str(CTLIndex)), l) x = l(0) SelIndexSet = False For ii = 0 To x.Items.Count - 1 If x.Items(ii).ToString = CTLValue Then x.SelectedIndex = ii SelIndexSet = True End If Next If SelIndexSet = False Then x.Text = CTLValue 'andor l.Clear() Me.GetControl(Me, "cbandor" + Trim(Str(CTLIndex)), l) x = l(0) SelIndexSet = False For ii = 0 To x.Items.Count - 1 If x.Items(ii).ToString = CTLAndOr Then x.SelectedIndex = ii SelIndexSet = True End If Next If SelIndexSet = False Then x.Text = CTLAndOr End If Next If wheremod = True Then Me.WhereModified = True Me.PictureBox1.Visible = True End If Catch ex As Exception End Try End Sub Private Sub ComboboxMAParameter_VisibleChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboboxMAParameter.VisibleChanged Me.btnDeleteSavedParam.Visible = Me.ComboboxMAParameter.Visible End Sub Private Sub btnDeleteSavedParam_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeleteSavedParam.Click Me.On_Load = True If Me.ComboboxMAParameter.SelectedIndex = -1 Then Exit Sub Me.auswertungen.Delete_Parameter(Me.ComboboxMAParameter.SelectedValue) 'Me.Init_Params() Me.txtTitel1.Text = Me.TreeAuswertungen.SelectedNode.Text Me.txtTitel2.Text = "" Me.checkboxprintparam.Checked = True If Me.auswertungen.MitarbeiterAuswertungsparameter.Rows.Count > 0 Then Me.ComboboxMAParameter.Visible = True Try Me.ComboboxMAParameter.DataSource = Nothing Me.ComboboxMAParameter.DataSource = Me.auswertungen.MitarbeiterAuswertungsparameter Me.ComboboxMAParameter.DisplayMember = "Beschreibung" Me.ComboboxMAParameter.ValueMember = "Mitarbeiter_AuswertungsparameterNr" Me.ComboboxMAParameter.SelectedIndex = -1 Catch ex As Exception End Try Me.On_Load = False Else Me.ComboboxMAParameter.Visible = False End If End Sub Private Sub AlleKnotenSchliessenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AlleKnotenSchliessenToolStripMenuItem.Click Me.TreeAuswertungen.CollapseAll() End Sub Private Sub AlleKnotenÖffnenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AlleKnotenÖffnenToolStripMenuItem.Click Me.TreeAuswertungen.ExpandAll() End Sub '#Region "Datumsfunktionen" ' Private Function CalcDate(ByVal typ As String, ByRef dtfrom As DateTime, ByRef dtto As DateTime) ' Select Case UCase(typ) ' Case "LETZTE WOCHE" ' GetDates(dtfrom, dtto) ' Case "LETZTER MONAT" ' dtfrom = DateAdd(DateInterval.Month, -1, dtfrom) ' dtto = GetLastDayOfMonth(dtfrom) ' dtfrom = GetFirstDayOfMonth(dtfrom) ' Case "LETZTES QUARTAL" ' Dim d As DateTime ' d = DateAdd(DateInterval.Quarter, -1, dtfrom) ' dtfrom = FirstDayOfQuarter(d) ' dtto = LastDayOfQuarter(d) ' Case "LETZTES JAHR" ' dtfrom = DateAdd(DateInterval.Year, -1, dtfrom) ' Dim y As Integer = Year(dtfrom) ' dtfrom = "01.01." + Str(y) ' dtto = "31.12." + Str(y) ' Case "AKTUELLE WOCHE" ' dtfrom = DateAdd(DateInterval.Day, 7, dtfrom) ' GetDates(dtfrom, dtto) ' Case "AKTUELLER MONAT" ' dtfrom = dtfrom ' dtto = GetLastDayOfMonth(dtfrom) ' dtfrom = GetFirstDayOfMonth(dtfrom) ' Case "AKTUELLES QUARTAL" ' Dim d As DateTime ' d = dtfrom ' dtfrom = FirstDayOfQuarter(d) ' dtto = LastDayOfQuarter(d) ' Case "AKTUELLES JAHR" ' Dim y As Integer = Year(dtfrom) ' dtfrom = "01.01." + Str(y) ' dtto = "31.12." + Str(y) ' End Select ' End Function ' Private Sub GetDates(ByRef stDate As Date, ByRef endDate As Date) ' Dim offset As Double = 0 ' Select Case stDate.DayOfWeek ' Case DayOfWeek.Monday : offset = 0 ' Case DayOfWeek.Tuesday : offset = -1 ' Case DayOfWeek.Wednesday : offset = -2 ' Case DayOfWeek.Thursday : offset = -3 ' Case DayOfWeek.Friday : offset = -4 ' Case DayOfWeek.Saturday : offset = -5 ' Case DayOfWeek.Sunday : offset = -6 ' End Select ' endDate = DateAdd(DateInterval.Day, (offset - 1), stDate) ' stDate = DateAdd(DateInterval.Day, -7 + offset, stDate) ' End Sub ' Private Function GetFirstDayOfMonth(ByVal dtDate As Date) As DateTime ' Dim dtFrom As Date = dtDate ' dtFrom = dtFrom.AddDays(-(dtFrom.Day - 1)) ' Return dtFrom ' End Function ' Private Function GetLastDayOfMonth(ByVal dtDate As Date) As DateTime ' Dim dtTo As Date = dtDate ' dtTo = dtTo.AddMonths(1) ' dtTo = dtTo.AddDays(-(dtTo.Day)) ' Return dtTo ' End Function ' Public Function FirstDayOfQuarter(ByVal DateIn As DateTime) _ ' As DateTime ' ' Calculate first day of DateIn quarter, ' ' with quarters starting at the beginning of Jan/Apr/Jul/Oct ' Dim intQuarterNum As Integer = (Month(DateIn) - 1) \ 3 + 1 ' Return DateSerial(Year(DateIn), 3 * intQuarterNum - 2, 1) ' End Function ' Public Function LastDayOfQuarter(ByVal DateIn As Date) As Date ' ' Calculate last day of DateIn quarter, ' ' with quarters ending at the end of Mar/Jun/Sep/Dec ' Dim intQuarterNum As Integer = (Month(DateIn) - 1) \ 3 + 1 ' Return DateSerial(Year(DateIn), 3 * intQuarterNum + 1, 0) ' End Function ' Private Function Formateddate(ByVal dt As DateTime, ByVal start As Boolean) As String ' If start Then ' Return Format(dt, Globals.clsapplication.sReport_Datum_Format.Value) & " 00:00:00" ' Else ' Return Format(dt, Globals.clsapplication.sReport_Datum_Format.Value) & " 23:59:59" ' End If ' End Function '#End Region Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim f As New frmReportDescription f.txtbeschreibung.Text = Me.txtbeschreibung.Text f.ShowDialog() End Sub Private Sub btnEditSQL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEditSQL.Click If Me.WhereModified = False Then Get_SQLWhere() Dim f As New frmEditWhere f.sql = Me.SQLWhere f.ShowDialog() If f.DialogResult = Windows.Forms.DialogResult.OK Then If f.sql <> "" Then Me.SQLWhere = f.sql Me.WhereModified = True Me.PictureBox1.Visible = True Else Me.WhereModified = False Me.PictureBox1.Visible = False End If End If f.Dispose() End Sub Private Sub cbop1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbop1.SelectedIndexChanged, cbop2.SelectedIndexChanged, _ cbop3.SelectedIndexChanged, cbop4.SelectedIndexChanged, cbop5.SelectedIndexChanged, cbop6.SelectedIndexChanged, cbop7.SelectedIndexChanged If Me.On_Load Then Exit Sub Me.WhereModified = False Me.PictureBox1.Visible = False End Sub Private Sub cbvalue1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbvalue1.SelectedIndexChanged, _ cbvalue2.SelectedIndexChanged, cbvalue3.SelectedIndexChanged, cbvalue4.SelectedIndexChanged, cbvalue5.SelectedIndexChanged, cbvalue6.SelectedIndexChanged, cbvalue7.SelectedIndexChanged, _ cbvalue1.TextChanged, cbvalue2.TextChanged, cbvalue3.TextChanged, cbvalue4.TextChanged, cbvalue5.TextChanged, cbvalue6.TextChanged, cbvalue7.TextChanged If Me.On_Load Then Exit Sub Me.WhereModified = False Me.PictureBox1.Visible = False End Sub #Region "Param-Funktionen" Function Get_Param1(inputvalue As String) As String Select Case UCase(inputvalue) Case "@FIRSTOFACTWEEK" Dim Dt As Date = Now.AddDays(-Now.DayOfWeek).ToShortDateString Dt = Dt.AddDays(1) Return Dt.ToShortDateString Case "@LASTOFACTWEEK" Dim Dt As Date = Now.AddDays(-Now.DayOfWeek + 6).ToShortDateString Dt = Dt.AddDays(1) Return Dt.ToShortDateString Case "@FIRSTOFACTMONTH" Return GetFirstDayOfMonth(Now).ToShortDateString Case "@LASTOFACTMONTH" Dim dt As String = Now.ToShortDateString Return GetLastDayOfMonth(dt).ToShortDateString Case "@FIRSTOFACTQUARTER" Return GetFirstDayOfQuarter(Now).ToShortDateString Case "@LASTOFACTQUARTER" Return GetLastDayOfQuarter(Now).ToShortDateString Case "@FIRSTOFACTYEAR" Return FirstDayOfYear(Now) Case "@LASTOFACTYEAR" Return LastDayOfYear(Now) Case "@FIRSTOFLASTWEEK" Dim Dt As Date Dt = Now.AddDays(-7) Dt = Dt.AddDays(-Now.DayOfWeek).ToShortDateString Dt = Dt.AddDays(1) Return Dt.ToShortDateString Case "@LASTOFLASTWEEK" Dim Dt As Date Dt = Now.AddDays(-7) Dt = Dt.AddDays(-Now.DayOfWeek + 6).ToShortDateString Dt = Dt.AddDays(1) Return Dt.ToShortDateString Case "@FIRSTOFLASTMONTH" Return GetFirstDayOfMonth(Now.AddMonths(-1)).ToShortDateString Case "@LASTOFLASTMONTH" Return GetLastDayOfMonth(Now.AddMonths(-1)).ToShortDateString Case "@FIRSTOFLASTQUARTER" Return GetFirstDayOfQuarter(Now.AddMonths(-3)).ToShortDateString Case "@LASTOFLASTQUARTER" Return GetLastDayOfQuarter(Now.AddMonths(-3)).ToShortDateString Case "@FIRSTOFLASTYEAR" Return FirstDayOfYear(Now.AddYears(-1)) Case "@LASTOFLASTYEAR" Return LastDayOfYear(Now.AddYears(-1)) Case "@CURRENTUSER" Return Get_Username() End Select End Function Private Function FirstDayOfYear(ByVal y As DateTime) As DateTime Return New DateTime(y.Year, 1, 1) End Function Private Function LastDayOfYear(ByVal d As DateTime) As DateTime Dim time As New DateTime((d.Year + 1), 1, 1) Return time.AddDays(-1) End Function Public Shared Function GetFirstDayOfQuarter(ByVal originalDate As DateTime) As DateTime Return AddQuarters(New DateTime(originalDate.Year, 1, 1), GetQuarter(originalDate) - 1) End Function Public Shared Function GetLastDayOfQuarter(ByVal originalDate As DateTime) As DateTime Return AddQuarters(New DateTime(originalDate.Year, 1, 1), GetQuarter(originalDate)).AddDays(-1) End Function Public Shared Function AddQuarters(ByVal originalDate As DateTime, ByVal quarters As Integer) As DateTime Return originalDate.AddMonths(quarters * 3) End Function Public Shared Function GetQuarter(ByVal fromDate As DateTime) As Integer Return ((fromDate.Month - 1) \ 3) + 1 End Function Private Function GetFirstDayOfMonth(ByVal dtDate As DateTime) As DateTime Dim dtFrom As DateTime = dtDate dtFrom = dtFrom.AddDays(-(dtFrom.Day - 1)) Return dtFrom End Function Private Function GetLastDayOfMonth(ByVal dtDate As DateTime) As DateTime Dim dtTo As New DateTime(dtDate.Year, dtDate.Month, 1) dtTo = dtTo.AddMonths(1) dtTo = dtTo.AddDays(-(dtTo.Day)) Return dtTo End Function #End Region Private Sub TSBtnSuche_Click(sender As Object, e As EventArgs) Handles TSBtnSuche.Click auswertungen.Init_Search() Try Me.TreeAuswertungen.SelectedNode = auswertungen.SearchNode(Me.TreeAuswertungen, Me.ToolStriptxtSuche.Text) Me.TreeAuswertungen.SelectedNode.EnsureVisible() Catch End Try End Sub Private Sub TSBtnNext_Click(sender As Object, e As EventArgs) Handles TSBtnNext.Click Me.TreeAuswertungen.SelectedNode = auswertungen.FindNextNode(Me.TreeAuswertungen) End Sub Private Sub ToolStriptxtSuche_KeyDown(sender As Object, e As KeyEventArgs) Handles ToolStriptxtSuche.KeyDown If e.KeyCode = Keys.Enter Then TSBtnSuche_Click(sender, e) End Sub Private Sub TSBtnPrevious_Click(sender As Object, e As EventArgs) Handles TSBtnPrevious.Click Me.TreeAuswertungen.SelectedNode = auswertungen.FindPrevNode(Me.TreeAuswertungen) End Sub Private Sub TSBtnFirst_Click(sender As Object, e As EventArgs) Handles TSBtnFirst.Click Me.TreeAuswertungen.SelectedNode = auswertungen.FindFirst(Me.TreeAuswertungen) End Sub Private Sub TSBtnLast_Click(sender As Object, e As EventArgs) Handles TSBtnLast.Click Me.TreeAuswertungen.SelectedNode = auswertungen.FindLastNode(Me.TreeAuswertungen) End Sub Private Sub TSBtnFilterAufheben_Click(sender As Object, e As EventArgs) Handles TSBtnFilterAufheben.Click Me.ToolStriptxtSuche.Text = "" auswertungen.Init_Search() End Sub End Class