|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Фильтрация базы данных
Здравствуйте, подскажите плз. как в dbgrideh (access) сделать фильтрацию (комбобокс) по табличке Категории, например есть таблица из 3 столбцов название,товар,категория.
название товар категория
выбираю в комбобоксе телефоны и отсаются только тел записи у которых категория телефоныСони мобила телефоны Сони приставка приставки Сони фотик фотики самсунг мобила телефоны сименс мобила телефоны Ставь спасибо за спасибо! Помог?Ставь спасибо!Увидел пост? Поставь спасибо! |
#2
|
|||
|
|||
Смотрим, например, в сторону обработчика OnFilterRecord.
|
#3
|
|||
|
|||
все сам решил проблему,спасибо
Ставь спасибо за спасибо! Помог?Ставь спасибо!Увидел пост? Поставь спасибо! |
#4
|
|||
|
|||
Дабы не плодить топик, напишу свое сюда
Доброго времени суток, делфи кодеры) есть код Код:
procedure TForm3.ADOQuery1FilterRecord(DataSet: TDataSet; var Accept: Boolean); var FieldVal:string; begin FieldVal:=DataSet['Фамилия']; Accept:=copy(AnsiUpperCase(FieldVal),1, length(Sedit1.text))= AnsiUpperCase(Sedit1.Text); end; ввожу фамилию, все нормально фильтрует и отображает.. как сделать чтоб в едит можно было ввести фамилию и через пробел имя - и в соответствии все фильтровалось и выводилось ? |
#5
|
|||
|
|||
Pos, Copy и немного мозга.
Просто строку для поиска надо разделить на 2. Разделитель у тебя пробел. Далее включаем мозг и пишем простой код. |
#6
|
|||
|
|||
Цитата:
|
#7
|
||||
|
||||
На мой взгляд чем возится с PosEx,Copy проще воспользоваться сразу классовыми методами:
Код:
Var SL: TStringList; begin SL := TStringList.Create; SL.Delimiter := #32; SL.DelimitedText := Edit1.Text; ... Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
|||
|
|||
На форумах нашел вот такой код
Код:
procedure Tf_Main.Grid_MainApplyFilter(Sender: TObject); var s: string; cond: variant; i: integer; begin cond := ''; s := ''; Datamodule1.T_Dogovor_View.filtered:=false; with TDBGridEh(Sender) do begin if (not DataSource.DataSet.Active) or (DataSource.DataSet.RecordCount = 0) then exit; for i := 0 to TDBGridEh(Sender).Columns.Count - 1 do begin cond := TDBGridEh(Sender).Columns[i].STFilter.ExpressionStr; if cond <> '' then begin s := s + '['+TDBGridEh(Sender).Columns[i].FieldName + '] LIKE ''%'+ cond + '%'' AND '; end; end; Delete(s, Length(s) - 3, 4); Datamodule1.T_Dogovor_View.Filter := s; end; Datamodule1.T_Dogovor_View.filtered:=true; end; |
#9
|
||||
|
||||
Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
DOR (15.10.2012)
|
#10
|
|||
|
|||
Проценты убрал, помогло, но логическое поле не работает. Пишу в фильтре "да" или "нет", может быть нужно как то по другому? (true / false работает).
Последний раз редактировалось DOR, 15.10.2012 в 18:43. |
#11
|
|||
|
|||
Так же не работает, если тип поля денежный.
|
#12
|
||||
|
||||
может тебе вот это поможет? http://devel.comeze.com/index.php?action=filter
Код сырец |