[gelöst] Suchfunktion

23. September 2010 13:47

Gibt es eine Suchfunktion, welche Leerzeichen ignoriert, quasi als ob diese garnicht vorhanden sind? Ich würde dies gern beim suchen auf der Artikelkarte benutzen.
Zuletzt geändert von misterelektro1981 am 27. September 2010 12:33, insgesamt 1-mal geändert.

Re: Suchfunktion

23. September 2010 15:26

Der Text ist "S i l b e r" geschrieben, Du möchtest aber nach "Silber" suchen und er soll sie auch finden?

Da kenn ich keine Lösung, selbst mit der Wildcard * hat man da noch Probleme.

Re: Suchfunktion

23. September 2010 15:42

Ja genau so möchte ich suchen. Schade, dass es hierzu nichts gibt.

Re: Suchfunktion

23. September 2010 16:07

Ich wollte nicht sagen, das es dafür keine Lösung gibt, ich kenne nur keine.

Vielleicht hat ja ein andere eine Idee / Lösung ???

Re: Suchfunktion

23. September 2010 16:34

pack dir den code unten mal in eine Codeunit o.Ä.
SuchString = Text
i = Integer
MerkerPosition = Integer
tempStringVar = Text

Code:
SuchString := 'T E S T123';
FOR i:= 1 TO STRLEN(SuchString) DO BEGIN
  IF STRPOS(SuchString,' ') <> 0 THEN BEGIN
    MerkerPosition := STRPOS(SuchString,' ');
    tempStringVar := COPYSTR(SuchString,1,MerkerPosition-1);
    SuchString := tempStringVar + COPYSTR(SuchString,MerkerPosition + 1,STRLEN(SuchString) - MerkerPosition);
  END;
END;
MESSAGE(SuchString);


Als Ausgabe bekommst du dann TEST123

evtl. solltest du die Funktion so erweitern, dass die maximale Länge des Suchstring nicht überschritten werden kann.

Re: Suchfunktion

24. September 2010 00:10

elroberto hat geschrieben:pack dir den code unten mal in eine Codeunit o.Ä.
SuchString = Text
i = Integer
MerkerPosition = Integer
tempStringVar = Text

Code:
SuchString := 'T E S T123';
FOR i:= 1 TO STRLEN(SuchString) DO BEGIN
  IF STRPOS(SuchString,' ') <> 0 THEN BEGIN
    MerkerPosition := STRPOS(SuchString,' ');
    tempStringVar := COPYSTR(SuchString,1,MerkerPosition-1);
    SuchString := tempStringVar + COPYSTR(SuchString,MerkerPosition + 1,STRLEN(SuchString) - MerkerPosition);
  END;
END;
MESSAGE(SuchString);


Als Ausgabe bekommst du dann TEST123

evtl. solltest du die Funktion so erweitern, dass die maximale Länge des Suchstring nicht überschritten werden kann.


Muchas gracias estimado Don Roberto, das ist auch für mich hilfreich ;)

Re: Suchfunktion

24. September 2010 08:03

Danke für die Antworten. Und was mache ich nachdem ich das ganze in eine Codeunit eingebaut habe? Wie wird denn dann der Bezug zur Artikelkarte hergestellt?

Re: Suchfunktion

24. September 2010 09:36

elroberto hat geschrieben:
Code:
SuchString := 'T E S T123';
FOR i:= 1 TO STRLEN(SuchString) DO BEGIN
  IF STRPOS(SuchString,' ') <> 0 THEN BEGIN
    MerkerPosition := STRPOS(SuchString,' ');
    tempStringVar := COPYSTR(SuchString,1,MerkerPosition-1);
    SuchString := tempStringVar + COPYSTR(SuchString,MerkerPosition + 1,STRLEN(SuchString) - MerkerPosition);
  END;
END;
MESSAGE(SuchString);


Als Ausgabe bekommst du dann TEST123

Ist das "Delchr(Suchstring,'=',' ')" in kompliziert oder seh ich den Trick nicht?

Re: Suchfunktion

24. September 2010 10:07

misterelektro1981 hat geschrieben:Danke für die Antworten. Und was mache ich nachdem ich das ganze in eine Codeunit eingebaut habe? Wie wird denn dann der Bezug zur Artikelkarte hergestellt?


Ich vermute mit einem Button auf der Form Artikelübersicht, der Codeunit.RUN enthält?
Und wenn die CU aufgerufen wird, gibst du ihr als Parameter den Suchstring mit.
Du solltest die CU allerdings so erweitern, dass sie alle S I L V E R, Silver, S il ve r etc. etc. satzmarkiert, wenn sie sie findet:
http://www.navision24.de/befehle/clearmarks.html
MARK setzt blaue Satzmarken.

Re: Suchfunktion

24. September 2010 11:44

Lord_British hat geschrieben:
misterelektro1981 hat geschrieben:Danke für die Antworten. Und was mache ich nachdem ich das ganze in eine Codeunit eingebaut habe? Wie wird denn dann der Bezug zur Artikelkarte hergestellt?


Ich vermute mit einem Button auf der Form Artikelübersicht, der Codeunit.RUN enthält?
Und wenn die CU aufgerufen wird, gibst du ihr als Parameter den Suchstring mit.
Du solltest die CU allerdings so erweitern, dass sie alle S I L V E R, Silver, S il ve r etc. etc. satzmarkiert, wenn sie sie findet:
http://www.navision24.de/befehle/clearmarks.html
MARK setzt blaue Satzmarken.


Den Button auf der Artikelkarte werde ich finden können. Aber was genau meinst du mit Weitergabe des Parameters des Suchstrings. Wie genau soll ich denn dann die Codeunit erweitern, soll das heißen, ich müsste alles vorgeben wo das Leerzeichen weggelassen werden soll? Oder wie soll ich den Befehl einbinden?

Re: Suchfunktion

25. September 2010 18:20

McClane hat geschrieben:Ist das "Delchr(Suchstring,'=',' ')" in kompliziert oder seh ich den Trick nicht?


ja war doof....
in wirklichkeit hat das was mit dem illuminaten zu tun. ein fall für galileo mysterie;)

Re: Suchfunktion

25. September 2010 22:08

elroberto hat geschrieben:in wirklichkeit hat das was mit dem illuminaten zu tun. ein fall für galileo mysterie;)

Zum Glück können die mich dank meines Aluminiumhelms nicht beeinflussen :)

Re: Suchfunktion

27. September 2010 09:39

Hallo,

nachdem das mit dem DELCHR nun geklärt ist :-D , hilft das misterelektro noch nicht so ganz weiter.
Denn bei einer Suche jeden Artikel durch zu gehen, die Texte zu komprimieren, zu schauen ob der ebenfalls komprimierte Suchtext in dem Suchfeld vorkommt, macht nur bei ein paar hundert Artikeln Sinn. Hat man ein paar Tausend, muss man schon mehr tun. Hier muss man eine zusätzliche Tabelle nutzen oder zusätzliche Felder in den Artikelstamm einbauen, die später die komprimierten Suchtexte enthalten. Diese Felder kann man dann später mit dem Suchtext einfach filtern.

Gruß, Fiddi

Re: Suchfunktion

27. September 2010 12:33

Danke fiddi das du es nochmal angesprochen hast. Ich denke für den Aufwand wird es sich nicht lohnen das umzusetzen. Damit ist für mich dieses Thema erst einaml erledigt.