Domino 9 und frühere Versionen > ND6: Entwicklung

Stringwert in einer Stringliste suchen

(1/2) > >>

xeros:
Hallo und einen schönen guten Abend,

seid einer ganzen weile, versuche ich einen bestimmten Wert in einer Stringliste mittels Formelsprache zu finden.
Zur erläuterung.

Es gibt ein Textfeld Namens Search_Employee, einen Button Namens Suchen, der folgende Formel enthält:

_depart:=@GetField ("Department");
_art:="Notes":"NoCache";
_serverdb:="":"names.nsf";
_Ansicht:="By Category";
_key:=_depart;
_Spalte:=2;
_searchdb:=@DbLookup(_art;_serverdb;_ansicht;_key;_spalte);
_gefunden:=@Member(Search_Employee;_searchdb);
@Prompt ([Ok];"rest";_searchdb[_gefunden])

Gebe ich in dem Textfeld jetzt z.b. Max Mustermann ein. Der Name ist auch in der Datenbank "names.nsf" enthalten.
Wird der Name in der Stringliste "_searchdb" auch gefunden und ausgeben.
Gebe ich jetzt allerdings nur Max ein, gibt es eine Fehlermeldung, dass das Array nicht mehr im gültigen Bereich ist.

Hat jemand eine Idee, welche Funktion man verwenden kann, die nach Teilstrings sucht und den gesamten String zurück gibt, wenn ein Teil gefunden wurde?

Beste Grüße
Andreas

Glombi:
Beim @DbLookup gibts einen neuen Parameter ab Version 6: [PARTIALMATCH]

_searchdb:=@DbLookup(_art;_serverdb;_ansicht;_key;_spalte;[PARTIALMATCH] );

Dann werden auch Treffer gelandet, wenn der ANFANGSSTRING passt. D.h. aber keine Teilstrings, die nicht am Anfang stehen.

Andreas

Werner Götz:
Wenn der Tip bzgl. PartialMatch nicht reicht dann empfehle ich ein @Transform, der hintere Teil der Formel wäre dann also ungefähr wie folgt:

_gefundene :=
@Trim(@Transform(
  _searchdb;
  "zeile";
  @If(@Contains(zeile; Search_Employee); zeile; @Nothing)
));

@Prompt ([Ok];"rest"; @Implode(_gefundene; ", "))

xeros:
Vielen herzlichen Dank an euch,

die Tipps waren klasse und haben funktioniert.
Hier mal das was jetzt raus geworden ist:

_depart:=@GetField ("Department");
_art:="Notes":"NoCache";
_serverdb:="":"names.nsf";
_Ansicht:="By Category";
_key:=_depart;
_Spalte:=2;
@If (_depart = @Nothing;
   @Do(@Prompt ([Ok];"Warning";"Please select a Department")
   );
@Do(
      _searchdb:=@DbLookup (_art;_serverdb;_ansicht;_key;_spalte);
      @If(Search_Employee = @Nothing;
      @Do(@Prompt ([Ok];"Warning";"Please enter a name")
      );
      @Do(
      _gefundene :=@Trim(@Transform(@ProperCase  (_searchdb);"zeile";@If(@Contains(zeile; @ProperCase  (Search_Employee));             zeile; @Nothing)));
         @If(_gefundene != 0;
            @Do(
                  _select:=@Prompt ([OkCancelListMult];"Employee";"Please select employees";"";_gefundene);
                  @SetField ("SendTo";_select)
            );
                  @Do(@Prompt ([Ok];"Warning";"Name not found")
            )
         )
      ))
   )
)


Gruß
Andreas

Werner Götz:
Mich wundert die Zeile
 @If(_gefundene != 0;

_gefundene ist doch eine Textliste, man sollte also prüfen mit
 @If(_gefundene != "";


-Werner

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln