Инкрементный поиск
Модератор: Модераторы
Инкрементный поиск
Не подскажите, как более правильно реализовать инкрементный поиск по справочнику (2 Alexs: Будеn ли он в RxDBLookUpCombo ?):
предположительно, DBGrid+Edit, при вводе символа в поле Edit должен происходить полный цикл
закрыть датасет+
изменить запрос (например + '.... like ....')+
открыть датасет
?
Или это более грамотно выполняется?
предположительно, DBGrid+Edit, при вводе символа в поле Edit должен происходить полный цикл
закрыть датасет+
изменить запрос (например + '.... like ....')+
открыть датасет
?
Или это более грамотно выполняется?
2 alexs
А он должен не только по совпадению всего числа (Integer) (со строкой (String) из чисел всё нормально) менять фокус или инкриментно (если есть такой термин)? И то, что не отображается вводимый текст в поле ввода - это тоже глюк или так должно быть?
Attid
Упс... lazarus 0.9.25, firebird 2, RxDB, "alexsDataSet".
(like как пример был)
Это про это:
C:=TRxColumn(RxDBGridL.Columns[i]);
C.Filter.ValueList.Add.........
А как с условием или маской фильтр тут поставить?
А он должен не только по совпадению всего числа (Integer) (со строкой (String) из чисел всё нормально) менять фокус или инкриментно (если есть такой термин)? И то, что не отображается вводимый текст в поле ввода - это тоже глюк или так должно быть?
Attid
Упс... lazarus 0.9.25, firebird 2, RxDB, "alexsDataSet".
(like как пример был)
лучше локально
Это про это:
C:=TRxColumn(RxDBGridL.Columns[i]);
C.Filter.ValueList.Add.........
А как с условием или маской фильтр тут поставить?
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
нет примерно так :
Код: Выделить всё
procedure TfmCardsManeger.btFilterClick(Sender: TObject);
begin
dsCM.Filtered := False;
dsCM.Filtered := True;
end;
procedure TfmCardsManeger.dsCMFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
var id, fid : integer;
begin
Accept := ((Length(Trim(edFName.Text))=0) or (pos(UpperCase(edFName.Text),UpperCase(DataSet.FieldByName('fname').AsString))>0))
and ((Length(Trim(edLName.Text))=0) or (pos(UpperCase(edLName.Text),UpperCase(DataSet.FieldByName('lname').AsString))>0))
and ((Length(Trim(edAddress.Text))=0) or (pos(UpperCase(edAddress.Text),UpperCase(DataSet.FieldByName('adress').AsString))>0))
and ((not cbBD.Checked) or (DataSet.FieldByName('birthday').AsDateTime = edBD.Date))
and ((Length(Trim(edCode.Text))=0) or (pos(UpperCase(edCode.Text),UpperCase(DataSet.FieldByName('code').AsString))>0))
and ((Length(Trim(edNum.Text))=0) or (UpperCase(edNum.Text)=UpperCase(DataSet.FieldByName('cardno').AsString)));
end;
Attid писал(а):RxDBGrid
в нем тоже фильтр есть, без alexsDataSet.
не понял.
как сделать фильтр с выпадающими значениями на основе данных (RxDBGrid+alexsDataSet) знаю.
А вот как сделать инкриментный поиск в RxDBGrid, без глюка с оставшейся записью не совсем понял, вернее совсем не понял, грид же он только отображает в данном случае.
alexs писал(а):VAshot
Глюк есть, а вот кто виноват - RxDBGrid или FBDataSet ещё не понял
буду копать
Раз глюк, значит пока не будем переходить на DBGrid.
alexs
а мне кажется или в сортировка регистрозависима ? это лечется ?
Да и в винде UpperCase кирилицу не переводит.
Тупо поменял на AnsiUpperCase - работает, но как будет с не 1251 даже не подозреваю.
