Autor Thema: Stringwert in einer Stringliste suchen  (Gelesen 2150 mal)

Offline xeros

  • Frischling
  • *
  • Beiträge: 17
Stringwert in einer Stringliste suchen
« am: 28.05.08 - 20:48:56 »
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

« Letzte Änderung: 28.05.08 - 20:51:08 von xeros »

Glombi

  • Gast
Re: Stringwert in einer Stringliste suchen
« Antwort #1 am: 28.05.08 - 21:37:00 »
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

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 248
  • Geschlecht: Männlich
Re: Stringwert in einer Stringliste suchen
« Antwort #2 am: 29.05.08 - 07:45:32 »
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; ", "))

Offline xeros

  • Frischling
  • *
  • Beiträge: 17
Re: Stringwert in einer Stringliste suchen
« Antwort #3 am: 29.05.08 - 15:50:35 »
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

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 248
  • Geschlecht: Männlich
Re: Stringwert in einer Stringliste suchen
« Antwort #4 am: 29.05.08 - 16:48:20 »
Mich wundert die Zeile
 @If(_gefundene != 0;

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


-Werner

Offline xeros

  • Frischling
  • *
  • Beiträge: 17
Re: Stringwert in einer Stringliste suchen
« Antwort #5 am: 03.06.08 - 11:45:30 »
Hast recht ... wird angepasst.
Funktioniert zwar auch mit 0 aber deine Variante ist schöner.

Gruß Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz