3 Commits

Author SHA1 Message Date
Developer01
55d7e025c9 Normalizing currency for windream 2025-12-16 17:21:18 +01:00
Developer01
2f64dc4b70 Vor Logging erweiterung in Tabelle Row Add 2025-12-12 10:04:53 +01:00
Developer01
17ec4953e5 WIX Aufruf über Link 2025-12-09 10:45:06 +01:00
8 changed files with 1466 additions and 55 deletions

View File

@@ -123,7 +123,6 @@
<File Id="DDLogging" Name="DigitalData.Modules.Logging.dll" Source="DigitalData.Modules.Logging.dll"/> <File Id="DDLogging" Name="DigitalData.Modules.Logging.dll" Source="DigitalData.Modules.Logging.dll"/>
<File Id="DDInterfaces" Name="DigitalData.Modules.Interfaces.dll" Source="DigitalData.Modules.Interfaces.dll"/> <File Id="DDInterfaces" Name="DigitalData.Modules.Interfaces.dll" Source="DigitalData.Modules.Interfaces.dll"/>
<File Id="DDBase" Name="DigitalData.Modules.Base.dll" Source="DigitalData.Modules.Base.dll"/> <File Id="DDBase" Name="DigitalData.Modules.Base.dll" Source="DigitalData.Modules.Base.dll"/>
<File Id="DDLanguage" Name="DigitalData.Modules.Language.dll" Source="DigitalData.Modules.Language.dll"/>
<File Id="DDFilesystem" Name="DigitalData.Modules.Filesystem.dll" Source="DigitalData.Modules.Filesystem.dll"/> <File Id="DDFilesystem" Name="DigitalData.Modules.Filesystem.dll" Source="DigitalData.Modules.Filesystem.dll"/>
<File Id="DDEncryption" Name="DigitalData.Modules.Encryption.dll" Source="DigitalData.Modules.Encryption.dll"/> <File Id="DDEncryption" Name="DigitalData.Modules.Encryption.dll" Source="DigitalData.Modules.Encryption.dll"/>
<File Id="DDWindream" Name="DigitalData.Modules.Windream.dll" Source="DigitalData.Modules.Windream.dll"/> <File Id="DDWindream" Name="DigitalData.Modules.Windream.dll" Source="DigitalData.Modules.Windream.dll"/>
@@ -277,14 +276,13 @@
</RegistryKey> </RegistryKey>
</RegistryKey> </RegistryKey>
<util:RemoveFolderEx Id="RemoveApplicationFolder" On="uninstall" Property="APPLICATIONFOLDER" /> <util:RemoveFolderEx Id="RemoveApplicationFolder" On="uninstall" Property="INSTALLDIR" />
</Component> </Component>
</DirectoryRef> </DirectoryRef>
<Feature Id="MainApplication" Title="Main Application" Level="1"> <Feature Id="MainApplication" Title="Main Application" Level="1">
<ComponentRef Id="MainApplicationExe" /> <ComponentRef Id="MainApplicationExe" />
<ComponentRef Id="RegistryKeys" /> <ComponentRef Id="RegistryKeys" />
<!--<ComponentRef Id="ReleaseNotes" />-->
<ComponentRef Id="WindreamLibs" /> <ComponentRef Id="WindreamLibs" />
<ComponentRef Id="FormsUtilsLibs"/> <ComponentRef Id="FormsUtilsLibs"/>
<ComponentRef Id="DDLibs" /> <ComponentRef Id="DDLibs" />
@@ -294,6 +292,7 @@
<ComponentRef Id="DevExpressLibs" /> <ComponentRef Id="DevExpressLibs" />
<ComponentRef Id="GDPictureLibs" /> <ComponentRef Id="GDPictureLibs" />
<ComponentRef Id="Devexpress.Locales.de" /> <ComponentRef Id="Devexpress.Locales.de" />
<ComponentRef Id="ProtocolHandlerMachine" />
</Feature> </Feature>
<Feature Id="DesktopShortcut" Title="Desktop Shortcut"> <Feature Id="DesktopShortcut" Title="Desktop Shortcut">
@@ -305,7 +304,28 @@
<Condition Level="0">DISABLE_STARTMENU_ICON</Condition> <Condition Level="0">DISABLE_STARTMENU_ICON</Condition>
<ComponentRef Id="ApplicationShortcut_StartMenu" /> <ComponentRef Id="ApplicationShortcut_StartMenu" />
</Feature> </Feature>
<!-- #######################-->
<!-- Beginn Aufruf über Link-->
<!-- Per-user ProtocolHandler (HKCU) -->
<Component Id="ProtocolHandlerMachine" Guid="F2817163-DAAA-4EB2-A8D9-A9EF00E910C0" Directory="INSTALLDIR">
<!-- Basis-Schlüssel -->
<RegistryKey Root="HKLM" Key="Software\Classes\DDtaskFLOW" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Type="string" Value="URL:ddtaskflow Protocol" KeyPath="yes"/>
<RegistryValue Type="string" Name="URL Protocol" Value="" />
</RegistryKey>
<!-- Icon -->
<RegistryKey Root="HKLM" Key="Software\Classes\DDtaskFLOW\DefaultIcon" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Type="string" Value="[INSTALLDIR]taskFLOW.exe,1" />
</RegistryKey>
<!-- Kommando -->
<RegistryKey Root="HKLM" Key="Software\Classes\DDtaskFLOW\shell\open\command" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Type="string" Value="&quot;[INSTALLDIR]taskFLOW.exe&quot; &quot;%1&quot;" />
</RegistryKey>
</Component>
<!-- Ende Aufruf über Link-->
<!-- #######################-->
<!-- Legt das Standard-Installationsverzeichnis fest--> <!-- Legt das Standard-Installationsverzeichnis fest-->
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" /> <Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
<Property Id="_BrowseProperty" Value="INSTALLDIR" /> <Property Id="_BrowseProperty" Value="INSTALLDIR" />

