powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Динамическая фильтрация, как?-II
16 сообщений из 16, страница 1 из 1
Динамическая фильтрация, как?-II
    #32165269
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть некая форма с подчиненной(внедренной формой), в главной форме несколько(4) поля со списками ,берущие значения из таблиц.
В подчиненной форме таблица в 5 столбцов.
Нужно, чтобы при выборе значений в выпадающих списках, соответствующим образом изменялся вид таблицы.
Грубо говоря в нижней таблице список пациентов, выбрали в верхнем поле со списком городов Москва, отобразились только московские пациенты,выбрал в поле диагнозов ОРЗ, отобразились московские пациенты с ОРЗ ну и т.д.

Реализовал по подсказке уважаемого alexkov так:

Private Sub PoleCity_AfterUpdate()
Dim str As String
Dim sql As Variant
str = Me.PoleCity
sql = "SELECT * FROM CompTbl WHERE City= " & str & " "
CompTbl.Form.RecordSource = sql
End Sub

Фильтруется ,но при выборе значения в поле со списком выдается окошко "Введите значение параметра" и после ввода уже фильтруется.
Почему не подставляется сразу выбранное значение,где я ошибся?

Спасибо.
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165285
alexkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно проверить какое значение ты передаешь в выражении
str = Me.PoleCity
Чему оно у тебя равно Названию City (типа Москва ) или коду этого города в таблице (типа 3)
Судя по всему у тебя не сопадает значения получаемого в str = Me.PoleCity
и того что храниться в WHERE City .
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165290
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кавички надо добавить.
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165304
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По идее должно равняться Названию City, таблица CityTbl из которой беруться значения для поля со списком состоит из одного столбца, суть названий городов.
Как можно проверить, какое значение передается?


Кавычки добавить куда?Если
str = "Me.PoleCity"

то все равно вываливается окно.
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165311
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql = "SELECT * FROM CompTbl WHERE City= ' " & str & " ' "
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165313
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
sql = "SELECT * FROM CompTbl WHERE City= '" & str & "'"

Иначе получается, что строка, сидящая в str, - это имя то ли поля, то ли параметра.
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165315
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Только не " ' ", а то там еще один пробел прилепится.
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165361
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОООО!
Всем огромное спасибо, заработало после добавления кавычек.
Отдельное спасибо Владимир Санычу .

Я так понимаю что это не последний мой вопрос
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165372
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Отдельное пожалуйста. :^)
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165397
dencat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, созре еще один вопрос.
Задача стоит следующая

Грубо говоря в нижней таблице список пациентов, выбрали в верхнем поле со списком городов Москва, отобразились только московские пациенты,далее выбрал в поле диагнозов ОРЗ, отобразились московские пациенты с ОРЗ ну и т.д.
Т.е в следующих сортировках должны участвовать не вся таблица пациентов,а только результаты предыдущей сортировки.

Нужно ли создавать временную таблицу или можно обратиться прямо к форме,где содержаться отсортированные например по городу результаты?

Спасибо
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165420
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное не сортировка, а выборка?!
Как вариант

Private Sub PoleCity_AfterUpdate()
my_func_refr
End SUB

Private Sub PoleORZ_AfterUpdate()
my_func_refr
End SUB


Function my_func_refr()
Dim sql As Variant
Dim strw As String
strw="1=1"
if ..проверка на пустое значение поля для города.. then
strw = " and city='" Me.PoleCity & "'"
endif
if ..проверка на пустое значение поля для орз.. then
strw = " and orz='" Me.PoleORZ & "'"
endif
...
любое кол-во параметров
при условии что на обновление каждого установлена
функция my_func_refr
...

sql = "SELECT * FROM CompTbl WHERE " & strw
CompTbl.Form.RecordSource = sql
end function
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165429
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку:
ошибочка
strw = " and city='" & Me.PoleCity & "'"
strw = " and orz='" & Me.PoleORZ & "'"

Кавычки нужно ставить для символьных полей
для числовых чуть-чуть другая строка
strw = " and orz=" & cstr(Me.PoleORZ)
для дат третья
strw = " and dat='" & format(Me.PoleDat,"yyyymmdd") & "'"
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165435
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Несмотря на свои "динамические взгляды" на жизнь, все таки предлагаю отказатся от динамической фильтрации. Предлагаю добавить кнопку "эапрос" (выполнить поиск). Немного обясню:
Пользователь выбрал г. Москва. В итоге может оказаться скажем 10 000 пациентов, надо ли это выводить, если заранее известно что будем искать ОРЗ и скажем дети до 10 лет.
Если все же динамически, то ограничить число записей скажем до 1000 и каждый раз новый запрос.
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165441
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с V. Motchulsky
Любые запросы к базе лучше посылать по кнопке, а не при обновлении полей
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165538
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще динамическая фильтрация грубо говоря нафик не нужна ни mdb ни тем более в adp базах . зачем загружать проц. клиента вычислениями и сеть (как правило клиент и сами базы сервер или mdb файл находятся отдельно).
данные образованные с помощью одного критерия как водится не нужны и соответсвенно работа по их извлечению лишняя.
грамотнее в нескольких полях занести условия выборки . одни поля со списками, другие просто текстовые потом сформировать запрос и получит уже нужную инфу
...
Рейтинг: 0 / 0
Динамическая фильтрация, как?-II
    #32165539
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще динамическая фильтрация грубо говоря нафик не нужна ни mdb ни тем более в adp базах . зачем загружать проц. клиента вычислениями и сеть (как правило клиент и сами базы сервер или mdb файл находятся отдельно).
данные образованные с помощью одного критерия как водится не нужны и соответсвенно работа по их извлечению лишняя.
грамотнее в нескольких полях занести условия выборки . одни поля со списками, другие просто текстовые потом сформировать запрос и получит уже нужную инфу
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Динамическая фильтрация, как?-II
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]