Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Stosowanie "Like" w DataTable.Select
bogdan




Typ: neutral
Postów: 46
Zarejestrowany: Nov 2003
Stosowanie "Like" w DataTable.Select

Witam.
Mam problem z zastosowaniem klauzuli Like w wyrażeniu:
Dim dtbTable As DataTable
Dim dtrwData As DataRow()
dim strSelect as string = "[PoleTbl] Like " & chr(34) & "325*1" & chr(34) & ""
dtrwData = dtbTable.Select(strSelect)
.............................

W powyższej postaci u mnie nie działa. Po zamianie cudzysłowu na apostrof i jeżeli ostatnim znakiem ciągu jest gwiazdka - zwraca spodziewane wyniki.
Może ktoś wie jak to napisać żeby działało również dla innych ciągów (np: "[PoleTbl] Like '03[1-5]*'"; "[PoleTbl] Like '53*#82'"; itp) ?
Ps :
PoleTbl = Tekst(15)
Baza = MSAccess
Pozdrawiam wszystkich Bogdan


_____________________________________________
Bogdan

24-01-2005 12:47
Pokaż profil bogdan  Wyślij email do bogdan   
musman
www.codec.pl



Typ: neutral
Postów: 202
Zarejestrowany: Mar 2003

witam
powiem tak ... nie robie select tylko RowFilter w dataview przez co ograniczam przepisywanie danych z tablicy do innej tablicy ...
przyklad
dane mamy w jakims datasecie i przpisujemy okeslona tabele do dataview
nastepnie budujemy stringa filtrujacego
"kolumna LIKE 'dane' AND kolumna2 LIKE '#dane#' AND kol_liczba >0"
nastepnie przypisujemy RowFilter na DataView
DataView.RowFilter = "kolumna LIKE 'dane' AND kolumna2 LIKE '#dane#' AND kol_liczba >0"
teraz mozemy podpiac DataView do Grida czy cokolwiek innego z nim robic.
MSDN :
datatable.select
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatadatatableclassselecttopic.asp

dataview.rowfilter
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatadataviewclassrowfiltertopic.asp

24-01-2005 13:02
Pokaż profil musman  Wyślij email do musman   Odwiedź stronę musman       13495362    3559336
bogdan




Typ: neutral
Postów: 46
Zarejestrowany: Nov 2003

Też tak robię, ale w dataview.rowfilter  również nie działa:
         
dim Widok = New DataView
dim strSelect as string = "[PoleTbl] Like '325*1'"

With Widok
    .Table = Tablica   
    .AllowDelete = False
    .AllowNew = False
    .AllowEdit = False
    .RowFilter = strSelect
End With



_____________________________________________
Bogdan

24-01-2005 13:40
Pokaż profil bogdan  Wyślij email do bogdan   
musman
www.codec.pl



Typ: neutral
Postów: 202
Zarejestrowany: Mar 2003

TRY THIS :
dim strSelect as string = "kolumna LIKE '325%' AND kolumna LIKE '%1'"

pozdrawiam
p.s. mozesz zrobic funkcje ktora bedzie budowac stringa odpowiedzialnego za filtrowanie ...

[Post edytowany dnia 24-01-2005 14:04 przez musman]

24-01-2005 14:02
Pokaż profil musman  Wyślij email do musman   Odwiedź stronę musman       13495362    3559336
bogdan




Typ: neutral
Postów: 46
Zarejestrowany: Nov 2003

To nie załatwia mojego problemu, bo chciałbym żeby to użytkownik definiował warunki wyszukiwania w polu tekstowym używając dostępnych symboli. Przykład z postu("[PoleTbl] Like '325*1') jest tylko jedną z możliwości. Chodziłoby mi o bardziej uniwersalne rozwiązanie obejmujące również zakresy ([cyfra-cyfra]*; *[!cyfra,cyfra]; itp).


_____________________________________________
Bogdan

24-01-2005 14:28
Pokaż profil bogdan  Wyślij email do bogdan   
musman
www.codec.pl



Typ: neutral
Postów: 202
Zarejestrowany: Mar 2003

ok wiec pytanie moje wyglada tak ...
... uzytkownik wprowadza warunki w jakiej postaci ? ... jakiego typu dane sa w omawianej kolumnie ? Tekst(15) ?
(uzytkownik wprowadza warunki w jakiej postaci)- wg tego co user wprowadzi mozna zbudowac zapytanie ktore bedzie filtrowac ale nakresl mniej wiecej jak to wyglada

24-01-2005 14:44
Pokaż profil musman  Wyślij email do musman   Odwiedź stronę musman       13495362    3559336
bogdan




Typ: neutral
Postów: 46
Zarejestrowany: Nov 2003

W kolumnie dane są typu tekst(max. 15 znaków).
Użytkownik miałby wpisywać szablon wyszukiwania z możliwością stosowania symboli wieloznacznych (*#[]). Przykładowo: "u[1-5]#15" (ciąg rozpoczynający się od litery "u" + cyfra z zakresu 1-5 + dowolna cyfra i kończący się liczbą 15). Pozdrawiam


_____________________________________________
Bogdan

25-01-2005 07:28
Pokaż profil bogdan  Wyślij email do bogdan   
musman
www.codec.pl



Typ: neutral
Postów: 202
Zarejestrowany: Mar 2003

witam ...
troszle pomyslalem i tak mysle ze bedzie to dosc zawile ... mozesz napisac funkcje ktora bedzie rozbijac stringa i z niego budowac zapytanie filtrujace ... stosowanie tak zawilych sposobow filtrowania danych powoduje ze w momencie kiedy uzytkownik dostaje wynik zerowy nie wie czy tak naprawde faktycznie nic nie ma czy moze walnal byka w zapytaniu ...

[Post edytowany dnia 26-01-2005 17:42 przez musman]

25-01-2005 20:38
Pokaż profil musman  Wyślij email do musman   Odwiedź stronę musman       13495362    3559336
bogdan




Typ: neutral
Postów: 46
Zarejestrowany: Nov 2003

witam ...
Masz rację, napisanie takiej funkcji będzie zawiłe. Cały problem wziął się z tego, że przenoszę działający program (w VBA) na platformę NET. W Access'ie wszystko działa bez zarzutu (poza szybkością) - wnoszę z tego, że problem leży gdzieś po stronie VB.NET'a (post napisałem dlatego bo myślałem, że ktoś zetknął się już z podobnym problemem i wie jak go rozwiązać). Pozdrawiam wszystkich Bogdan


_____________________________________________
Bogdan

28-01-2005 15:03
Pokaż profil bogdan  Wyślij email do bogdan   
musman
www.codec.pl



Typ: neutral
Postów: 202
Zarejestrowany: Mar 2003

zawile ale mozliwe ... niestety zapytania (filtry) na tablice w pamieci sa mocno ograniczone i trzeba kombinowac nieraz droga okrezna

pozdrawiam

28-01-2005 15:28
Pokaż profil musman  Wyślij email do musman   Odwiedź stronę musman       13495362    3559336
Wszystkich odpowiedzi: 9 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1