1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

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

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

    Репутация:
    0
    Здравствуйте!
    Есть такой код:
    Код:
    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

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

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

    Код:
    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. Гость

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

    Репутация:
    0
    Код:
    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. erlan1749
    Ответов:
    2
    Просмотров:
    82
  2. Unkown_
    Ответов:
    14
    Просмотров:
    184
  3. thunder
    Ответов:
    3
    Просмотров:
    456
  4. MrNik
    Ответов:
    6
    Просмотров:
    204
  5. Hehabr
    Ответов:
    0
    Просмотров:
    198
Статус темы:
Закрыта.

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