Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2008, 11:04   #11
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

можно немного поподробнее, у меня стала выбиваться другая ошибка...

чёт я не могу въехать в этот метод
когда он срабатывает? мне нужно это всё оформить в Edit1(OnChange)

Stilet
вот исходник
срочно нужен фильтр такой как я описал выше
помоги плиз, если тебя это не затруднит
Вложения
Тип файла: rar filter.rar (12.7 Кб, 27 просмотров)
Life if about choices
Make the right choice

Последний раз редактировалось mihali4; 16.02.2009 в 11:03. Причина: Объединение трех постов
TaTT DoGG вне форума Ответить с цитированием
Старый 20.05.2008, 11:36   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Хорошо, помогу. Смотри в твоем случае примерно так:
Код:
procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
   accept:=(pos(Edit1.Text,DataSet.Fields[0].AsString)<>0) or (Edit1.Text='');

end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
ADOTable1.Filtered:=false;
ADOTable1.Filtered:=true;
end;
Этот код по редактированию эдита фильтрует все записи в первом поле которых не содержится введенная подстрока
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.05.2008, 11:41   #13
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

работает, но немного не так как хотелось бы
нужно чтобы если я нажимаю на w оставались только те записи которые начинались бы на w

о, изменил <>0 на =1 и всё заработало, спс
тогда ещё вопрос, как в этом случае сделать так, чтобы не учитывался регистр букв
Изображения
Тип файла: jpg Безымянный.JPG (5.4 Кб, 100 просмотров)
Life if about choices
Make the right choice

Последний раз редактировалось mihali4; 16.02.2009 в 11:05. Причина: Объединение двух постов
TaTT DoGG вне форума Ответить с цитированием
Старый 20.05.2008, 11:43   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну а подумать? Я ж тебе условие фильтра уже дал, там POS только замени.
Или ты очередной халявщик?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.05.2008, 11:51   #15
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

всё, решил проблему через ещё одно условие
в общем получилось вот так:
Код:
accept:=(pos(UpperCase(Edit1.Text),DataSet.Fields[0].AsString)=1) or
(pos(LowerCase(Edit1.Text),DataSet.Fields[0].AsString)=1) or
(Edit1.Text='');
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 20.05.2008, 12:17   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Лучше так:
Код:
accept:=(pos(AnsiUpperCase(Edit1.Text),AnsiUpperCase(DataSet.Fields[0].AsString))=1) or  (Edit1.Text='');
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.05.2008, 12:22   #17
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,603
По умолчанию

procedure TForm1.ADOTable1FilterRecord(DataSe t: TDataSet; var Accept: Boolean);
var FieldVal:string; i: integer; b: boolean;
begin
FieldVal := DataSet['имя_столбца'];
for i:=1 to length(edit1.text) do
begin
if (FieldVal[i] = edit1.Text[i]) then b:=true else b:=false;
if b=false then break;
end;
Accept := b;
end;
Еще один вариант.
Gorychev вне форума Ответить с цитированием
Старый 20.05.2008, 12:36   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Еще один вариант.
Для этого есть функция copy.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.05.2008, 20:43   #19
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,603
По умолчанию

Спасибо за подсказку Stilet. Я серьезно. Все что я понаписывал можно свести к одной строке

Accept := copy(AnsiUpperCase(DataSet[имя_столбца]), 1, length(edit1.text)) = AnsiUpperCase(edit1.Text);
Gorychev вне форума Ответить с цитированием
Старый 14.02.2009, 23:19   #20
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

возникла ещё одна проблемка с фильтрацией
есть дата: 12.04.2009 (DataSet.Fields[1])
как вывести все записи из диапазона дат 12.04.2009-12.05.2009 (ps: 12 число не изменяется)

пробовал через accept, но видно это не для моего случая


UPD:
сделал процедурку... она находит записи которые не в этом дипозоне, но я не знаю как скрыть эту запись...
как это сделать? и что будет делать программа, если процедуру запустить ещё раз (будут ли просматриваться скрытые записи)

Код:
procedure TForm1.ChangeDate;
var
  i:integer;
begin
  AdoTable1.First;
  for i := 1 to ADOTable1.RecordCount do
    begin
      if((StrToDate(ADOTable1.FieldByName('Дата').Value)<StrToDate('15.02.2009')) or (StrToDate(ADOTable1.FieldByName('Дата').Value)>=StrToDate('12.03.2009'))) then {скрыть запись}
      ADOTable1.Next;
    end;

end;
Life if about choices
Make the right choice

Последний раз редактировалось TaTT DoGG; 15.02.2009 в 16:50.
TaTT DoGG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация Felonalex БД в Delphi 4 24.10.2008 20:09
Фильтрация записей с помощью Grid'а. Repz БД в Delphi 1 02.05.2008 04:55
Счетчик записей в таблице John_chek Общие вопросы Delphi 2 01.03.2007 11:36
Параметр TTAble определяющий кол-во одинаковых записей в таблице Таня84 БД в Delphi 4 09.02.2007 14:51