MS V 2.6.9 Indexierung Vektorfeld mit Vektor

This commit is contained in:
Developer01 2024-08-23 09:36:18 +02:00
parent 8c824f3f59
commit 48d21617c9
5 changed files with 105 additions and 62 deletions

View File

@ -208,24 +208,16 @@ Public Class ClassPatterns
If oFoundControl IsNot Nothing Then If oFoundControl IsNot Nothing Then
Dim oValue As String = String.Empty Dim oValue As String = String.Empty
Dim oTypeString = oFoundControl
LOGGER.Debug("Found Control [{0}], continuing with setting value..", oFoundControl.Name) LOGGER.Debug("Found Control [{0}], continuing with setting value..", oFoundControl.Name)
If TypeOf (oFoundControl) Is LookupControl3 Then
If TypeOf oFoundControl Is TextEdit Then LOGGER.Debug("oTypeString LookupControl3")
Try ElseIf TypeOf (oFoundControl) Is Checkbox Then
oValue = DirectCast(oFoundControl, TextEdit).Text LOGGER.Debug("oTypeString CheckBox")
Catch ex As Exception ElseIf TypeOf (oFoundControl) Is TextEdit Then
LOGGER.Error(ex) LOGGER.Debug("oTypeString TextEdit")
LOGGER.Warn("Control Value for TextBox [{0}] could not be retrieved!", oFoundControl.Name) End If
End Try If TypeOf (oFoundControl) Is LookupControl3 Then
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
Try Try
Dim oLookupControl = DirectCast(oFoundControl, LookupControl3) Dim oLookupControl = DirectCast(oFoundControl, LookupControl3)
@ -234,8 +226,19 @@ Public Class ClassPatterns
Case ClassConstants.INDEX_TYPE_INTEGER Case ClassConstants.INDEX_TYPE_INTEGER
oValue = String.Join(",", oLookupControl.Properties.SelectedValues) oValue = String.Join(",", oLookupControl.Properties.SelectedValues)
Case ClassConstants.INDEX_TYPE_VARCHAR Case ClassConstants.INDEX_TYPE_VARCHAR
Dim oWrapped = oLookupControl.Properties.SelectedValues Dim oIndex As Integer = 0
oValue = String.Join(",", oWrapped) 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 Case Else
LOGGER.Warn("Lookup Control with [{0}] is not supported!", oFoundType) LOGGER.Warn("Lookup Control with [{0}] is not supported!", oFoundType)
End Select End Select
@ -246,6 +249,20 @@ Public Class ClassPatterns
LOGGER.Error(ex) LOGGER.Error(ex)
LOGGER.Warn("Control Value for LookupControl3 [{0}] could not be retrieved!", oFoundControl.Name) LOGGER.Warn("Control Value for LookupControl3 [{0}] could not be retrieved!", oFoundControl.Name)
End Try 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 Else
LOGGER.Debug("Unknown Control type for type [{0}], setting value to empty string.", oFoundControl.Name) LOGGER.Debug("Unknown Control type for type [{0}], setting value to empty string.", oFoundControl.Name)
oValue = "" oValue = ""

View File

@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben: ' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.6.8.3")> <Assembly: AssemblyVersion("2.6.9.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")> <Assembly: AssemblyFileVersion("1.0.0.0")>
<Assembly: NeutralResourcesLanguageAttribute("")> <Assembly: NeutralResourcesLanguageAttribute("")>

View File

@ -236,7 +236,7 @@ Partial Class frmIndex
resources.ApplyResources(Me.btnOK, "btnOK") resources.ApplyResources(Me.btnOK, "btnOK")
Me.btnOK.Appearance.Font = CType(resources.GetObject("btnOK.Appearance.Font"), System.Drawing.Font) Me.btnOK.Appearance.Font = CType(resources.GetObject("btnOK.Appearance.Font"), System.Drawing.Font)
Me.btnOK.Appearance.Options.UseFont = True 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" Me.btnOK.Name = "btnOK"
' '
'ComboboxDoctype 'ComboboxDoctype

