Imports DevExpress.XtraEditors Imports DevExpress.XtraEditors.Repository Imports DigitalData.Modules.Database Public Class frmSQLDesigner_old 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 Sub New() ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Public Class Placeholders Public Property RecordId As Integer Public Property ParentRecordId As Integer Public Property FormId As Integer End Class Public Property SQLCommand() As String Get Return SQL_COMMANDTextBox.Text End Get Set(value As String) SQL_COMMANDTextBox.Text = value End Set End Property Public Property ConnectionID Public AutoAttributID Public Property DesignType As String Private IndicesMan As New List(Of Indice_Man)() Public Class Indice_Man Public Property ID() As Integer Public Property Indice_name() As String End Class Private Sub frmSQLDesigner_Load(sender As Object, e As EventArgs) Handles Me.Load Dim oSQL bsiInfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never If DesignType = "GI_ATTRIBUTE_MAN" Then EnDisable_Man_Attribute(False) Else EnDisable_Man_Attribute(True) oSQL = "Select * From TBDD_INDEX_MAN WHERE ACTIVE = 1" Dim oDT = My.DatabaseECM.GetDatatable(oSQL) cmbAttributeMan.DataSource = oDT cmbAttributeMan.DisplayMember = oDT.Columns("WD_INDEX").ColumnName oSQL = $"Select * From TBDD_INDEX_AUTOM WHERE ACTIVE = 1 AND GUID <> {AutoAttributID}" Dim oDTAA = My.DatabaseECM.GetDatatable(oSQL) cmbAttributeAuto.DataSource = oDTAA cmbAttributeAuto.DisplayMember = oDTAA.Columns("INDEXNAME").ColumnName EnDisable_Auto_Attribute(True) End If If DesignType = "SQL_OVERVIEW" Then cmbConnection.Enabled = False 'btnShowConnections.Enabled = False Else cmbConnection.Enabled = True oSQL = "SELECT GUID, Bezeichnung FROM TBDD_CONNECTION WHERE AKTIV = 1" Dim oDT As DataTable = My.DatabaseECM.GetDatatable(oSQL) cmbConnection.DataSource = oDT cmbConnection.DisplayMember = oDT.Columns("Bezeichnung").ColumnName cmbConnection.ValueMember = oDT.Columns("GUID").ColumnName IndicesMan.Add(New Indice_Man() With {.ID = 1, .Indice_name = "Manually"}) 'bind the lookup editor to the list Dim oLU As RepositoryItemLookUpEdit = RepositoryItemLookUpEdit3 oLU.DataSource = oDT oLU.DisplayMember = oDT.Columns("Bezeichnung").ColumnName oLU.ValueMember = oDT.Columns("GUID").ColumnName ' Enable the "best-fit" functionality mode in which columns have proportional widths and the popup window is resized to fit all the columns. oLU.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup ' Specify the dropdown height. oLU.DropDownRows = oDT.Rows.Count ' Enable the automatic completion feature. In this mode, when the dropdown is closed, ' the text in the edit box is automatically completed if it matches a DisplayMember field value of one of dropdown rows. oLU.SearchMode = DevExpress.XtraEditors.Controls.SearchMode.AutoComplete ' Specify the column against which an incremental search is performed in SearchMode.AutoComplete and SearchMode.OnlyInPopup modes oLU.AutoSearchColumnIndex = 1 If Not IsNothing(ConnectionID) Then If IsNumeric(ConnectionID) Then cmbConnection.SelectedValue = ConnectionID End If End If 'btnShowConnections.Enabled = True End If End Sub 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 Sub EnDisable_Man_Attribute(bool As Boolean) lblAttributeMan.Visible = bool cmbAttributeMan.Visible = bool btnAddAttributeMan.Visible = bool End Sub Sub EnDisable_Auto_Attribute(bool As Boolean) lblAttributeAuto.Visible = bool cmbAttributeAuto.Visible = bool btnAddAttributeAuto.Visible = bool End Sub Private Sub CheckForPlaceholders() Dim text As String = SQL_COMMANDTextBox.Text dgvPlaceholders.Rows.Clear() Dim patterns As List(Of clsPatterns.Pattern) = clsPatterns.GetAllPatterns(text) For Each pattern In patterns dgvPlaceholders.Rows.Add({pattern.ToString, ""}) Next '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 InsertAtSelection(str As String) Dim altePosition As Integer = SQL_COMMANDTextBox.SelectionStart() SQL_COMMANDTextBox.Text = SQL_COMMANDTextBox.Text.Insert(altePosition, str) SQL_COMMANDTextBox.SelectionStart = altePosition + str.Length End Sub Private Sub btnAddAttributeMan_Click(sender As Object, e As EventArgs) Handles btnAddAttributeMan.Click If cmbAttributeMan.SelectedIndex <> -1 Then Dim value As String = clsPatterns.WrapPatternValue(clsPatterns.PATTERN_ATTR_MAN, cmbAttributeMan.Text) InsertAtSelection(value) End If End Sub Private Sub btnAddStatic_Click(sender As Object, e As EventArgs) Handles btnAddStatic.Click If cmbStatic.SelectedIndex <> -1 Then Dim value As String = clsPatterns.WrapPatternValue(clsPatterns.PATTERN_INT, cmbStatic.Text) InsertAtSelection(value) End If End Sub Private Sub btnAddUser_Click(sender As Object, e As EventArgs) Handles btnAddUser.Click If cmbUser.SelectedIndex <> -1 Then Dim value As String = clsPatterns.WrapPatternValue(clsPatterns.PATTERN_USER, cmbUser.Text) InsertAtSelection(value) End If End Sub Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick Try 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 Dim pattern As New clsPatterns.Pattern(placeholder) query = clsPatterns.ReplacePattern(query, pattern.Type, replacement) Else MsgBox("Bitte geben Sie für den Platzhalter " & placeholder & " einen Wert an!", MsgBoxStyle.Exclamation, "Fehlende Platzhalter Ersetzung") Exit Sub End If Next 'MsgBox(cmbConnection.SelectedValue) Dim oconString = My.DatabaseECM.Get_ConnectionStringforID(cmbConnection.SelectedValue) 'MsgBox(oconString) Dim decryptedConString = MSSQLServer.DecryptConnectionString(oconString) 'MsgBox(decryptedConString) Dim oDT = My.DatabaseECM.GetDatatableWithConnection(query, decryptedConString) If oDT IsNot Nothing Then GridControl1.DataSource = Nothing GridControl1.DataSource = oDT End If Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try End Sub Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick SQLCommand = SQL_COMMANDTextBox.Text ConnectionID = cmbConnection.SelectedValue Me.Close() End Sub Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click End Sub End Class