ConvertFrom-SearchText #
ÜBERSICHT #
Zerlegt den Suchtext einer Liste in Suchworte und Betragsangaben (“142,80”, “ca 140”, “140..150”, “-150 bis 150”, “>100”).
SYNTAX #
ConvertFrom-SearchText [[-Text] <string>] [[-Lang] <string>] [[-ApproxPercent] <int>] [[-BothText]
<string>] [<CommonParameters>]
BESCHREIBUNG #
Eine Suche, die nur Text kennt, findet Beträge schlecht: “142,80” trifft nichts, wenn der Betrag als 142.80 gespeichert ist, und “142” trifft jede IBAN mit dieser Ziffernfolge (CN 02.10.2026 in den Kontoauszügen: “wenn ich diese 142,80 suche, suche ich mir einen Wolf”). Diese Funktion liest Betragsangaben eigens. Jede Liste der X-Suite, die beim Server sucht und einen Betrag führt, benutzt sie - so sucht man überall gleich.
Ohne Vorzeichen zählen beide Richtungen, mit Vorzeichen nur die genannte.
142,80 142.80 1.234,56 genau dieser Betrag (zusätzlich als Text)
=140 140 EUR 140€ genau 140,00 (eine ganze Zahl allein
bleibt ein Suchwort: Rechnungsnummer)
-142,80 +357 genau, nur negativ bzw. nur positiv
ca 140 ca. 140 ~140 etwa 140 circa 140 about 140
ungefähr: ApproxPercent darunter bis
darüber (bei 10 Prozent 126 bis 154)
140..150 140-150 140 bis 150 von 140 bis 150
zwischen 140 und 150 Bereich, die Grenzen in jeder Reihenfolge.
Der Bindestrich gilt nicht, wenn eine
Seite wie eine Jahreszahl aussieht oder
mit Null beginnt (2026-04, 12-2025):
das sind Stücke von Nummern
-150 bis 150 -150..150 Bereich mit Vorzeichen: von -150 bis +150
100 >=100 <50 <=50 größer, ab, kleiner, bis
Zahlen in deutscher oder englischer Schreibweise, höchstens zwei Nachkommastellen; ein folgendes EUR, Euro oder das Zeichen wird überlesen. Alles andere ist ein Suchwort; jede Angabe muss zutreffen.
Je Angabe ein Eintrag in Terms:
Kind = 'text' Like (Muster für LIKE ?, klein, Platzhalter maskiert)
Kind = 'amount' Sql Bedingung mit {0} für den Spaltenausdruck des
Betrags MIT Vorzeichen, etwa 'e.Amount'. Die
Zahlen stehen fest und unveränderlich
formatiert im Text: sie stammen aus der
eigenen Umrechnung, nie aus der Eingabe.
Like leer oder das Muster, wenn die Angabe auch
ein Text sein kann (142,80 oder 140-150);
der Aufrufer verbindet es mit ODER
Signed, Low, High, LowOpen, HighOpen
dieselbe Angabe für Listen, die im Speicher
filtern (Test-SearchAmount)
Note sagt in der Bediensprache, wie die Betragsangaben verstanden wurden (“Betrag 126,00 bis 154,00 (ca. 140,00), Eingang und Ausgang”). Die Liste zeigt sie über dem Gitter (summary.text). BothText ersetzt den Zusatz für Angaben ohne Vorzeichen, etwa “, Rechnung und Gutschrift” bei Eingangsrechnungen.
Der Spaltenausdruck für {0} kommt vom Aufrufer und muss fest im Code stehen, nie aus einer Anfrage:
$cond = ([string]$term.Sql) -f 'e.Amount'
PARAMETER #
-Text #
Type: string
Default: ''
Der Suchtext, wie der Anwender ihn eingegeben hat.
-Lang #
Type: string
Default: 'de'
Bediensprache für Note (de, sonst englisch).
-ApproxPercent #
Type: int
Default: 10
Wie viel Prozent “ca” nach unten und oben zulässt (Vorgabe 10).
-BothText #
Type: string
Zusatz in Note für Angaben ohne Vorzeichen. Vorgabe “, Eingang und Ausgang” bzw. “, incoming and outgoing”.
AUSGABEN #
hashtable - Terms (object[]), Note (string)
BEISPIELE #
$p = ConvertFrom-SearchText -Text 'muster ca 140'
foreach ($t in $p.Terms) {
if ($t.Kind -eq 'amount') { $where += '(' + (([string]$t.Sql) -f 'e.Amount') + ')' }
else { $where += 'e.SearchText LIKE ?'; $params += $t.Like }
}