View File

@@ -380,6 +380,7 @@ Public Class ClassInit
LOGGER.Debug("User Info:") LOGGER.Debug("User Info:")
LOGGER.Debug("Language: [{0}]", USER_LANGUAGE) LOGGER.Debug("Language: [{0}]", USER_LANGUAGE)
LOGGER.Debug("Username: [{0}]", USER_USERNAME) LOGGER.Debug("Username: [{0}]", USER_USERNAME)
LOGGER.Debug("Environment.MachineName: [{0}]", Environment.MachineName)
Try Try
USER_RIGHT_FILE_DELETE = IIf(IsDBNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_RIGHT_FILE_DEL")), False, DT_CHECKUSER_MODULE.Rows(0).Item("USER_RIGHT_FILE_DEL")) USER_RIGHT_FILE_DELETE = IIf(IsDBNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_RIGHT_FILE_DEL")), False, DT_CHECKUSER_MODULE.Rows(0).Item("USER_RIGHT_FILE_DEL"))

View File

@@ -343,6 +343,10 @@ Namespace ControlCreator
Private Sub View_PopupMenuShowing(sender As Object, e As PopupMenuShowingEventArgs) Private Sub View_PopupMenuShowing(sender As Object, e As PopupMenuShowingEventArgs)
Dim view As GridView = TryCast(sender, GridView) Dim view As GridView = TryCast(sender, GridView)
Dim oFocusedColumn As GridColumn = view.FocusedColumn Dim oFocusedColumn As GridColumn = view.FocusedColumn
If IsNothing(oFocusedColumn) Then
MsgBox("Please focus a column first.", MsgBoxStyle.Information, "No Column focused")
Exit Sub
End If
Dim oColumnType As Type = oFocusedColumn.ColumnType Dim oColumnType As Type = oFocusedColumn.ColumnType
Dim oColumnName As String = oFocusedColumn.FieldName Dim oColumnName As String = oFocusedColumn.FieldName

View File

@@ -32,6 +32,6 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben: ' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.7.4.0")> <Assembly: AssemblyVersion("2.7.5.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")> <Assembly: AssemblyFileVersion("1.0.0.0")>
<Assembly: NeutralResourcesLanguage("")> <Assembly: NeutralResourcesLanguage("")>

View File

@@ -1036,6 +1036,7 @@
<None Include="FinalIndexDataSet.xss"> <None Include="FinalIndexDataSet.xss">
<DependentUpon>FinalIndexDataSet.xsd</DependentUpon> <DependentUpon>FinalIndexDataSet.xsd</DependentUpon>
</None> </None>
<None Include="frmValidator.v" />
<None Include="My Project\app.manifest" /> <None Include="My Project\app.manifest" />
<None Include="My Project\Application.myapp"> <None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator> <Generator>MyApplicationCodeGenerator</Generator>

View File

View File