View File

@ -444,21 +444,28 @@
<data name="btnOK.Appearance.Font" type="System.Drawing.Font, System.Drawing"> <data name="btnOK.Appearance.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 11.25pt, style=Bold</value> <value>Tahoma, 11.25pt, style=Bold</value>
</data> </data>
<data name="btnOK.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="btnOK.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAEXRFWHRUaXRsZQBQbGF5O1N0
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAEQCAAAC77u/ YXJ0O11hQHoAAAP6SURBVFhHxZZ9UFRVHIY145pMNukflul/NX3MGKI2sWqBKbPysSaN60fZmGgSOJpa
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi jk0oybCyuCQIiLiuH+vigpECq0IYM62ZgrB8udaIkSCuZug4WTbONM3Y2++ebkznnEuDMGvPzDvDfe45
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv 5733XHbvDgHwv0ZfBhGpSxRMBhGpSxRMBhGpSxRMBhGpSxRM8gy1f/l6xY7j8WO140EhdYmCSZ5h9hNz
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh QPl5Z1X8u6a3n3tI8wNC6hIFkzwhO78wob7LDcfXK1BYbfLmH417Wjt330hdomCSR9lxPA43f/Pjyu0m
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg HPZtAh3fzffErn/fGvGwNqbfSF2iYJJHyfPEoudOC/zX96HzVjWarpTD4U3G9srY5uzPjOHauH4hdYmC
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z SR4lp3w2rv/aiOZAAcuFnlIEbp+Fp9kCOvfHtiPGLRt3RT6ijf9PpC5RMMmjZH9uxNVfzsAXyOfSfuMI
ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz /D9WYfdXK2ErM160lkRHanP6ROoSBZM8SlZpNLpu1aKxe7uU1qsOXLxRgWMtNtC4e5nuWUVpjqjHtLkS
OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp UpcomORRthyciXPXXKjrsqH+co5u1PMXemqw37saluKZgQzXa/HafA6pSxRM8ijpzhnwdRfi6PllON2Z
dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkFycm93NFJpZ2h0Ij4NCiAgICA8cG9seWdvbiBwb2lu hbrObN2cvZwL/7ViVLfl4NOKhdi8P6o01f7qGG0dhtQlCiZ5lLQ9kVSwDWUtC1DetgTe7zfj9CVbn2ns
dHM9IjE4LDYgMTIuMyw2IDIwLjMsMTQgNCwxNCA0LDE4IDIwLjMsMTggMTIuMywyNiAxOCwyNiAyOCwx LkL7T5UoqlkGmnuT1uj98pK6RMEkj/Kx/RWc7LCgtHmeFjM859+DtyMDp37I6s03l7bSR3Q3PQ43XKfW
NiAgIiBjbGFzcz0iR3JlZW4iIC8+DQogIDwvZz4NCjwvc3ZnPgs= gubdW18wzUlrDPt7qQFewIbCaahtT4Xbl8ClxPcGDrcuQdW3a+gCtqIl4ES130rbvwjrcg3fmVNeMNH8
RymDu4AP8gxUsg6uhjlSSnxmeizL4TmXgvQyIxVH3EncGP5J6MgQ9dmPoKjflkPVhVSkLlEwyaOsyXkZ
lW3JcNbHcTnU9CYqWpNgO2YCjfkzKWNy5dSY8S/SHPWuQyjSi0vqEgWTPMoq20v0D7gUe+tiWFwNCezY
fnIeNhyIQkrm5I6EFc+aaezjlOEUdct77/rfSF2iYJJHSbFOgbtxIfacmY0D9XNR3GBG6sEZSM6ccvet
DydYRz8x4kkaF0rhtlsPqUsUTPIoSZZJcNYlUObCUj4LqwoMeCc1rMYQM24SnR9J0d1uPaQuUTDJoyxP
D0debTTWOqZj6aaJ3fGJzywmP4qivoD63G49pC5RMMmjJKaFUXHY7/NXP587ZnzoOHL92m49pC5RMMkT
svijCSciYp4y0N/qS0ahDPhnmdQlCiZ51C1WP8/3vd16SF2iYJJHLVTveFDF/yB1iYLJICJ1iYLJICJ1
ieJBR1c+uGDIX5FNOTp9s3ZWAAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">

View File

@ -2196,9 +2196,10 @@ Public Class frmIndex
If oDatatable.Rows.Count = 0 Then If oDatatable.Rows.Count = 0 Then
Return True Return True
End If End If
Dim oIndexName As String
' 1. Schritt: Einfach-Indexe und Platzhalter ersetzen ' 1. Schritt: Einfach-Indexe und Platzhalter ersetzen
For Each oRow As DataRow In oDatatable For Each oRow As DataRow In oDatatable
oIndexName = oRow.Item("INDEXNAME")
_Logger.Info("Working on AutomaticIndex: " & oRow.Item("INDEXNAME") & "...") _Logger.Info("Working on AutomaticIndex: " & oRow.Item("INDEXNAME") & "...")
Dim oSqlResult As String = oRow.ItemEx("SQL_RESULT", "") Dim oSqlResult As String = oRow.ItemEx("SQL_RESULT", "")
Dim oSqlActive As Boolean = oRow.ItemEx("SQL_ACTIVE", False) Dim oSqlActive As Boolean = oRow.ItemEx("SQL_ACTIVE", False)
@ -2268,33 +2269,51 @@ Public Class frmIndex
' 2. Schritt: Vektorfelder ersetzen ' 2. Schritt: Vektorfelder ersetzen
Dim oVectorMatches As MatchCollection = oRegex.Matches(oSqlResult) Dim oVectorMatches As MatchCollection = oRegex.Matches(oSqlResult)
If oVectorMatches.Count > 0 Then If oVectorMatches.Count > 0 Or oIndexName.Contains("Vektor") Then
_Logger.Info(" There are " & oVectorMatches.Count & " matches for vectors!") Dim oResult = GetAutomaticIndexSQLValue(oSqlResult, oSqlConnectionId, oSqlProvider)
Dim oIsFirstMatch = True Dim oConnectionString As String
oConnectionString = DATABASE_ECM.Get_ConnectionStringforID(oSqlConnectionId)
For Each oVectorMatch As Match In oVectorMatches Try
Dim oIndexValue As String = StripPlaceholder(oVectorMatch.Value) Dim oResultDT As DataTable = DATABASE_ECM.GetDatatable(oSqlResult)
Dim oOptionalIndex = False If Not IsNothing(oResultDT) Then
Dim oManualIndexResult As String = Nothing _Logger.Info("We got [" & oResultDT.Rows.Count & "] result(s) for the vector-field!")
For Each oResultRow As DataRow In oResultDT.Rows
oOptionalIndex = DATABASE_ECM.GetScalarValue($"SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = {CURRENT_DOKART_ID} AND UPPER(NAME) = UPPER('{oIndexValue}')") oEndResult.Add(oResultRow.Item(0))
oManualIndexResult = GetManIndex_Value(oIndexValue, "IDX_AUTO", oOptionalIndex) Next
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 End If
oRow.Item("Indexiert") = True If oEndResult.Count > 0 Then
oRow.Item("Indexwert") = String.Join(ClassConstants.VECTORSEPARATOR, oEndResult.ToArray) oRow.Item("Indexiert") = True
Next oRow.Item("Indexwert") = String.Join(ClassConstants.VECTORSEPARATOR, oEndResult.ToArray)
End If
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 Else
Dim oResult = GetAutomaticIndexSQLValue(oSqlResult, oSqlConnectionId, oSqlProvider) Dim oResult = GetAutomaticIndexSQLValue(oSqlResult, oSqlConnectionId, oSqlProvider)
_Logger.Info("Got a simple SQLResult: " & oResult.ToString) _Logger.Info("Got a simple SQLResult: " & oResult.ToString)