Bartek I.

Bartek I. Systems Support and
Development Officer

Temat: Problem z filtrowaniem stringow zawierajacych nawias...

Problem z filtrowaniem stringow zawierajacych nawias kwadratowy

Witam,

Tak przedstawia się pole z produktami z którym mam problemy

Produkt [grupa_A] np Spodnie [A]
Produkt Podtyp_1 [grupa_A] np Spodnie Meskie [D]
Produkt Podtyp_2 [grupa_A] np Spodnie Damskie [D]
Produkt [grupa_B] np Smar [G]
Produkt Podtyp_1 [grupa_B] np Łożyska Toczne [G]

Pole produkt jest typu string.

Posiadam listę produktów dla których mam wyciągnąć dane z bazy, są to zarówno produkty z podtypem w nazwie jak i nie posiadające podtypu.

Zapytanie w Select Expert wygląda mniej więcej tak:
is like ["Spodnie Mesk*", "Spodnie?[*"]

Próbuje w Select Expert poprzez is like "Produkt?[*" wyciągnąć produkty które nie maja podtypu w swojej nazwie czyli po pierwszym słowie występuje lewy nawias kwadratowy [ lecz niestety Crystal zawodzi.

Stosując powyższa metodę jestem w stanie wyciągnąć wszystkie wymagane produkty z podtypem ale niestety nie sprawdza się ona do wyciągania produktów bez podtypu (stosując rozróżnienie po nawiasie kwadratowym). Wygląda na to ze Crystal nie widzi nawiasu. Próbowałem zastępować poprzez CharW(91) ale nie przyniosło to oczekiwanego rezultatu.

Chwilowo poradziłem sobie w ten sposób ze początkowo pobierane są wszystkie produkty wraz z pozostałymi danymi potrzebnymi do raportu, dodałem formule która testuje czy w nazwie produktu występuje poszukiwany przeze mnie produkt przez funkcje InStr = 1. Pole z ta formula wstawiłem do raportu i poprzez Select Expert filtruje wyłącznie dla = True.
Rozwiązanie to działa tak jak potrzeba tzn nie pobiera niepotrzebnych produktów i radzi sobie z produktami z którymi pierwsza metoda nie dawała rady, tylko zastanawia mnie dlaczego pierwszy sposób zawodzi, możne ktoś będzie tak dobry i pomoże mi rozwiązać ten problem?
Byłbym wdzięczny za naprowadzenie mnie na trop rozwiązania, przeszukałem net ale nic nie znalazłem.
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Problem z filtrowaniem stringow zawierajacych nawias...

Odtworzyłem twoje dane i nie widzę problemu z filtrowaniem ciągów tekstowych zawierających nawias kwadratowy.

Przede wszystkim nie używaj Select Experta, który jest dość ograniczony. Od razu przejdź do edytora formuł, który jest dostępny po wybraniu w menu opcji Report | Selection Formulas Record

wpisz na przykład:

{Products.ProductName} like "*Spodnie Mesk*"


Otrzymasz rekordy, które zawierają w nazwie podciąg Spodnie Mesk

Jeśli chcesz wykluczyć takie przypadki, to zastosuj not like ale w następują sposób:


not({Products.ProductName} like "*Spodnie Mesk*")


Pamiętaj, że w CR negacja, nie jest operatorem lecz funkcją.

Nie wiem tylko czy to rozwiązuje twój problem. Jeśli nie, napisz na forum, to znajdziemy rozwiązanie.Marcin Sulecki edytował(a) ten post dnia 29.04.13 o godzinie 14:21



Wyślij zaproszenie do