Builder Filtry

0

Czy da sie <ort>w ogóle</ort> zrobić taki filtr aby gdy "temp" jest np. "T" wyswietla tylko nazwisko na litere T gdy "temp" jest "Ty" to nazwiska na zaczynajace sie na Ty
musi to byc Filtr a nie zapytanie Sql ktrore wiem jak zrobić. Moze jest jakis znaczek jak w sql który oznacza dowolny znak (i) ktory mozna dodać albo cos innego.

TGosc->Filter= "nazwisko = '"+temp+"'";

0

hmm.... jezeli chcesz filtrowac tablice stringow w taki sposob jak przedstawiles, to posortuj sobie tablice bazowa wedlug znakow, a w tablicy tymczasowej umieszczaj fragment tablicy bazowej odpowiadajacej kryterium...
wowczas filtrowanie sprowadzi sie do skopiowania konkretnego i ciaglego fragmentu tablicy, czyli cos takiego:

AnsiString baza[123];
AnsiString temp[123];
AnsiString filtr = "Ty";

Sortuj_rosnaca(baza); //// procedurka, ktora sortuje baze... o sortowaniu jest na forum

int indeks =0;

for (int i=0; i<123; i++)
{
   if ( baza[i].LowerCase().Pos(  filtr.LowerCase()  )==1 )
   {
        temp[ indeks] = baza[i];
       indeks++;
   } 
}     
temp[ indeks]="koniec_tablicy";

nawet nie trzeba sortowac, no ale przy wiekszych tablicach sortowanie byloby porzadane, bo mozna wstawic procedure Break() ktora wymiernie moglaby przyspieszyc caly proces.
temp ma tyle samo elementow co baza, wiec znacznik "koniec_tablicy" informuje o tym ze nie ma wiecej nazwisk....
jezeli chodzi ci o cos innego to sprecyzuj zagadnienie

0

chodzi o to by
TGosc to jest obiekt TTable

TGosc->Filter= "nazwisko = '"+temp+"*'";
TGosc->Filtered = true;

nazwisko ---- to nazwa kolmny w tablicy
Problem jest tym mam obiekt Edit1 (szukaj) i za pomoca zdarzenie OnkeyPress chce gdy wpisze pierwsza litere <ort>Od razu</ort> przefiltowalo DBGrid1 i wyswetliło nawiska na np. T gdy wpisze T do Edit1 itd.

Potrafie to zrobic uzywajac obiktu Query1 powiazanego z DBGrid1 za pomoca zapytania Sql.
W tym przypadku musze to zrobic za pomoca fitrów ponieważ z DBGrid jest powiazane z tabela TTable1 (a dokladniej TGosc). (bo dane sa zmieniane od razu w bazie danych)

1 użytkowników online, w tym zalogowanych: 0, gości: 1