Как совместить два фильтра

SanSagittarius
Дата: 24.02.2008 16:48:37
Ребят, подскажите, плиз
Имеется таблица, содержащия ФИО сотрудников. Как сделать так, чтобы на форме в раскрывающемся списке можно было было набрать "Имя", а в "Фамилии" отобразились бы все, кто имеет такое имя. И, наоборот, при наборе в "Фамилии" отобразилось бы имя в поле "Имя".
Программист-Любитель
Дата: 24.02.2008 17:46:36
Програмно.

(Толстый седой дяденька)
SanSagittarius
Дата: 24.02.2008 18:22:13
Программист-Любитель
Програмно.

(Толстый седой дяденька)


Вам в логике не откажешь! :-)
А конкретнее? Хотя бы подскажите, в каком направлении работать?
Karfaqen
Дата: 24.02.2008 18:48:54
подскажите, в каком направлении работать?
В направлении обработки событий.

Например.
В комбобоксе, при выборе определенной строки из списка, происходит событие AfterUpdate. В обработке этого события (скажем, для списка фамилий) вы берете текущее значение списка (т.е. выбранную фамилию) и используете это значение как критерий для отбора записей из вашей таблицы с именами:
SELECT DISTINCT Имя FROM Таблица WHERE Фамилия = '<тут фамилия из списка>'
и подставляете этот SQL в качестве источника строк для списка имен. Соответственно, при выборе имени, в его событии AfterUpdate, подставляете источник строк для списка фамилий:
SELECT DISTINCT Фамилия FROM Таблица WHERE Имя = '<тут имя из списка>'
SanSagittarius
Дата: 24.02.2008 19:11:01
Karfaqen
подскажите, в каком направлении работать?
В направлении обработки событий.

Например.
В комбобоксе, при выборе определенной строки из списка, происходит событие AfterUpdate. В обработке этого события (скажем, для списка фамилий) вы берете текущее значение списка (т.е. выбранную фамилию) и используете это значение как критерий для отбора записей из вашей таблицы с именами:
SELECT DISTINCT Имя FROM Таблица WHERE Фамилия = '<тут фамилия из списка>'
и подставляете этот SQL в качестве источника строк для списка имен. Соответственно, при выборе имени, в его событии AfterUpdate, подставляете источник строк для списка фамилий:
SELECT DISTINCT Фамилия FROM Таблица WHERE Имя = '<тут имя из списка>'


Спасибо!!! Сейчас буду пробовать...
Программист-Любитель
Дата: 24.02.2008 19:52:12
Возни с этими списками будет много а отдачи не больше чем от простого выбора в поле, склеивающем фамилию+пробел+имя по введенному образцу. Простейшим LIKE '*иван*'.
SanSagittarius
Дата: 24.02.2008 22:22:36
Программист-Любитель
Возни с этими списками будет много а отдачи не больше чем от простого выбора в поле, склеивающем фамилию+пробел+имя по введенному образцу. Простейшим LIKE '*иван*'.


Тогда, может быть подскажете другой путь?

На самом деле ситуация такова, что имеется множество филиалов, в которых есть подотчетные банкоматы. Соответственно, возникают ситуации, когда нужно отфильтровать по названию филиала все имеющиеся у этого филиала банкоматы, и, наоборот, (зайти с другой стороны), по номеру банкомата необходимо автоматом выбирать наименование филиала... В excel это довольно просто выполнить по расширенному фильтру (выбираешь либо филиал, либо номер), но база ведется в access, поэтому хотелось бы автоматизировать этот процесс именно в базе access...

Надеюсь, я достаточно понятно объяснил ситуацию...
Программист-Любитель
Дата: 24.02.2008 22:41:56
Какова мощность данных ? Если сотни филиалов/тысячи банкоматов то фильтроваться все будет мгновенно.

Я на всех формах табличного толка делаю наверху список Сортировка по и несколько списков Выбор. Плюс поле для ввода произвольного образца и кнопка с воронкой для поиска по нему.

Наиболее типичные порядки сортировки (сначала по №Банкомата, по НазваниюФилиала, ...) и Выбор по №банкомата, по по НазваниюФилиала) загоняются в эти списки. При обновлении любого списка или нажатии кнопки с воронкой около строки образца пересобирается источник SQL формы с данными.

Все условия собираются через логическое И.
Программист-Любитель
Дата: 24.02.2008 22:47:26
картинка
SanSagittarius
Дата: 24.02.2008 23:03:59
Программист-Любитель
картинка


Отличный вариант! Спасибо!
Только я не понял - написано: "К сообщению приложен файл. Размер - 24Kb". Это просто на скрине или можно скачать? Если бы можно было скачать - было бы замечательно! :-)))