Moin!
ich habe da noch eine etwas kompliziertere Sache.
Es gibt eine Klasse für die Bearbeitung von Parametern "Properties"
Spoiler anzeigen
Nun bin ich im Hauptprogramm und rufe eine Funktion in einer anderen Klasse auf:
Hier geht es um die Zeile 6.
Spoiler anzeigen
Im weiteren Verlauf geht es um die Zeile 38.
Im Bereich der If-Abfrage ist der Key "DatumVorbescheid" noch nicht enthalten. Verfolge ich im Debugger die Add-Funktion, dann ist dort, wo der Wert zugewiesen wird dieser auch in dem Dictionary enthalten.
Kehrt der Debugger wieder in "AnalyseZAndrohungFestsetzung" zurück, dann fehlt der Key "DatumVorbescheid" wieder.
Ich dachte aber in der Zeile mit der Übergabe an die Funktion
alles richtig gemacht zu haben.
Aber irgendwie funktioniert das nicht. Hmmmmm
Kann mir einer weiterhelfen?
Gruß Jan
ich habe da noch eine etwas kompliziertere Sache.
Es gibt eine Klasse für die Bearbeitung von Parametern "Properties"
VB.NET-Quellcode
-
- Imports System.Reflection
- Imports System.Windows.Forms
- Imports System.IO
- Public Class Properties
- Private _objDoc As Word.Document
- Private _KeyWords As New Dictionary(Of String, String)
- Public Sub New(objDoc As Word.Document)
- _objDoc = objDoc
- _KeyWords = GetKeywords
- End Sub
- ''' <summary>
- ''' Auslesen der FID für das JOURNAL
- ''' </summary>
- ''' <returns>FID Journal</returns>
- Public ReadOnly Property FID_Journal() As Long
- Get
- If _KeyWords.Count = 0 Then Return -1
- If _KeyWords.ContainsKey("FID_JOURNAL") = False Then Return -1
- Return CLng(_KeyWords("FID_JOURNAL"))
- End Get
- End Property
- ''' <summary>
- ''' Auslesen der FID für das GENEHMIGUNG
- ''' </summary>
- ''' <returns>FID_Genehmigung</returns>
- Public ReadOnly Property FID_Genehmigung() As Long
- Get
- If _KeyWords.Count = 0 Then Return -1
- If _KeyWords.ContainsKey("FID_GENEHMIGUNG") = False Then Return -1
- Return CLng(_KeyWords("FID_GENEHMIGUNG"))
- End Get
- End Property
- ''' <summary>
- ''' Auslesen der FID für den Sachbearbeiter
- ''' </summary>
- ''' <returns>FID_Sachbearbeiter</returns>
- Public ReadOnly Property FID_Sachbearbeiter() As Long
- Get
- If _KeyWords.Count = 0 Then Return -1
- If _KeyWords.ContainsKey("FID_SACHBEARBEITER") = False Then Return -1
- Return CLng(_KeyWords("FID_SACHBEARBEITER"))
- End Get
- End Property
- ''' <summary>
- ''' Auslesen des Projektnamens
- ''' </summary>
- ''' <returns>Projektname und wenn keiner übergeben dann wird zur Sicherheit der Entwicklungsname übergeben</returns>
- Public ReadOnly Property Project() As String
- Get
- If _KeyWords.Count = 0 Then Return "ENTWICKLUNG_2020_06"
- If _KeyWords.ContainsKey("PROJEKT") = False Then Return "ENTWICKLUNG_2020_06"
- Return _KeyWords("PROJEKT")
- End Get
- End Property
- ''' <summary>
- ''' Key vorhanden?
- ''' </summary>
- ''' <param name="Key">zu prüfender Key</param>
- ''' <returns>true .. vorhanden / false ... nicht vorhanden</returns>
- Public ReadOnly Property ContainsKey(Key As String) As String
- Get
- Return _KeyWords.ContainsKey(Key)
- End Get
- End Property
- ''' <summary>
- ''' Wert auslesen
- ''' </summary>
- ''' <param name="Key">auszulesender Wert</param>
- ''' <returns>Wert oder Leerstring</returns>
- Public ReadOnly Property Item(Key As String) As String
- Get
- If _KeyWords.ContainsKey(Key) Then Return _KeyWords(Key)
- Return ""
- End Get
- End Property
- ''' <summary>
- ''' Key hinzufügen, wenn nicht vorhanden
- ''' </summary>
- ''' <param name="Key">zu verwendender Key</param>
- ''' <param name="Value">zu setzender Wert</param>
- ''' <param name="Overwrite">optional überschreiben (default:=false)</param>
- Public Sub Add(Key As String, Value As String, Optional Overwrite As Boolean = False)
- If _KeyWords.ContainsKey(Key) = True Then
- If Overwrite = True Then
- _KeyWords(Key) = Value
- End If
- Else
- _KeyWords.Add(Key, Value)
- End If
- End Sub
- End Class
Nun bin ich im Hauptprogramm und rufe eine Funktion in einer anderen Klasse auf:
VB.NET-Quellcode
Hier geht es um die Zeile 6.
VB.NET-Quellcode
-
- ''' <summary>
- ''' Handelt es sich um Zwangsgeldandrohungsbescheid/Zwangsgeldfestsetzungsbescheid
- ''' </summary>
- ''' <param name="fKeyword">Klasse mit den docEigenschaften (Keywords)</param>
- ''' <param name="Refresh">optional den Text neulesen</param>
- Public Sub AnalyseZAndrohungFestsetzung(ByRef fKeyword As EBL.WordAddin.Properties, Optional Refresh As Boolean = False)
- If Refresh = True Then ReadWordText()
- Dim Data2Analyze As String = ""
- If fKeyword.ContainsKey("DatumVorbescheid") = True Then Exit Sub ' damit das nicht mehrfach abgefragt wird
- Dim Pattern As New Text.RegularExpressions.Regex("{Zwangsgeldandrohungsbescheid\/Zwangsgeldfestsetzungsbescheid}", RegexOptions.Singleline)
- Try
- For Each m As Text.RegularExpressions.Match In Pattern.Matches(_TextOfDoc)
- ' hier liegt der Platzhalter vor
- Dim sDate_Androhung As String = "./."
- Dim sDate_Festsetzung As String = "./."
- If fKeyword.ContainsKey("DatumAndrohung") Then sDate_Androhung = fKeyword.Item("DatumAndrohung")
- If fKeyword.ContainsKey("DatumZwang") Then sDate_Festsetzung = fKeyword.Item("DatumZwang")
- Dim f As New frm_GsewGenehmigung_ZAndroh_ZFestsetz(sDate_Androhung, sDate_Festsetzung)
- With f
- If .ShowDialog = DialogResult.OK Then
- If .rb_Androhung.Checked = True Then
- If fKeyword.ContainsKey("Zwangsgeldandrohungsbescheid/Zwangsgeldfestsetzungsbescheid") = False Then fKeyword.Add("Zwangsgeldandrohungsbescheid/Zwangsgeldfestsetzungsbescheid", "Zwangsgeldandrohungsbescheid")
- Else 'Festsetzung
- If fKeyword.ContainsKey("Zwangsgeldandrohungsbescheid/Zwangsgeldfestsetzungsbescheid") = False Then fKeyword.Add("Zwangsgeldandrohungsbescheid/Zwangsgeldfestsetzungsbescheid", "Zwangsgeldfestsetzungsbescheid")
- End If
- Dim sDatumVorbescheid As String = .txt_DatumVorbescheid.Text
- If Not sDatumVorbescheid = "./." Then
- If fKeyword.ContainsKey("DatumVorbescheid") = False Then fKeyword.Add("DaumVorbescheid", sDatumVorbescheid)
- End If
- End If
- End With
- Exit For
- Next
- Catch ex As Exception
- MessageBox.Show("Fehler bei der Suche nach {}-Platzhaltern!" & Environment.NewLine & Environment.NewLine & ex.ToString, "Fehler", buttons:=MessageBoxButtons.OK, icon:=MessageBoxIcon.Warning)
- End Try
- End Sub
Im weiteren Verlauf geht es um die Zeile 38.
Im Bereich der If-Abfrage ist der Key "DatumVorbescheid" noch nicht enthalten. Verfolge ich im Debugger die Add-Funktion, dann ist dort, wo der Wert zugewiesen wird dieser auch in dem Dictionary enthalten.
Kehrt der Debugger wieder in "AnalyseZAndrohungFestsetzung" zurück, dann fehlt der Key "DatumVorbescheid" wieder.
Ich dachte aber in der Zeile mit der Übergabe an die Funktion
alles richtig gemacht zu haben.
Aber irgendwie funktioniert das nicht. Hmmmmm
Kann mir einer weiterhelfen?
Gruß Jan