236 lines
10 KiB
VB.net
236 lines
10 KiB
VB.net
Imports System.Text.RegularExpressions
|
|
Imports Oracle.ManagedDataAccess.Client
|
|
|
|
Public Class frmSQL_DESIGNER
|
|
Private _windreamPM As ClassPMWindream
|
|
|
|
Private Sub TBPM_PROFILE_FINAL_INDEXINGBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs)
|
|
Validate()
|
|
TBPM_PROFILE_FINAL_INDEXINGBindingSource.EndEdit()
|
|
TableAdapterManager.UpdateAll(Me.DD_DMSLiteDataSet)
|
|
|
|
End Sub
|
|
Private Sub frmSQL_FINAL_INDICES_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
Try
|
|
lblSaveFinalIndex.Visible = False
|
|
TBPM_CONNECTIONTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
TBPM_CONNECTIONTableAdapter.Fill(DD_DMSLiteDataSet.TBDD_CONNECTION)
|
|
TBPM_PROFILE_FINAL_INDEXINGTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
|
|
CURRENT_DT_SQL_CONFIG_TABLE = ClassDatabase.Return_Datatable(String.Format("SELECT T.CONNECTION_ID,T1.BEZEICHNUNG AS 'CON_STRING',ISNULL(T.SQL_UEBERPRUEFUNG,'') AS 'SQL_COMMAND' FROM TBPM_PROFILE_CONTROLS T, TBDD_CONNECTION T1 WHERE T.CONNECTION_ID = T1.GUID AND T.GUID = {0}", CURRENT_CONTROL_ID), True)
|
|
|
|
If CURRENT_DT_SQL_CONFIG_TABLE.Rows.Count > 0 Then
|
|
cmbConnection.SelectedValue = CURRENT_DT_SQL_CONFIG_TABLE.Rows(0).Item("CONNECTION_ID")
|
|
cmbConnection.FindStringExact(CURRENT_DT_SQL_CONFIG_TABLE.Rows(0).Item("CON_STRING"))
|
|
SQL_COMMANDTextBox.Text = CURRENT_DT_SQL_CONFIG_TABLE.Rows(0).Item("SQL_COMMAND")
|
|
Else
|
|
SQL_COMMANDTextBox.Text = String.Empty
|
|
End If
|
|
Try
|
|
' Windream instanziieren
|
|
_windreamPM = New ClassPMWindream()
|
|
'Windream initialisieren (Connection, Session, ... aufbauen)
|
|
_windreamPM.Init()
|
|
Catch ex As Exception
|
|
MsgBox("Fehler bei Initialisieren von windream: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Achtung:")
|
|
End Try
|
|
cmbIndexe.Items.Clear()
|
|
Dim indexe = _windreamPM.GetIndicesByObjecttype(CURRENT_OBJECTTYPE)
|
|
If indexe IsNot Nothing Then
|
|
For Each index As String In indexe
|
|
Me.cmbIndexe.Items.Add(index)
|
|
Next
|
|
Me.cmbIndexe.SelectedIndex = -1
|
|
End If
|
|
If CURRENT_DESIGN_TYPE = "INPUT_INDEX" Then
|
|
Dim sql = String.Format("SELECT NAME FROM TBPM_PROFILE_CONTROLS WHERE PROFIL_ID = {0} AND CTRL_TYPE <> 'LBL' ORDER BY NAME", CURRENT_ProfilGUID)
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql, True)
|
|
cmbControls.DataSource = DT
|
|
cmbControls.DisplayMember = DT.Columns(0).ColumnName
|
|
cmbControls.Visible = True
|
|
lblControls.Visible = True
|
|
btnAddControl.Visible = True
|
|
Else
|
|
cmbControls.Visible = False
|
|
lblControls.Visible = False
|
|
btnAddControl.Visible = False
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected Error while loading form: " & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
|
|
End Sub
|
|
Dim CurrentPosition As Integer = 0
|
|
Dim CurrentPlaceholders As New Placeholders()
|
|
Dim CurrentTableType As String
|
|
Dim AtPlaceholderPattern As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}" '"\[%[0-9A-Za-z_-]{1,}\]"
|
|
Public Class Placeholders
|
|
Public Property RecordId As Integer
|
|
Public Property ParentRecordId As Integer
|
|
Public Property FormId As Integer
|
|
End Class
|
|
|
|
Public Property Value() As String
|
|
Get
|
|
Return SQL_COMMANDTextBox.Text
|
|
End Get
|
|
Set(value As String)
|
|
SQL_COMMANDTextBox.Text = value
|
|
End Set
|
|
End Property
|
|
Private Sub SQL_COMMANDTextBox_TextChanged(sender As Object, e As EventArgs) Handles SQL_COMMANDTextBox.TextChanged, SQL_COMMANDTextBox.Click
|
|
CurrentPosition = SQL_COMMANDTextBox.SelectionStart
|
|
|
|
If SQL_COMMANDTextBox.Text.Trim().Count = 0 Then
|
|
dgvPlaceholders.Enabled = False
|
|
Else
|
|
dgvPlaceholders.Enabled = True
|
|
End If
|
|
|
|
CheckForPlaceholders()
|
|
End Sub
|
|
Private Sub CheckForPlaceholders()
|
|
Dim count As Integer = 0
|
|
Dim text As String = Me.Value
|
|
Dim atPlaceholderRegex = New Regex(AtPlaceholderPattern, RegexOptions.IgnoreCase)
|
|
Dim matches As MatchCollection = atPlaceholderRegex.Matches(text)
|
|
|
|
dgvPlaceholders.Rows.Clear()
|
|
|
|
For Each match As Match In matches
|
|
dgvPlaceholders.Rows.Add({match.Value, ""})
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub btnTestSQL_Click(sender As Object, e As EventArgs) Handles btnTestSQL.Click
|
|
Dim query As String = SQL_COMMANDTextBox.Text
|
|
|
|
For Each row As DataGridViewRow In dgvPlaceholders.Rows
|
|
Dim placeholder As String = row.Cells(0).Value
|
|
Dim replacement As String = row.Cells(1).Value
|
|
|
|
' Wenn Ersetzung ausgefüllt wurde, Platzhalter damit ersetzen
|
|
If Not String.IsNullOrEmpty(replacement) Then
|
|
query = query.Replace(placeholder, replacement)
|
|
Else
|
|
MsgBox("Bitte geben Sie für den Platzhalter " & placeholder & " einen Wert an!", MsgBoxStyle.Exclamation, "Fehlende Platzhalter Ersetzung")
|
|
Exit Sub
|
|
End If
|
|
Next
|
|
|
|
Dim ds As DataSet = ExecuteWithConnection(cmbConnection.SelectedValue, query)
|
|
|
|
If ds IsNot Nothing Then
|
|
dgvResult.DataSource = ds.Tables(0)
|
|
End If
|
|
|
|
End Sub
|
|
Private Function ExecuteWithConnection(connectionId As Integer, sql As String) As DataSet
|
|
Try
|
|
|
|
Dim connectionString As String
|
|
|
|
connectionString = ClassDatabase.Get_ConnectionString(connectionId)
|
|
|
|
If connectionString <> "" Then
|
|
|
|
If connectionString.StartsWith("Server=") And connectionString.Contains("Database=") Then
|
|
Dim sqlConnection As SqlClient.SqlConnection
|
|
Dim sqlCommand As SqlClient.SqlCommand
|
|
Dim sqlAdapter As New SqlClient.SqlDataAdapter
|
|
Dim dataset As New DataSet
|
|
|
|
sqlConnection = New SqlClient.SqlConnection(connectionString)
|
|
sqlConnection.Open()
|
|
|
|
sqlCommand = New SqlClient.SqlCommand(sql, sqlConnection)
|
|
|
|
sqlAdapter.SelectCommand = sqlCommand
|
|
sqlAdapter.Fill(dataset)
|
|
|
|
Return dataset
|
|
ElseIf connectionString.Contains("dsn=") Then 'ODBC-Connection
|
|
Dim sqlConnection As Odbc.OdbcConnection
|
|
Dim sqlCommand As Odbc.OdbcCommand
|
|
Dim sqlAdapter As New Odbc.OdbcDataAdapter
|
|
Dim dataset As New DataSet
|
|
|
|
sqlConnection = New Odbc.OdbcConnection(connectionString)
|
|
sqlConnection.Open()
|
|
|
|
sqlCommand = New Odbc.OdbcCommand(sql, sqlConnection)
|
|
|
|
sqlAdapter.SelectCommand = sqlCommand
|
|
sqlAdapter.Fill(dataset)
|
|
|
|
Return dataset
|
|
Else
|
|
If LogErrorsOnly = True Then ClassLogger.Add(" >> It's an Oracle-Connection (ExecuteWithConnection)", False)
|
|
Dim sqlConnection As OracleConnection
|
|
Dim sqlCommand As OracleCommand
|
|
Dim sqlAdapter As New OracleDataAdapter
|
|
Dim dataset As New DataSet
|
|
|
|
sqlConnection = New OracleConnection(connectionString)
|
|
sqlConnection.Open()
|
|
|
|
sqlCommand = New OracleCommand(sql, sqlConnection)
|
|
|
|
sqlAdapter.SelectCommand = sqlCommand
|
|
sqlAdapter.Fill(dataset)
|
|
|
|
Return dataset
|
|
End If
|
|
Else
|
|
MsgBox("Keine gültige ConnectionID", MsgBoxStyle.Exclamation)
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" - Unvorhergesehener Fehler bei TestSQL - Fehler: " & vbNewLine & ex.Message)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei TestSQL:")
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnAddIndex.Click
|
|
If cmbIndexe.SelectedIndex <> -1 Then
|
|
Dim val As String = "[%" & cmbIndexe.Text & "]"
|
|
Dim altePosition As Integer = Me.SQL_COMMANDTextBox.SelectionStart()
|
|
Me.SQL_COMMANDTextBox.Text = Me.SQL_COMMANDTextBox.Text.Insert(altePosition, val)
|
|
Me.SQL_COMMANDTextBox.SelectionStart = altePosition + val.Length
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub btnSaveSQLCommand_Click(sender As Object, e As EventArgs) Handles btnSaveSQLCommand.Click
|
|
If CURRENT_DESIGN_TYPE = "FINAL_INDEX" Then
|
|
TBPM_PROFILE_FINAL_INDEXINGTableAdapter.cmdUpdateSQL(cmbConnection.SelectedValue, SQL_COMMANDTextBox.Text, Environment.UserName, CURRENT_INDEX_ID)
|
|
lblSaveFinalIndex.Visible = True
|
|
lblSaveFinalIndex.Text = "SQL für finalen Index wurde erfolgreich gespeichert! " & Now.ToString
|
|
ElseIf CURRENT_DESIGN_TYPE = "INPUT_INDEX" Then
|
|
Dim command = SQL_COMMANDTextBox.Text
|
|
command = command.Replace("'", "''")
|
|
Dim upd As String = String.Format("UPDATE TBPM_PROFILE_CONTROLS SET CONNECTION_ID = {0} , SQL_UEBERPRUEFUNG = '{1}' WHERE GUID = {2}", cmbConnection.SelectedValue, command, CURRENT_CONTROL_ID)
|
|
If ClassDatabase.Execute_non_Query(upd, True) Then
|
|
lblSaveFinalIndex.Visible = True
|
|
lblSaveFinalIndex.Text = "SQL für Indexdisplay wurde erfolgreich gespeichert! " & Now.ToString
|
|
Else
|
|
lblSaveFinalIndex.Visible = False
|
|
End If
|
|
Me.Value = SQL_COMMANDTextBox.Text
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub btnAddControl_Click(sender As Object, e As EventArgs) Handles btnAddControl.Click
|
|
If cmbControls.SelectedIndex <> -1 Then
|
|
Dim val As String = "[%" & cmbControls.Text & "]"
|
|
Dim altePosition As Integer = Me.SQL_COMMANDTextBox.SelectionStart()
|
|
Me.SQL_COMMANDTextBox.Text = Me.SQL_COMMANDTextBox.Text.Insert(altePosition, val)
|
|
Me.SQL_COMMANDTextBox.SelectionStart = altePosition + val.Length
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub btnShowConnections_Click(sender As Object, e As EventArgs) Handles btnShowConnections.Click
|
|
frmConnection.ShowDialog()
|
|
End Sub
|
|
End Class |