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

 
Поиск в БД Paradox, созданной в Database Desktop
Dmitri
  Отправлено: 19.06.2003, 14:08


admin@localhost

Группа: Модератор
Сообщений: 110



Реализовал поиск по колонкам DBGrid. Но как сделать поиск НЕ по первым символам в ячейке, а в целом, по ее содержимому?

Например, у меня есть ячейка "Сайт CBuilder". Если я начну искать стандартнм методом:

CODE

Table1->IndexFieldNames="Num";
Table1->FindNearest(&TVarRec(edSearch->Text),0);


То программа не найдет ячейку "Сайт CBuilder". Как сделать так, чтобы нашла?
Admin
Отправлено: 19.06.2003, 17:18


Владимир

Группа: Администратор
Сообщений: 1190



CODE


Table1->IndexFieldNames="NameSite";
Table1->FindKey(ARRAYOFCONST(("Сайт CBuilder")));

или то-же самое немного подробнее:

Table1->IndexFieldNames="NameSite";
TVarRec vr = ("Сайт CBuilder");
Table1->FindKey(&vr, 0);

---

Если поиск без исрользования индексов, то можно

if(Table1->Locate("NameSite","Сайт CBuilder",TLocateOptions())){
   ShowMessage("Ok ! Record find !");
   }



Dmitri
Отправлено: 19.06.2003, 18:11


admin@localhost

Группа: Модератор
Сообщений: 110



Я не так сформулировал вопрос. У меня есть строка "Сайт CBuilder", мне надо, чтобы если пользователь ищет "CBuilder", он нашел эту строку (если. конечно нет строки "Сайт CBuilder").

Т.е. мне нужно т.н. "неточное соответствие".
Admin
Отправлено: 23.06.2003, 08:29


Владимир

Группа: Администратор
Сообщений: 1190



CODE


Query1->Close();
AnsiString s = "Select * from Card where Name like ";
s = s + "'%" + Edit1->Text + "%'";
Query1->SQL->Clear();
Query1->SQL->Add(s);
Query1->Open();



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