You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
502 lines
16 KiB
502 lines
16 KiB
Imports MySql
|
|
Imports MySql.Data.MySqlClient
|
|
Imports System.Data.OleDb
|
|
Imports PropertyGridEx
|
|
Imports System.IO
|
|
Public Class Form1
|
|
Dim sqlfilename As String
|
|
Dim reportfilename As String
|
|
|
|
Dim ReportCollection As New Collection
|
|
Dim ParameterColleation As New Collection
|
|
|
|
Private Sub BeendenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BeendenToolStripMenuItem.Click
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Sub DatenAktualisierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DatenAktualisierenToolStripMenuItem.Click
|
|
Process.Start(My.Settings.Dataconv)
|
|
End Sub
|
|
|
|
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
Me.Treereport.Nodes.Clear()
|
|
Dim s As String
|
|
FileOpen(1, My.Settings.ReportList, OpenMode.Input)
|
|
While Not EOF(1)
|
|
Input(1, s)
|
|
ReportCollection.Add(New Report(s))
|
|
End While
|
|
FileClose(1)
|
|
|
|
Dim tnparent As New Syncfusion.Windows.Forms.Tools.TreeNodeAdv
|
|
tnparent.Text = "Auswertungen"
|
|
tnparent.Tag = -1
|
|
Treereport.Nodes.Add(tnparent)
|
|
Dim i As Integer
|
|
For i = 1 To ReportCollection.Count
|
|
Dim xreport As Report = ReportCollection(i)
|
|
Dim tn As New Syncfusion.Windows.Forms.Tools.TreeNodeAdv
|
|
tn.Text = xreport.Reportname
|
|
tnparent.Nodes.Add(tn)
|
|
Next
|
|
Me.Treereport.ExpandAll()
|
|
'Fill_Parameter()
|
|
|
|
End Sub
|
|
|
|
Sub Fill_Parameter()
|
|
|
|
FileOpen(1, sqlfilename, OpenMode.Input)
|
|
Dim s As String
|
|
ParameterColleation.Clear()
|
|
Try
|
|
While Not EOF(1)
|
|
Input(1, s)
|
|
Try
|
|
If Microsoft.VisualBasic.Left(s, 1) = "#" Then
|
|
ParameterColleation.Add(New Reportparameter(s))
|
|
End If
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End While
|
|
Catch ex As Exception
|
|
'MsgBox(ex.Message)
|
|
Finally
|
|
FileClose(1)
|
|
End Try
|
|
|
|
|
|
Properties.ShowCustomProperties = True
|
|
Properties.Item.Clear()
|
|
Dim defaultvalue As String
|
|
|
|
If ParameterColleation.Count > 0 Then
|
|
For i As Integer = 1 To ParameterColleation.Count
|
|
Dim param As Reportparameter = ParameterColleation(i)
|
|
If param.Parametertype = "Table" Then
|
|
Dim splitter() As String
|
|
splitter = param.ParameterDefault.ToString.Split(";")
|
|
Properties.Item.Add(param.Parameterbezeichnung, splitter(0), False, "Tabellenauswahl", "Tabellenauswahl", True)
|
|
Properties.Item(Properties.Item.Count - 1).Datasource = splitter
|
|
Properties.Item(Properties.Item.Count - 1).IsDropdownResizable = False
|
|
|
|
Dim Languages As String() = New String() {"Ja", "Nein"}
|
|
'Properties.Item.Add("Array of strings", Languages(0), False, "Databinding", "This is a UITypeEditor that implement a listbox", True)
|
|
'Properties.Item(Properties.Item.Count - 1).Datasource = Languages
|
|
'Properties.Item(Properties.Item.Count - 1).IsDropdownResizable = True
|
|
Else
|
|
Select Case param.ParameterDefault
|
|
Case "now"
|
|
Properties.Item.Add(param.Parameterbezeichnung, New Date(Today.Ticks), False, "Parameter", "Datum", True)
|
|
Case Else
|
|
defaultvalue = param.ParameterDefault
|
|
If IsNumeric(defaultvalue) Then
|
|
Properties.Item.Add(param.Parameterbezeichnung, defaultvalue, False, "Parameter", "Ganzzahl", True)
|
|
|
|
Else
|
|
Select Case defaultvalue
|
|
Case "currentyear"
|
|
Properties.Item.Add(param.Parameterbezeichnung, Year(Now), False, "Parameter", "Jahreszahl", True)
|
|
Case "lastyear"
|
|
Properties.Item.Add(param.Parameterbezeichnung, Year(Now) - 1, False, "Parameter", "Jahreszahl", True)
|
|
Case "firstofcurrentyear"
|
|
Dim dt As Date = "01.01." + Year(Now).ToString
|
|
Properties.Item.Add(param.Parameterbezeichnung, New Date(dt.Ticks), False, "Parameter", "Datum", True)
|
|
Case "lastofcurrentyear"
|
|
Dim dt As Date = "31.12." + Year(Now).ToString
|
|
Properties.Item.Add(param.Parameterbezeichnung, New Date(dt.Ticks), False, "Parameter", "Datum", True)
|
|
Case Else
|
|
Properties.Item.Add(param.Parameterbezeichnung, defaultvalue, False, "Parameter", "Text", True)
|
|
End Select
|
|
End If
|
|
End Select
|
|
End If
|
|
|
|
'Select Case UCase(param.Parametertype)
|
|
' Case "DATETIME"
|
|
' Properties.Item.Add(param.Parameterbezeichnung, New Date(Today.Ticks), False, "Parameter", "Datum", True)
|
|
' Case "INT"
|
|
' Properties.Item.Add(param.Parameterbezeichnung, Year(Now), False, "Parameter", "Ganzzahl", True)
|
|
|
|
' Case Else
|
|
' MsgBox(param.Parametertype)
|
|
'End Select
|
|
Next
|
|
End If
|
|
With Properties
|
|
'.ShowCustomProperties = True
|
|
'.Item.Clear()
|
|
'.Item.Add("My Integer", 100, False, "Simple properties", "This is an integer", True)
|
|
'.Item.Add("My Date", New Date(Today.Ticks), False, "Simple properties", "This is point class", True)
|
|
.Refresh()
|
|
End With
|
|
|
|
End Sub
|
|
|
|
Sub get_filenames()
|
|
For i As Integer = 1 To ReportCollection.Count
|
|
Dim rc As Report = ReportCollection(i)
|
|
If rc.Reportname = Me.Treereport.SelectedNode.Text Then
|
|
sqlfilename = My.Settings.SQLDir
|
|
If Microsoft.VisualBasic.Right(sqlfilename, 1) <> "\" Then sqlfilename = sqlfilename + "\"
|
|
sqlfilename = sqlfilename + rc.sqlfile
|
|
reportfilename = My.Settings.ReportDir
|
|
If Microsoft.VisualBasic.Right(reportfilename, 1) <> "\" Then reportfilename = reportfilename + "\"
|
|
reportfilename = reportfilename + rc.reportfile
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
|
If check_MySQL() Then
|
|
Cursor = Cursors.WaitCursor
|
|
Show_Report()
|
|
Cursor = Cursors.Default
|
|
Exit Sub
|
|
Else
|
|
MsgBox("MySQL konnte nicht gestartet werden.")
|
|
Exit Sub
|
|
End If
|
|
|
|
get_filenames()
|
|
|
|
MsgBox(Properties.Item(1).Value)
|
|
'Dim cpd As CustomProperty.CustomPropertyDescriptor = TryCast(e.ChangedItem.PropertyDescriptor, CustomProperty.CustomPropertyDescriptor)
|
|
|
|
End Sub
|
|
|
|
Public Function check_MySQL() As Boolean
|
|
Dim SQLconnect As New MySqlConnection
|
|
SQLconnect.ConnectionString = My.Settings.mysqlConnectionstring
|
|
Try
|
|
SQLconnect.Open()
|
|
SQLconnect.Close()
|
|
Return True
|
|
Catch
|
|
Start_MySQL()
|
|
Try
|
|
SQLconnect.Open()
|
|
SQLconnect.Close()
|
|
Return True
|
|
Catch ex As Exception
|
|
Return False
|
|
End Try
|
|
End Try
|
|
|
|
End Function
|
|
|
|
Public Function Start_MySQL()
|
|
Process.Start(My.Settings.StartMySQL)
|
|
Dim dt As DateTime = Now
|
|
dt = dt.AddSeconds(My.Settings.StartWaitSeconds)
|
|
While Now < dt
|
|
Application.DoEvents()
|
|
End While
|
|
End Function
|
|
|
|
Public Function Stop_MySQL()
|
|
Process.Start(My.Settings.StopMySQL)
|
|
Dim dt As DateTime = Now
|
|
dt = dt.AddSeconds(My.Settings.StartWaitSeconds)
|
|
While Now < dt
|
|
Application.DoEvents()
|
|
End While
|
|
|
|
End Function
|
|
Private Sub Treereport_AfterSelect(sender As Object, e As EventArgs) Handles Treereport.AfterSelect
|
|
Try
|
|
get_filenames()
|
|
Fill_Parameter()
|
|
Catch
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
|
|
Sub Show_Report()
|
|
Dim SQL As String = ""
|
|
Dim export_filename As String
|
|
Dim report As New FastReport.Report
|
|
If Not File.Exists(reportfilename) Then
|
|
Dim tmp As String
|
|
tmp = reportfilename
|
|
reportfilename = My.Settings.ReportDir
|
|
If Microsoft.VisualBasic.Right(reportfilename, 1) <> "\" Then reportfilename = reportfilename + "\empty.frx"
|
|
FileCopy(reportfilename, tmp)
|
|
reportfilename = tmp
|
|
End If
|
|
export_filename = Path.GetFileName(reportfilename)
|
|
report.Load(reportfilename)
|
|
If Not File.Exists(sqlfilename) Then
|
|
MsgBox(sqlfilename + " fehlt.", vbExclamation)
|
|
Exit Sub
|
|
End If
|
|
Dim fs As FileStream = New FileStream(sqlfilename, FileMode.Open)
|
|
|
|
|
|
Dim sr As StreamReader = New StreamReader(fs)
|
|
Dim s As String = ""
|
|
Do While sr.Peek() >= 0
|
|
s = sr.ReadLine
|
|
If Microsoft.VisualBasic.Left(s, 1) = "#" Then s = ""
|
|
SQL = SQL + " " + vbCrLf + s
|
|
Loop
|
|
sr.Close()
|
|
fs.Close()
|
|
|
|
For i = 1 To ParameterColleation.Count
|
|
Dim r As Reportparameter = ParameterColleation(i)
|
|
Dim pv As String = Properties.Item(i - 1).Value
|
|
If r.Parametertype = "datetime" Then
|
|
Dim dt As Date = pv
|
|
pv = dt.ToString("yyyy-MM-dd")
|
|
report.SetParameterValue(r.Parameterbezeichnung, dt.ToString("dd.MM.yyyy"))
|
|
export_filename = pv + "_" + export_filename
|
|
Else
|
|
report.SetParameterValue(r.Parameterbezeichnung, Properties.Item(i - 1).Value.ToString)
|
|
export_filename = pv + "_" + export_filename
|
|
|
|
End If
|
|
SQL = SQL.Replace(r.Parametername, pv)
|
|
Next
|
|
export_filename = My.Settings.ExportPath + export_filename + ".pdf"
|
|
'MsgBox(SQL)
|
|
|
|
Dim splitter() As String
|
|
splitter = SQL.Split("##SQL##")
|
|
|
|
Dim ds As New DataSet
|
|
|
|
|
|
Dim SQLconnect As New MySqlConnection
|
|
SQLconnect.ConnectionString = My.Settings.mysqlConnectionstring
|
|
SQLconnect.Open()
|
|
|
|
Dim da As New MySqlDataAdapter("", SQLconnect)
|
|
Dim sqlcmd As New MySqlCommand
|
|
|
|
sqlcmd.Connection = SQLconnect
|
|
sqlcmd.CommandType = CommandType.Text
|
|
Dim tblcounter As Integer = 0
|
|
If splitter.Length > 1 Then
|
|
Dim i As Integer
|
|
For i = 0 To splitter.Length - 1
|
|
If splitter(i).ToString.Length > 10 Then
|
|
sqlcmd.CommandText = splitter(i)
|
|
da.SelectCommand = sqlcmd
|
|
tblcounter = tblcounter + 1
|
|
da.Fill(ds, "Daten_" + tblcounter.ToString)
|
|
End If
|
|
Next
|
|
Else
|
|
sqlcmd.CommandText = SQL
|
|
da.SelectCommand = sqlcmd
|
|
da.Fill(ds, "Daten")
|
|
End If
|
|
sqlcmd.Dispose()
|
|
SQLconnect.Close()
|
|
report.RegisterData(ds)
|
|
If tblcounter > 0 Then
|
|
Dim i As Integer
|
|
For i = 1 To tblcounter
|
|
report.GetDataSource("Daten_" + i.ToString).Enabled = True
|
|
Next i
|
|
Else
|
|
report.GetDataSource("Daten").Enabled = True
|
|
End If
|
|
report.Preview = PreviewControl1
|
|
report.Prepare()
|
|
If CheckBox4.Checked Then
|
|
Dim export As FastReport.Export.Pdf.PDFExport = New FastReport.Export.Pdf.PDFExport()
|
|
report.Export(export, export_filename)
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
If Me.CheckBox1.Checked = False Then
|
|
report.ShowPrepared()
|
|
Else
|
|
report.Design()
|
|
End If
|
|
If CheckBox2.Checked Then
|
|
Dim f As New frmreport
|
|
report.Preview = f.PreviewControl1
|
|
report.ShowPrepared()
|
|
f.Show()
|
|
Me.PreviewControl1.Visible = False
|
|
Else
|
|
Me.PreviewControl1.Visible = True
|
|
|
|
End If
|
|
|
|
Me.DataGridView1.DataSource = Nothing
|
|
Me.DataGridView1.DataSource = ds.Tables(0)
|
|
|
|
If CheckBox3.Checked Then
|
|
|
|
Me.DataGridView1.Visible = True
|
|
Me.PreviewControl1.Visible = False
|
|
Else
|
|
Me.DataGridView1.Visible = False
|
|
Me.PreviewControl1.Visible = True
|
|
End If
|
|
|
|
' Me.PreviewControl1.Report = report
|
|
|
|
' report.Design()
|
|
|
|
' f.DesignerControl1.Report = report
|
|
' f.MdiParent = Parentform
|
|
' f.Show()
|
|
'End Sub
|
|
End Sub
|
|
|
|
Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged
|
|
If CheckBox3.Checked Then
|
|
Me.DataGridView1.Visible = True
|
|
Me.PreviewControl1.Visible = False
|
|
Else
|
|
Me.DataGridView1.Visible = False
|
|
Me.PreviewControl1.Visible = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub Properties_Click(sender As Object, e As EventArgs) Handles Properties.Click
|
|
|
|
End Sub
|
|
|
|
Private Sub Properties_KeyDown(sender As Object, e As KeyEventArgs) Handles Properties.KeyUp
|
|
If e.KeyCode Then Me.Button1_Click(sender, e)
|
|
End Sub
|
|
|
|
|
|
End Class
|
|
|
|
Public Class Report
|
|
Dim m_reportname As String
|
|
Property Reportname As String
|
|
Get
|
|
Return m_reportname
|
|
End Get
|
|
Set(value As String)
|
|
m_reportname = value
|
|
End Set
|
|
End Property
|
|
|
|
Dim m_sqlfile As String
|
|
Property sqlfile As String
|
|
Get
|
|
Return m_sqlfile
|
|
End Get
|
|
Set(value As String)
|
|
m_sqlfile = value
|
|
End Set
|
|
End Property
|
|
|
|
Dim m_reportfile As String
|
|
Property reportfile As String
|
|
Get
|
|
Return m_reportfile
|
|
End Get
|
|
Set(value As String)
|
|
m_reportfile = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(ByVal inputstring As String)
|
|
Dim splitter() As String
|
|
splitter = inputstring.Split(";")
|
|
Me.Reportname = splitter(0)
|
|
Me.sqlfile = splitter(1)
|
|
Me.reportfile = splitter(2)
|
|
End Sub
|
|
End Class
|
|
|
|
Public Class Reportparameter
|
|
Dim m_parametername As String
|
|
Property Parametername As String
|
|
Get
|
|
Return m_parametername
|
|
End Get
|
|
Set(value As String)
|
|
m_parametername = value
|
|
End Set
|
|
End Property
|
|
Dim m_Parameterbezeichnung As String
|
|
Property Parameterbezeichnung As String
|
|
Get
|
|
Return m_Parameterbezeichnung
|
|
End Get
|
|
Set(value As String)
|
|
m_Parameterbezeichnung = value
|
|
End Set
|
|
End Property
|
|
Dim m_Parametertype As String
|
|
Property Parametertype As String
|
|
Get
|
|
Return m_Parametertype
|
|
End Get
|
|
Set(value As String)
|
|
m_Parametertype = value
|
|
End Set
|
|
End Property
|
|
Dim m_Parameterdefault As String
|
|
Property ParameterDefault As String
|
|
Get
|
|
Return m_Parameterdefault
|
|
End Get
|
|
Set(value As String)
|
|
m_Parameterdefault = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(ByVal Inputstring As String)
|
|
Dim splitter() As String
|
|
splitter = Inputstring.Split(":")
|
|
Me.Parametername = splitter(0)
|
|
Me.Parameterbezeichnung = splitter(1)
|
|
Me.Parametertype = splitter(2)
|
|
Try
|
|
Me.ParameterDefault = splitter(3)
|
|
Catch
|
|
Me.ParameterDefault = ""
|
|
End Try
|
|
|
|
End Sub
|
|
End Class
|
|
''' <summary>
|
|
''' A Simple Class to test BrowsableAttribute usage
|
|
''' </summary>
|
|
''' <remarks></remarks>
|
|
<Serializable()> _
|
|
Public Class MyOwnClass
|
|
Private iValue As Integer = 0
|
|
Private sText As String
|
|
Public Sub New()
|
|
|
|
End Sub
|
|
Public Sub New(ByVal Text As String, ByVal Value As Integer)
|
|
sText = Text
|
|
iValue = Value
|
|
End Sub
|
|
Public Property Value() As Integer
|
|
Get
|
|
Return iValue
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
iValue = value
|
|
End Set
|
|
End Property
|
|
Public Property Text() As String
|
|
Get
|
|
Return sText
|
|
End Get
|
|
Set(ByVal value As String)
|
|
sText = value
|
|
End Set
|
|
End Property
|
|
End Class
|
|
|