Dark Elf |
Отправлено: 01.10.2003, 12:32 |
|
Не зарегистрирован
|
Уважаемые мастера!
Я хочу сделать поиск по всем полям в базе данных
Делаю я его следующим образом
AnsiString find_str = InputBox("Введите текст для поиска","","");
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT * FROM " + view);
ADOQuery1->SQL->Add("WHERE (ID LIKE '%" + find_str + "%')");
for (unsigned char index = 1;index < DBGrid1->Columns->Count;index++)
{
AnsiString find_column = view + ".\"" + DBGrid1->Columns->Items[index]->Title->Caption + "\"";
ADOQuery1->SQL->Add("OR (" + find_column + " LIKE '%" + find_str + "%')");
}
ADOQuery1->Open();
При этом оно ищет только в первой колонке.
Не подскажете ли как это исправить?
Заранее благодарен за ответ
|
|
BUBL1n |
Отправлено: 24.02.2004, 18:42 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 10
|
Попробуй так:
CODE |
{
ADOQuery1->Active=0;
ADOQuery1->SQL->Text="select * from eff_car";
ADOQuery1->Active=1;
TStringList *l = new TStringList();
for (int i=0;i<ADOQuery1->FieldList->Count;i++)
{
l->Add(ADOQuery1->FieldList->Strings[i]);
l->Add(",");
}
l->Delete(l->Count-1);
}
дальше понятно ... "select * from TABLE_NAME WHERE "+l->Text+" like MY_DEAR_FILTER"
|
//операция на нос через жопу
|
|