Filtrowanie rekordów nie liczbowych przez komponent TADOTable wygląda całkiem inaczej jak w TTable (nie używa znaku =) i możliwe jest użycie znaku % zamiast *.
Składnia filtra dla pojedynczej kolumny:
- Kod: Zaznacz cały
NazwaKolumny+" Like '%SłowoSzukane%'";
Składnia filtra dla 2 kolumn:
- Kod: Zaznacz cały
NazwaKolumny1 + " Like '%SłowoSzukane%' or "+ NazwaKolumny2 +" Like '%SłowoSzukane%'";
W całym filtrze ważne są spacje i słowo Like pisane z uwzględnieniem wielkości liter i SPACJI do momentu ujęcia szukanej frazy w apostrofy.
Słowo or pozwala na dodanie kolejnego kryterium wyszukiwania (zwiększa ilość wyników), a słowo and dodaje kolejny warunek do spełnienia przez rekordy bazy (zawęża ilość wyników).
Jeżeli nazwa kolumny posiada Spację to należy ją umieścić w nawiasie kwadratowym [ ].
Jeżeli filtrujemy wartości liczbowe to słowo Like należy zastąpić wyrażeniami matematycznymi np: < , > , = .
- Kod: Zaznacz cały
void __fastcall TForm2::Edit1KeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Edit1->Text!="") { // nie uruchomi filtracji jeżeli pole będzie puste
if (Key==VK_RETURN) {// filtracja rozpocznie się po naciśnięciu ENTER
TADOTable1->Filtered = false; //wyłącza filtrację
Label1->Caption = TADOTable1->Fields->Fields[1]->DisplayLabel;// Pomoże nam zorientować się po jakiej kolumnie program filtruje
//(polecam używanie numeru kolumny z uwagi na łatwiejszą implementację zmiany)
TADOTable1->Filter=TADOTable1->Fields->Fields[1]->DisplayLabel+" Like '%"+Edit1->Text+"%'"; // Treść filtra
TADOTable1->Filtered = true;// filtruj tablicÄ™
}
} else {TADOTable1->Filtered = false;}// jeżeli brak textu w kontrolce Edit1 to wyłącz filtr
}
Poprawiono nieścisłości w filtrowaniu wyrażeń liczbowych dzięki: Witoldowi, Cyfrowemu Baronowi i Banicie