Тема: Пошук в ClientDataSet

Потрібно дізнатися чи в ClientDataSet є вказаний рядок. З того що знайшов:

ClientDataSet1.Filter := 'Name LIKE ' + QuotedStr(Edit1.Text);
ClientDataSet1.Filtered := False;
if ClientDataSet1.FindFirst then ShowMessage('Yes')

Але повʼязаний DBGrid все одно на це реаагує переміщаючись до першого знайденого. Як цього уникнути?

2

Re: Пошук в ClientDataSet

DBGrid автоматично слідкує за усіма змінами датасету, навіть проста зміна активного рядка буде відображена.
Для виявлення значення без переходу на рядок підійде метод Lookup.

У вас повна маячня в коді, він просто не може правильно працювати. Треба якось так:

var
  Res: Variant;
begin
  Res := ClientDataSet1.Lookup('Name', Edit1.Text, 'Name');
  if not VarIsNull(Res) then
    ShowMessage('Yes');
Подякували: leofun01, javascriptIsLife, Torbins3

3

Re: Пошук в ClientDataSet

Як шукати щоб розрізняло прописні і не прописні?

4

Re: Пошук в ClientDataSet

Наскільки я пам'ятаю, Lookup як раз розрізняє. Деякою проблемою є зробити його навпаки нечутливим до регістру.

Подякували: leofun011

5

Re: Пошук в ClientDataSet

Є ще метод Locate, який не повертає значень, але робить знайдений рядок активним. І у нього є опції, які дозволяють вибрати, враховувати розмір літер чи ні.

Подякували: leofun011