Hallo zusammen,
ich bin auf der Suche nach einer Lösung, wie man eine Zeichenkette oder einen Fließtext nach einem bestimmten Suchmuster durchsuchen kann.
Konkret: Mails von Kunden (Fragen zur Rechnung etc.) sollen im Feld "Subject" und "Body" nach einer ggf. im Text vorkommenden Rechnungsnummer durchsucht werden. Diese ist zwar vom Format her "fix" (mit '0' beginnend, neunstellig, numerisch, ohne Leer- oder Sonderzeichen => Beispiel: 058711112), aber man kennt ja die Kunden... die haben so ihre eigene Schreibweise, z. B. 058-711-112 oder 058.711.112 oder 058 711 112 oder oder oder.
Als "Feature" können sogar mehrere Rechnungsnummern in einer Mail stehen, die sollen dann in ein Array überführt werden, aber das steht hier nicht zur Diskussion... ;-)
Gibt es irgendwie erstmal eine Möglichkeit, die genannten Felder per Script oder Formel zu durchsuchen und die Rechnungsnummer in einer Variablen zu "isolieren"... Meinen ersten Ansatz (siehe unten) habe ich mal mit dem Like-Operator versucht. Wäre das der richtige Weg oder habt ihr ggf. noch andere Lösungsansätze?
Mit einer 100% Trefferquote rechne ich allerdings nicht, hoffe nur die "Masse" damit abdecken zu können.
check = uidoc.FieldGetText("Subject")
If check Like "###*###*###" Then
Call uidoc.FieldSetText("Ergebnis", "Treffer!")
End If
Danke und Gruß
Frank
Okay... bis jetzt habe ich den folgenden Code... zuerst wird überhaupt mal mit Like *###* geprüft, ob das Suchmuster im Text vorkommt, dann werden die Zahlen nach und nach in einen String geschrieben. Ist er neunstellig (wie die Rechnungsnummer sein sollte), wird diese in ein Array geschrieben und später noch auf Plausibilität und Bestand geprüft.
treffer = 0 ' Flag für gefundene Zeichenkette
k = 0 ' Zähler Array ReNr von Kunde
subject = doc.GetItemValue("Subject")
body = doc.GetItemValue("Body")
check = subject(0) & body(0)
If check Like "?###*###*###*" Then
treffer = 1
End If
If treffer = 1 Then
Dim kazArray() As String
For i = 1 To Len(check)
cchar = Mid(check, i, 1)
If cchar Like "[0123456789]" Then ' Nummer gefunden.
tchar = tchar & cchar
If Len(tchar) = 9 Then
Print tchar & "< Treffer!"
Redim Preserve kazArray(k)
kazArray(k) = tchar
k = k + 1
tchar = ""
End If
End If
Next
End If
' --- Alle gesammelten Nummern auf Plausibilität prüfen
If treffer = 1 And k > 0 Then
' Plausiprüfungen:
' 1) Nummernkreis
' 2) Prüfziffer
' 3) Bestand (Indexdaten-GA) = zusätzliche Prüfung
For i = 0 To Ubound(kazArray)
Print kazArray(i)
Next
End If
Hm... ob das ein g'scheiter Ansatz sein mag...?! Mal schau'n.
Gruß
Frank