From 48d21617c9db2638acddd24da62787563c086678 Mon Sep 17 00:00:00 2001 From: Developer01 Date: Fri, 23 Aug 2024 09:36:18 +0200 Subject: [PATCH] MS V 2.6.9 Indexierung Vektorfeld mit Vektor --- Global_Indexer/ClassPatterns.vb | 55 +++++++++++------ Global_Indexer/My Project/AssemblyInfo.vb | 2 +- Global_Indexer/frmIndex.designer.vb | 2 +- Global_Indexer/frmIndex.resx | 35 ++++++----- Global_Indexer/frmIndex.vb | 73 ++++++++++++++--------- 5 files changed, 105 insertions(+), 62 deletions(-) diff --git a/Global_Indexer/ClassPatterns.vb b/Global_Indexer/ClassPatterns.vb index 979b6f5..d22e9d6 100644 --- a/Global_Indexer/ClassPatterns.vb +++ b/Global_Indexer/ClassPatterns.vb @@ -208,24 +208,16 @@ Public Class ClassPatterns If oFoundControl IsNot Nothing Then Dim oValue As String = String.Empty - + Dim oTypeString = oFoundControl LOGGER.Debug("Found Control [{0}], continuing with setting value..", oFoundControl.Name) - - If TypeOf oFoundControl Is TextEdit Then - Try - oValue = DirectCast(oFoundControl, TextEdit).Text - Catch ex As Exception - LOGGER.Error(ex) - LOGGER.Warn("Control Value for TextBox [{0}] could not be retrieved!", oFoundControl.Name) - End Try - ElseIf TypeOf oFoundControl Is CheckBox Then - Try - oValue = IIf(DirectCast(oFoundControl, CheckBox).Checked, 1, 0) - Catch ex As Exception - LOGGER.Error(ex) - LOGGER.Warn("Control Value for CheckBox [{0}] could not be retrieved!", oFoundControl.Name) - End Try - ElseIf TypeOf oFoundControl Is LookupControl3 Then + If TypeOf (oFoundControl) Is LookupControl3 Then + LOGGER.Debug("oTypeString LookupControl3") + ElseIf TypeOf (oFoundControl) Is Checkbox Then + LOGGER.Debug("oTypeString CheckBox") + ElseIf TypeOf (oFoundControl) Is TextEdit Then + LOGGER.Debug("oTypeString TextEdit") + End If + If TypeOf (oFoundControl) Is LookupControl3 Then Try Dim oLookupControl = DirectCast(oFoundControl, LookupControl3) @@ -234,8 +226,19 @@ Public Class ClassPatterns Case ClassConstants.INDEX_TYPE_INTEGER oValue = String.Join(",", oLookupControl.Properties.SelectedValues) Case ClassConstants.INDEX_TYPE_VARCHAR - Dim oWrapped = oLookupControl.Properties.SelectedValues - oValue = String.Join(",", oWrapped) + Dim oIndex As Integer = 0 + For Each oString As String In oLookupControl.Properties.SelectedValues + If oIndex = 0 Then + oValue = "'" + oString + "'" + Else + oValue += ", '" + oString + "'" + End If + oIndex += 1 + Next + + + 'Dim oWrapped = oLookupControl.Properties.SelectedValues + 'oValue = String.Join(",", oWrapped) Case Else LOGGER.Warn("Lookup Control with [{0}] is not supported!", oFoundType) End Select @@ -246,6 +249,20 @@ Public Class ClassPatterns LOGGER.Error(ex) LOGGER.Warn("Control Value for LookupControl3 [{0}] could not be retrieved!", oFoundControl.Name) End Try + ElseIf TypeOf (oFoundControl) Is TextEdit Then + Try + oValue = DirectCast(oFoundControl, TextEdit).Text + Catch ex As Exception + LOGGER.Error(ex) + LOGGER.Warn("Control Value for TextBox [{0}] could not be retrieved!", oFoundControl.Name) + End Try + ElseIf TypeOf (oFoundControl) Is CheckBox Then + Try + oValue = IIf(DirectCast(oFoundControl, CheckBox).Checked, 1, 0) + Catch ex As Exception + LOGGER.Error(ex) + LOGGER.Warn("Control Value for CheckBox [{0}] could not be retrieved!", oFoundControl.Name) + End Try Else LOGGER.Debug("Unknown Control type for type [{0}], setting value to empty string.", oFoundControl.Name) oValue = "" diff --git a/Global_Indexer/My Project/AssemblyInfo.vb b/Global_Indexer/My Project/AssemblyInfo.vb index 4d94228..937958a 100644 --- a/Global_Indexer/My Project/AssemblyInfo.vb +++ b/Global_Indexer/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - + \ No newline at end of file diff --git a/Global_Indexer/frmIndex.designer.vb b/Global_Indexer/frmIndex.designer.vb index d63d2f1..be7e27f 100644 --- a/Global_Indexer/frmIndex.designer.vb +++ b/Global_Indexer/frmIndex.designer.vb @@ -236,7 +236,7 @@ Partial Class frmIndex resources.ApplyResources(Me.btnOK, "btnOK") Me.btnOK.Appearance.Font = CType(resources.GetObject("btnOK.Appearance.Font"), System.Drawing.Font) Me.btnOK.Appearance.Options.UseFont = True - Me.btnOK.ImageOptions.SvgImage = CType(resources.GetObject("btnOK.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.btnOK.ImageOptions.Image = CType(resources.GetObject("btnOK.ImageOptions.Image"), System.Drawing.Image) Me.btnOK.Name = "btnOK" ' 'ComboboxDoctype diff --git a/Global_Indexer/frmIndex.resx b/Global_Indexer/frmIndex.resx index 3165ae4..b20a89d 100644 --- a/Global_Indexer/frmIndex.resx +++ b/Global_Indexer/frmIndex.resx @@ -444,21 +444,28 @@ Tahoma, 11.25pt, style=Bold - + - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 - LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl - dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAEQCAAAC77u/ - PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi - IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv - MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh - Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg - MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z - ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz - OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp - dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkFycm93NFJpZ2h0Ij4NCiAgICA8cG9seWdvbiBwb2lu - dHM9IjE4LDYgMTIuMyw2IDIwLjMsMTQgNCwxNCA0LDE4IDIwLjMsMTggMTIuMywyNiAxOCwyNiAyOCwx - NiAgIiBjbGFzcz0iR3JlZW4iIC8+DQogIDwvZz4NCjwvc3ZnPgs= + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAEXRFWHRUaXRsZQBQbGF5O1N0 + YXJ0O11hQHoAAAP6SURBVFhHxZZ9UFRVHIY145pMNukflul/NX3MGKI2sWqBKbPysSaN60fZmGgSOJpa + jk0oybCyuCQIiLiuH+vigpECq0IYM62ZgrB8udaIkSCuZug4WTbONM3Y2++ebkznnEuDMGvPzDvDfe45 + 5733XHbvDgHwv0ZfBhGpSxRMBhGpSxRMBhGpSxRMBhGpSxRM8gy1f/l6xY7j8WO140EhdYmCSZ5h9hNz + QPl5Z1X8u6a3n3tI8wNC6hIFkzwhO78wob7LDcfXK1BYbfLmH417Wjt330hdomCSR9lxPA43f/Pjyu0m + HPZtAh3fzffErn/fGvGwNqbfSF2iYJJHyfPEoudOC/zX96HzVjWarpTD4U3G9srY5uzPjOHauH4hdYmC + SR4lp3w2rv/aiOZAAcuFnlIEbp+Fp9kCOvfHtiPGLRt3RT6ijf9PpC5RMMmjZH9uxNVfzsAXyOfSfuMI + /D9WYfdXK2ErM160lkRHanP6ROoSBZM8SlZpNLpu1aKxe7uU1qsOXLxRgWMtNtC4e5nuWUVpjqjHtLkS + UpcomORRthyciXPXXKjrsqH+co5u1PMXemqw37saluKZgQzXa/HafA6pSxRM8ijpzhnwdRfi6PllON2Z + hbrObN2cvZwL/7ViVLfl4NOKhdi8P6o01f7qGG0dhtQlCiZ5lLQ9kVSwDWUtC1DetgTe7zfj9CVbn2ns + LkL7T5UoqlkGmnuT1uj98pK6RMEkj/Kx/RWc7LCgtHmeFjM859+DtyMDp37I6s03l7bSR3Q3PQ43XKfW + gubdW18wzUlrDPt7qQFewIbCaahtT4Xbl8ClxPcGDrcuQdW3a+gCtqIl4ES130rbvwjrcg3fmVNeMNH8 + RymDu4AP8gxUsg6uhjlSSnxmeizL4TmXgvQyIxVH3EncGP5J6MgQ9dmPoKjflkPVhVSkLlEwyaOsyXkZ + lW3JcNbHcTnU9CYqWpNgO2YCjfkzKWNy5dSY8S/SHPWuQyjSi0vqEgWTPMoq20v0D7gUe+tiWFwNCezY + fnIeNhyIQkrm5I6EFc+aaezjlOEUdct77/rfSF2iYJJHSbFOgbtxIfacmY0D9XNR3GBG6sEZSM6ccvet + DydYRz8x4kkaF0rhtlsPqUsUTPIoSZZJcNYlUObCUj4LqwoMeCc1rMYQM24SnR9J0d1uPaQuUTDJoyxP + D0debTTWOqZj6aaJ3fGJzywmP4qivoD63G49pC5RMMmjJKaFUXHY7/NXP587ZnzoOHL92m49pC5RMMkT + svijCSciYp4y0N/qS0ahDPhnmdQlCiZ51C1WP8/3vd16SF2iYJJHLVTveFDF/yB1iYLJICJ1iYLJICJ1 + ieJBR1c+uGDIX5FNOTp9s3ZWAAAAAElFTkSuQmCC diff --git a/Global_Indexer/frmIndex.vb b/Global_Indexer/frmIndex.vb index 031f35b..9ec305b 100644 --- a/Global_Indexer/frmIndex.vb +++ b/Global_Indexer/frmIndex.vb @@ -2196,9 +2196,10 @@ Public Class frmIndex If oDatatable.Rows.Count = 0 Then Return True End If - + Dim oIndexName As String ' 1. Schritt: Einfach-Indexe und Platzhalter ersetzen For Each oRow As DataRow In oDatatable + oIndexName = oRow.Item("INDEXNAME") _Logger.Info("Working on AutomaticIndex: " & oRow.Item("INDEXNAME") & "...") Dim oSqlResult As String = oRow.ItemEx("SQL_RESULT", "") Dim oSqlActive As Boolean = oRow.ItemEx("SQL_ACTIVE", False) @@ -2268,33 +2269,51 @@ Public Class frmIndex ' 2. Schritt: Vektorfelder ersetzen Dim oVectorMatches As MatchCollection = oRegex.Matches(oSqlResult) - If oVectorMatches.Count > 0 Then - _Logger.Info(" There are " & oVectorMatches.Count & " matches for vectors!") - Dim oIsFirstMatch = True - - For Each oVectorMatch As Match In oVectorMatches - Dim oIndexValue As String = StripPlaceholder(oVectorMatch.Value) - Dim oOptionalIndex = False - Dim oManualIndexResult As String = Nothing - - oOptionalIndex = DATABASE_ECM.GetScalarValue($"SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = {CURRENT_DOKART_ID} AND UPPER(NAME) = UPPER('{oIndexValue}')") - oManualIndexResult = GetManIndex_Value(oIndexValue, "IDX_AUTO", oOptionalIndex) - - Dim oVectorIndexValues = oManualIndexResult.Split(ClassConstants.VECTORSEPARATOR).ToList() - - For Each oVectorIndexValue In oVectorIndexValues - Dim oTempSql = oSqlResult.Replace(oVectorMatch.Value, oVectorIndexValue) - Dim oResult = GetAutomaticIndexSQLValue(oTempSql, oSqlConnectionId, oSqlProvider) - oEndResult.Add(oResult) - Next - - ' Verhindert, dass die Schleife mehrmals durchlaufen wird - If oIsFirstMatch Then - Exit For + If oVectorMatches.Count > 0 Or oIndexName.Contains("Vektor") Then + Dim oResult = GetAutomaticIndexSQLValue(oSqlResult, oSqlConnectionId, oSqlProvider) + Dim oConnectionString As String + oConnectionString = DATABASE_ECM.Get_ConnectionStringforID(oSqlConnectionId) + Try + Dim oResultDT As DataTable = DATABASE_ECM.GetDatatable(oSqlResult) + If Not IsNothing(oResultDT) Then + _Logger.Info("We got [" & oResultDT.Rows.Count & "] result(s) for the vector-field!") + For Each oResultRow As DataRow In oResultDT.Rows + oEndResult.Add(oResultRow.Item(0)) + Next + End If + If oEndResult.Count > 0 Then + oRow.Item("Indexiert") = True + oRow.Item("Indexwert") = String.Join(ClassConstants.VECTORSEPARATOR, oEndResult.ToArray) End If - oRow.Item("Indexiert") = True - oRow.Item("Indexwert") = String.Join(ClassConstants.VECTORSEPARATOR, oEndResult.ToArray) - Next + Catch ex As Exception + ShowErrorMessage(ex, $"FillIndexe_Autom - Vektorfield [{oIndexName}] ") + End Try + + 'Dim oIsFirstMatch = True + 'D + 'For Each oVectorMatch As Match In oVectorMatches + ' Dim oIndexValue As String = StripPlaceholder(oVectorMatch.Value) + ' Dim oOptionalIndex = False + ' Dim oManualIndexResult As String = Nothing + + ' oOptionalIndex = DATABASE_ECM.GetScalarValue($"SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = {CURRENT_DOKART_ID} AND UPPER(NAME) = UPPER('{oIndexValue}')") + ' oManualIndexResult = GetManIndex_Value(oIndexValue, "IDX_AUTO", oOptionalIndex) + + ' Dim oVectorIndexValues = oManualIndexResult.Split(ClassConstants.VECTORSEPARATOR).ToList() + + ' For Each oVectorIndexValue In oVectorIndexValues + ' Dim oTempSql = oSqlResult.Replace(oVectorMatch.Value, oVectorIndexValue) + ' Dim oResult = GetAutomaticIndexSQLValue(oTempSql, oSqlConnectionId, oSqlProvider) + ' oEndResult.Add(oResult) + ' Next + + ' ' Verhindert, dass die Schleife mehrmals durchlaufen wird + ' If oIsFirstMatch Then + ' Exit For + ' End If + ' oRow.Item("Indexiert") = True + ' oRow.Item("Indexwert") = String.Join(ClassConstants.VECTORSEPARATOR, oEndResult.ToArray) + 'Next Else Dim oResult = GetAutomaticIndexSQLValue(oSqlResult, oSqlConnectionId, oSqlProvider) _Logger.Info("Got a simple SQLResult: " & oResult.ToString)