C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Поиск по всем полям
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"


//операция на нос через жопу

Вернуться в Работа с базами данных в C++Builder