@@ -3585,28 +3585,53 @@ Public Class frmValidator
For Each Zeile As Object In oValueFromSource For Each Zeile As Object In oValueFromSource
MyValidationLogger.Debug($"vektorrow Value {Zeile.ToString}...") MyValidationLogger.Debug($"vektorrow Value {Zeile.ToString}...")
oColValuesfromSource = Split(Zeile, PMDelimiter) oColValuesfromSource = Split(Zeile, PMDelimiter)
Dim oNewRow = oDataSource.NewRow() Dim oNewRow = oDataSource.NewRow()
MyValidationLogger.Debug("Creating new row..") MyValidationLogger.Debug("Creating new row..")
For index = 0 To oDTColumnsPerDevExGrid.Rows.Count - 1 For index = 0 To oDTColumnsPerDevExGrid.Rows.Count - 1
MyValidationLogger.Debug("Column Index {0}", index) Dim rawValue As String = If(index < oColValuesfromSource.Length, oColValuesfromSource(index), String.Empty)
Dim targetColumn As DataColumn = oDataSource.Columns(index)
Dim colName As String = targetColumn.ColumnName
Dim colType As String = targetColumn.DataType.FullName
' Detailliertes Debug vor der Zuweisung
MyValidationLogger.Debug("Grid row assign: RowIdx={0}, ColIdx={1}, ColName={2}, ColType={3}, RawValue=[{4}], IsEmpty={5}",
oDataSource.Rows.Count, index, colName, colType, rawValue, String.IsNullOrWhiteSpace(rawValue))
Try
If oColValuesfromSource.Length > index Then If oColValuesfromSource.Length > index Then
MyValidationLogger.Debug("Value: {0}", oColValuesfromSource(index))
oNewRow.Item(index) = oColValuesfromSource(index) oNewRow.Item(index) = oColValuesfromSource(index)
Else Else
MyValidationLogger.Debug("Value: String.Empty") If colType = "System.Double" Or colType = "System.Int32" Or colType = "System.Int64" Then
' Numerische Spalten können nicht mit Empty befüllt werden
oNewRow.Item(index) = 0
Else
oNewRow.Item(index) = String.Empty oNewRow.Item(index) = String.Empty
End If End If
End If
Catch ex As Exception
' Ausführliches Logging bei Fehlern inkl. aktuell bekannter Metadaten
MyValidationLogger.Warn("Grid row assign FAILED RowIdx = {0}, ColIdx={1}, ColName={2}, ColType={3}, RawValue=[{4}]",
oDataSource.Rows.Count, index, colName, colType, rawValue)
MyValidationLogger.Error(ex)
' Optional: weitere Kontexthilfe z.B. ob Spalte DBNull erlaubt
Try
MyValidationLogger.Debug("Column.AllowDBNull={0}, Column.MaxLength={1}", targetColumn.AllowDBNull, targetColumn.MaxLength)
Catch
End Try
' Fehler weiterwerfen, damit ursprüngliches Verhalten erhalten bleibt
Throw
End Try
Next Next
MyValidationLogger.Debug("Adding row to grid..") MyValidationLogger.Debug("Adding row To grid..")
oDataSource.Rows.Add(oNewRow) oDataSource.Rows.Add(oNewRow)
Next Next
Else Else
If oValueType = "System.String" Then If oValueType = "System.String" Then
MyValidationLogger.Debug($"IDB Fill Grid [{oControl.Name}] with String") MyValidationLogger.Debug($"IDB Fill Grid [{oControl.Name}] With String")
MyValidationLogger.Debug($"oValueFromSource [{oValueFromSource}] - PMDelimiter[{PMDelimiter}]") MyValidationLogger.Debug($"oValueFromSource [{oValueFromSource}] - PMDelimiter[{PMDelimiter}]")
oColValuesfromSource = Split(oValueFromSource.ToString, PMDelimiter) oColValuesfromSource = Split(oValueFromSource.ToString, PMDelimiter)
@@ -3615,7 +3640,7 @@ Public Class frmValidator
End If End If
Dim oRowData As New List(Of Object) Dim oRowData As New List(Of Object)
MyValidationLogger.Debug(String.Format("Now creating the rows for DevexpressGrid ...")) MyValidationLogger.Debug(String.Format("Now creating the rows For DevexpressGrid ..."))
Dim oMSG = "" Dim oMSG = ""
Try Try
For index = 1 To oColValuesfromSource.Length For index = 1 To oColValuesfromSource.Length
@@ -3628,9 +3653,9 @@ Public Class frmValidator
oRowData.Add(oConvertedValue) oRowData.Add(oConvertedValue)
Next Next
Catch ex As Exception Catch ex As Exception
MyValidationLogger.Warn(String.Format("Unexpected error while working on IDB Fill GridControl: {0}", oControl.Name)) MyValidationLogger.Warn(String.Format("Unexpected Error While working On IDB Fill GridControl {0}", oControl.Name))
If Not oMSG = String.Empty Then If Not oMSG = String.Empty Then
MyValidationLogger.Warn(String.Format("oMSG: {0}", oMSG)) MyValidationLogger.Warn(String.Format("oMSG {0}", oMSG))
End If End If
MyValidationLogger.Error(ex) MyValidationLogger.Error(ex)
End Try End Try
@@ -3641,14 +3666,14 @@ Public Class frmValidator
ElseIf oValueType = "System.Data.DataTable" Then ElseIf oValueType = "System.Data.DataTable" Then
Dim oMyDatatable As DataTable = oValueFromSource Dim oMyDatatable As DataTable = oValueFromSource
MyValidationLogger.Debug($"IDB Fill Grid [{oControl.Name}] with Datatable - Rows: " & oMyDatatable.Rows.Count) MyValidationLogger.Debug($"IDB Fill Grid [{oControl.Name}] With Datatable - Rows " & oMyDatatable.Rows.Count)
For Each oRow As DataRow In oMyDatatable.Rows For Each oRow As DataRow In oMyDatatable.Rows
Try Try
MyValidationLogger.Debug($"IDB ROW Vector {oRow.Item(0).ToString}...") MyValidationLogger.Debug($"IDB ROW Vector {oRow.Item(0).ToString}...")
oColValuesfromSource = Split(oRow.Item(0).ToString, PMDelimiter) oColValuesfromSource = Split(oRow.Item(0).ToString, PMDelimiter)
If oColValuesfromSource.Length > 8 Then If oColValuesfromSource.Length > 8 Then
MyValidationLogger.Warn("Fill Grid with DatatableSplit Error - Max 8 columns can be configured!") MyValidationLogger.Warn("Fill Grid With DatatableSplit Error - Max 8 columns can be configured!")
End If End If
MyValidationLogger.Debug($"oColValuesfromSource splitted - Length ({oColValuesfromSource.Length.ToString})") MyValidationLogger.Debug($"oColValuesfromSource splitted - Length ({oColValuesfromSource.Length.ToString})")
Dim oRowData As New List(Of Object) Dim oRowData As New List(Of Object)
@@ -3656,16 +3681,16 @@ Public Class frmValidator
For index = 1 To oColValuesfromSource.Length For index = 1 To oColValuesfromSource.Length
Try Try
Dim oColumnType = oDTColumnsPerDevExGrid.Rows.Item(index - 1).Item("TYPE_COLUMN") Dim oColumnType = oDTColumnsPerDevExGrid.Rows.Item(index - 1).Item("TYPE_COLUMN")
MyValidationLogger.Debug($"oColumnType of DGView-Column ({oColumnType.ToString})...") MyValidationLogger.Debug($"oColumnType Of DGView-Column ({oColumnType.ToString})...")
Dim oConvertedValue = ClassFormat.GetConvertedValue(oColValuesfromSource(index - 1), oColumnType) Dim oConvertedValue = ClassFormat.GetConvertedValue(oColValuesfromSource(index - 1), oColumnType)
oRowData.Add(oConvertedValue) oRowData.Add(oConvertedValue)
Catch ex As Exception Catch ex As Exception
MyValidationLogger.Warn($"Error while converting/adding Value to oRowData: " & ex.Message) MyValidationLogger.Warn($"Error While converting/adding Value To oRowData " & ex.Message)
End Try End Try
Next Next
oDataSource.Rows.Add(oRowData.ToArray()) oDataSource.Rows.Add(oRowData.ToArray())
Catch ex As Exception Catch ex As Exception
MyValidationLogger.Warn($"Error while adding datarow [{oRow.Item(0).ToString}] to Grid: " & ex.Message) MyValidationLogger.Warn($"Error While adding datarow [{oRow.Item(0).ToString}] To Grid " & ex.Message)
End Try End Try
@@ -3674,7 +3699,7 @@ Public Class frmValidator
End If End If
Else Else
MyValidationLogger.Info($"DevExpressGrid: There are no columns configured/listed for control {oControlId}.") MyValidationLogger.Info($"DevExpressGrid There are no columns configured/listed For control {oControlId}.")
End If End If
Case Else Case Else
@@ -3690,7 +3715,7 @@ Public Class frmValidator
Next Next
End Select End Select
Else Else
MyValidationLogger.Warn($"Could not load Devexpress.Grid [{oControl.Name }] as omytype is [{oValueType}]!") MyValidationLogger.Warn($"Could Not load Devexpress.Grid [{oControl.Name }] As omytype Is [{oValueType}]!")
End If End If
@@ -3731,10 +3756,10 @@ Public Class frmValidator
End If End If
Catch ex As Exception Catch ex As Exception
MyValidationLogger.Error(ex) MyValidationLogger.Error(ex)
MyValidationLogger.Info(">> Unexpected error in FillIndexValues(GridControl: " & oMyGridControl.Name & "): " & ex.Message, True) MyValidationLogger.Info(">> Unexpected Error In FillIndexValues(GridControl " & oMyGridControl.Name & ") " & ex.Message, True)
MyValidationLogger.Info(">> Controltype: " & oControlType) MyValidationLogger.Info(">> Controltype " & oControlType)
MyValidationLogger.Info(">> Attributname: " & oIndexName) MyValidationLogger.Info(">> Attributname " & oIndexName)
errormessage = "Unexpected error in FillIndexValues(Combobox: " & oMyGridControl.Name & "): " & vbNewLine & ex.Message & vbNewLine & "Check Logfile" errormessage = "Unexpected Error In FillIndexValues(Combobox " & oMyGridControl.Name & ") " & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
My.Settings.Save() My.Settings.Save()
frmError.ShowDialog() frmError.ShowDialog()
End Try End Try
@@ -3744,15 +3769,15 @@ Public Class frmValidator
MyValidationLogger.Debug("Loading checkbox...") MyValidationLogger.Debug("Loading checkbox...")
oControlType = "CheckBox" oControlType = "CheckBox"
If oSourceIndexName = "" Then If oSourceIndexName = "" Then
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical, ADDITIONAL_TITLE) MsgBox("Attention wrong configuration" & vbNewLine & "For control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
Exit For Exit For
End If End If
If oSourceIndexName Is Nothing = False Then If oSourceIndexName Is Nothing = False Then
Dim myCheckBox As CheckBox = oControl Dim myCheckBox As CheckBox = oControl
If oLoadIndex = False Or {"@@DISPLAY_ONLY", "DD PM-ONLY FOR DISPLAY"}.Contains(oSourceIndexName) Then If oLoadIndex = False Or {"@@DISPLAY_ONLY", "DD PM-ONLY For DISPLAY"}.Contains(oSourceIndexName) Then
MyValidationLogger.Debug($" oControl {oControl.Name}: Indexwert soll nicht geladen werden.") MyValidationLogger.Debug($" oControl {oControl.Name} Indexwert soll nicht geladen werden.")
Exit Select Exit Select
End If End If
@@ -3766,7 +3791,7 @@ Public Class frmValidator
MyValidationLogger.Debug($"..Now GetVariableValue({oSourceIndexName})...") MyValidationLogger.Debug($"..Now GetVariableValue({oSourceIndexName})...")
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride) oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
Catch ex As Exception Catch ex As Exception
MyValidationLogger.Warn($"Could not get the windreamValue for CheckboxIndex: {oSourceIndexName} [{ex.Message}]") MyValidationLogger.Warn($"Could Not Get the windreamValue For CheckboxIndex {oSourceIndexName} [{ex.Message}]")
End Try End Try
End If End If
@@ -5700,12 +5725,20 @@ Public Class frmValidator
Dim oValueList As New List(Of String) Dim oValueList As New List(Of String)
For Each item As Object In oRow.ItemArray For Each item As Object In oRow.ItemArray
item = ObjectEx.NotNull(item, String.Empty) Dim normalized As Object = ObjectEx.NotNull(item, String.Empty)
' Convert to string using InvariantCulture, so converting back from string does not screw up values If TypeOf normalized Is IFormattable AndAlso Not TypeOf normalized Is String Then
If TypeOf item IsNot String Then Dim provider As IFormatProvider =
item = String.Format(CultureInfo.InvariantCulture, "{0}", item) If(TypeOf normalized Is Decimal OrElse
TypeOf normalized Is Double OrElse
TypeOf normalized Is Single,
CultureInfo.CurrentCulture,
CultureInfo.InvariantCulture)
MyValidationLogger.Debug("Normalizing value [{0}]", normalized.ToString)
normalized = DirectCast(normalized, IFormattable).ToString(Nothing, provider)
End If End If
oValueList.Add(item)
oValueList.Add(normalized)
Next Next
str = String.Join(PMDelimiter, oValueList.ToArray) str = String.Join(PMDelimiter, oValueList.ToArray)

1352
app/TaskFlow/taskFLOW.vbproj Normal file

File diff suppressed because it is too large Load Diff