![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|