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.

171 lines
6.2 KiB

Imports System.IO
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Public Class frmQuery
Dim q As New TKB.VV.DB.clsQueries
Dim queries As New DataTable
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
Me.Close()
End Sub
Private Sub TSBtnRun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnRun.Click
Dim q As String = Me.txtQuery.Text
q = UCase(q)
If q.IndexOf("INSERT ") > -1 Or q.IndexOf("UPDATE ") > -1 Or q.IndexOf("ALTER ") > -1 Or q.IndexOf("DROP ") > -1 Or q.IndexOf("TRUNCATE ") > -1 Or q.IndexOf("EXEC ") > -1 Or _
q.IndexOf("EXECUTE ") > -1 Or q.IndexOf("CREATE ") > -1 Or q.IndexOf("WRITETEXT ") > -1 Or q.IndexOf("RUN ") > -1 Or q.IndexOf("DEL ") > -1 Or q.IndexOf("DELETE ") > -1 Then
MsgBox("Das Query enthält ein unzulässiges Statement und kann nicht ausgeführt werden.", MsgBoxStyle.Critical)
Exit Sub
End If
Run_Query()
End Sub
Private Sub Run_Query()
Try
Dim qr As New SqlDataAdapter(Me.txtQuery.Text, Globals.sConnectionString)
Dim dsi As New DataSet()
Me.Cursor = Cursors.WaitCursor
dsi.Tables.Clear()
qr.Fill(dsi, "Daten")
Me.C1Daten.DataSource = Nothing
Try
Me.C1Daten.DataSource = dsi.Tables(0)
Me.C1Daten.DataMember = dsi.Tables(0).TableName
Catch
End Try
Me.Cursor = Cursors.Default
If dsi.Tables.Count < 1 Then
MsgBox("Abfrage wurde erfolgreich beendet.")
End If
Catch ex As Exception
Me.Cursor = Cursors.Default
MsgBox(ex.Message)
End Try
End Sub
Private Sub copydata()
Dim strTemp As String 'string to be copied to the clipboard
Dim row As Long
Dim col As C1.Win.C1TrueDBGrid.C1DataColumn
Dim cols As Integer, rows As Long
If Me.C1Daten.SelectedRows.Count > 0 Then
For Each row In Me.C1Daten.SelectedRows
For Each col In Me.C1Daten.Columns
strTemp = strTemp & col.CellText(row) & vbTab
Next
strTemp = strTemp & vbCrLf
Next
System.Windows.Forms.Clipboard.SetDataObject(strTemp, False)
Else
End If
End Sub
Private Sub TSBtnExcelExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnExcelExport.Click
Me.SaveFileDialog1.AddExtension = True
Me.SaveFileDialog1.DefaultExt.Insert(0, "*.xls")
Me.SaveFileDialog1.Filter = "Excel-Dateien|*.xls"
Me.SaveFileDialog1.ShowDialog()
If Me.SaveFileDialog1.FileName <> "" Then
If Me.SaveFileDialog1.FileName.EndsWith(".xls") Or Me.SaveFileDialog1.FileName.EndsWith("XLS") Then
Me.DatatableToExcel(Me.C1Daten.DataSource, Me.SaveFileDialog1.FileName)
Else
Me.C1Daten.ExportToDelimitedFile(Me.SaveFileDialog1.FileName, C1.Win.C1TrueDBGrid.RowSelectorEnum.AllRows, ";", "", "", True, System.Text.Encoding.Default.BodyName)
End If
End If
Exit Sub
End Sub
Public Shared Function DatatableToExcel(ByVal aDataTable As DataTable, ByVal aOutputFilename As String) As Boolean
Application.DoEvents()
Dim f As New FrmFortschritt
Dim app As New Object
Dim wb As New Object
Dim ws As New Object
Try
f.Show()
Application.DoEvents()
f.ProgressBar1.Minimum = 0
f.ProgressBar1.Maximum = aDataTable.Rows.Count
app = CreateObject("Excel.application")
'Dim wb As Object
'Dim ws As Object
' Dim app As New Excel.ApplicationClass
' Dim wb As Excel.Workbook
' Dim ws As Excel.Worksheet
wb = app.Workbooks.add()
'wb = app.Workbooks.Add()
ws = wb.ActiveSheet()
Dim dc As DataColumn
Dim dr As DataRow
Dim colIndex As Integer
Dim rowIndex As Integer
' Columns erstellen
For Each dc In aDataTable.Columns
colIndex += 1
app.Cells(1, colIndex) = dc.ColumnName
Next
' Rows hinzufügen
For Each dr In aDataTable.Rows
f.ProgressBar1.Value = rowIndex
rowIndex += 1
colIndex = 0
For Each dc In aDataTable.Columns
colIndex += 1
app.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName)
Next
Next
ws.Columns.AutoFit()
wb.SaveAs(aOutputFilename)
app.Workbooks.Open(aOutputFilename)
' Excel anzeigen wenn fertig exportiert
app.Visible = True
ws = Nothing
wb = Nothing
app = Nothing
f.Close()
Return True
Catch ex As Exception
f.Close()
MsgBox(ex.Message)
End Try
End Function
Private Sub frmQuery_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
q.cpMainConnectionProvider = Globals.conn
queries = q.SelectAll
For Each dr As DataRow In queries.Rows
Me.TSCBQuery.Items.Add(dr.Item("Bezeichnung"))
Next
End Sub
Private Sub TSCBQuery_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSCBQuery.Click
End Sub
Private Sub TSCBQuery_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TSCBQuery.SelectedIndexChanged
End Sub
Private Sub TSCBQuery_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TSCBQuery.TextChanged
For Each dr As DataRow In queries.Rows
If dr.Item("bezeichnung") = TSCBQuery.Text Then Me.txtQuery.Text = dr.Item("Beschreibung")
Next
End Sub
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
End Class