Требуется сделать фильтр по базе в процессе ввода текста. Делаю таким образом PHP: void __fastcall TForm1::ArtEd2Change(TObject *Sender) { if (ArtEd2->Text.Length()>0) { ViewUATb->Filtered = false; if (ModEd2->Text.Length()>0 && AnalEd2->Text.IsEmpty()) ViewUATb->Filter = "Артикул LIKE '" + String("%") + ArtEd2->Text + "%'" + " and Модель LIKE '" + String("%") + ModEd2->Text + "%'"; if (ModEd2->Text.Length()>0 && AnalEd2->Text.Length()>0) ViewUATb->Filter = "Артикул LIKE '" + String("%") + ArtEd2->Text + "%'" + " and Модель LIKE '" + String("%") + ModEd2->Text + "%'" + " and Аналог LIKE '" + String("%") + AnalEd2->Text + "%'"; if (ModEd2->Text.IsEmpty() && AnalEd2->Text.Length()>0) ViewUATb->Filter = "Артикул LIKE '" + String("%") + ArtEd2->Text + "%'" + " and Аналог LIKE '" + String("%") + AnalEd2->Text + "%'"; if (ModEd2->Text.IsEmpty() && AnalEd2->Text.IsEmpty()) ViewUATb->Filter = "Артикул LIKE '" + String("%") + ArtEd2->Text + "%'"; ViewUATb->Filtered = true; } Тут фильтр только по трем столбцам, всего их 6. Но если таким же образом делать на большее количество столбцов, то для обработки всех вариантов условий будет очень много. Может есть другой способ фильтрации на "лету"?
Конечно есть. Проверяй все поля по очереди одиночными условиями. Если какое-то поле непустое, просто добавляй к строке ViewUATb->Filter новый фильтр, типа ViewUATb->Filter += " AND ... LIKE ..."; Если строка ViewUATb->Filter пустая, то "AND" добавлять не надо. Отличное название +)