Вопрос по фильтру для Adotable

Тема в разделе "Delphi - Базы данных", создана пользователем -, 7 сен 2011.

Статус темы:
Закрыта.
  1. Гость

    Здравствуйте!
    Есть такой код:
    Код (Text):
    procedure TForma1.Edit1Change(Sender: TObject);
    begin
    if Length(Edit1.Text)>0 then
    DataModule1.ADOTable1.Filtered:=true
    else
    DataModule1.ADOTable1.Filtered:=false;
    DataModule1.ADOTable1.Filter:='f1>'''+Edit1.Text+'''';
    end;
    Хотелось бы, чтобы при изменении значения Edit1.Text, включался фильтр для ADOTable1 для поля f1. Т.е. чтобы в DBGrid попадали записи, в которых поле f1 начинается с текста в Edit1. При этом по мере набора текста в Edit1 отфильтровывалось ненужное. Указанная процедура компилится, но результата нет - ненужное не отбрасывается.
    Помогите пожалуйста!
     
  2. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    во-первых. Включать Filtered нужно после изменения свойства Filter.
    Во-вторых. Неуверен но можно попробовать делать рефреш или клоус+опен, но не факт - не помню.

    Попробуйте так:

    Код (Text):
    procedure TForma1.Edit1Change(Sender: TObject);
    begin
    DataModule1.ADOTable1.close;//возможно не потребуется
    DataModule1.ADOTable1.Filtered:=false;
    DataModule1.ADOTable1.Filter:='f1 Like '''+Edit1.Text+'''%';
    DataModule1.ADOTable1.Filtered:=true;
    DataModule1.ADOTable1.open;//возможно не потребуется
    end;
    Спец символ (% или *) зависит от используемой СУБД.
    Like также зависит от регистра по умолчанию.
     
  3. Гость

    Код (Text):
    if Edit1.Text = '' then Exit;
    DataModule1.AdoTable1.Filter := Format('[f1] like '+#39+'%s%%'+#39, [Edit1.Text]);
    DataModule1.AdoTable1.Filtered := True;
    Остановился на таком варианте. Спасибо за ответ
     
  4. Гость

    Код (Text):
    procedure TForm1.ADOTable4FilterRecord(DataSet: TDataSet;
    var Accept: Boolean);
    var
    FieldVal:string;
    begin
    if ADOTable4.TableName='Изделие' then
    begin
    FieldVal := DataSet['Название'];
    Accept := copy(FieldVal, 1, length(edit11.text))=edit11.Text;
    end
    end;

    procedure TForm1.Edit11Change(Sender: TObject);
    begin
    if Length(Edit11.Text) > 0 then
    begin
    ADOTable4.Filtered:=false;
    ADOTable4.Filtered:=true;
    end
    else ADOTable4.Filtered:=false;
    end;

    Добавлено: только под свое переделаешь вырвал кусок из своего кода
     
Загрузка...
Похожие Темы - Вопрос по фильтру
  1. ApplePen
    Ответов:
    0
    Просмотров:
    55
  2. gURaBA_N
    Ответов:
    3
    Просмотров:
    91
  3. kartaman
    Ответов:
    0
    Просмотров:
    126
  4. Peter
    Ответов:
    4
    Просмотров:
    519
  5. di0d_
    Ответов:
    1
    Просмотров:
    433
Статус темы:
Закрыта.

Поделиться этой страницей