Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Динамическая фильтрация, как?-II / 16 сообщений из 16, страница 1 из 1
21.05.2003, 15:48
    #32165269
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая фильтрация, как?-II
Есть некая форма с подчиненной(внедренной формой), в главной форме несколько(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
21.05.2003, 15:56
    #32165285
alexkov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая фильтрация, как?-II
Нужно проверить какое значение ты передаешь в выражении
str = Me.PoleCity
Чему оно у тебя равно Названию City (типа Москва ) или коду этого города в таблице (типа 3)
Судя по всему у тебя не сопадает значения получаемого в str = Me.PoleCity
и того что храниться в WHERE City .
...
Рейтинг: 0 / 0
21.05.2003, 15:58
    #32165290
V. Motchulsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая фильтрация, как?-II
Кавички надо добавить.
...
Рейтинг: 0 / 0
21.05.2003, 16:10
    #32165304
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая фильтрация, как?-II
По идее должно равняться Названию City, таблица CityTbl из которой беруться значения для поля со списком состоит из одного столбца, суть названий городов.
Как можно проверить, какое значение передается?


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

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

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

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

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

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

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

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
21.05.2003, 17:38
    #32165429
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая фильтрация, как?-II
Вдогонку:
ошибочка
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
21.05.2003, 17:41
    #32165435
V. Motchulsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая фильтрация, как?-II
Несмотря на свои "динамические взгляды" на жизнь, все таки предлагаю отказатся от динамической фильтрации. Предлагаю добавить кнопку "эапрос" (выполнить поиск). Немного обясню:
Пользователь выбрал г. Москва. В итоге может оказаться скажем 10 000 пациентов, надо ли это выводить, если заранее известно что будем искать ОРЗ и скажем дети до 10 лет.
Если все же динамически, то ограничить число записей скажем до 1000 и каждый раз новый запрос.
...
Рейтинг: 0 / 0
21.05.2003, 17:45
    #32165441
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая фильтрация, как?-II
Согласен с V. Motchulsky
Любые запросы к базе лучше посылать по кнопке, а не при обновлении полей
...
Рейтинг: 0 / 0
21.05.2003, 19:29
    #32165538
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая фильтрация, как?-II
вообще динамическая фильтрация грубо говоря нафик не нужна ни mdb ни тем более в adp базах . зачем загружать проц. клиента вычислениями и сеть (как правило клиент и сами базы сервер или mdb файл находятся отдельно).
данные образованные с помощью одного критерия как водится не нужны и соответсвенно работа по их извлечению лишняя.
грамотнее в нескольких полях занести условия выборки . одни поля со списками, другие просто текстовые потом сформировать запрос и получит уже нужную инфу
...
Рейтинг: 0 / 0
21.05.2003, 19:29
    #32165539
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическая фильтрация, как?-II
вообще динамическая фильтрация грубо говоря нафик не нужна ни mdb ни тем более в adp базах . зачем загружать проц. клиента вычислениями и сеть (как правило клиент и сами базы сервер или mdb файл находятся отдельно).
данные образованные с помощью одного критерия как водится не нужны и соответсвенно работа по их извлечению лишняя.
грамотнее в нескольких полях занести условия выборки . одни поля со списками, другие просто текстовые потом сформировать запрос и получит уже нужную инфу
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Динамическая фильтрация, как?-II / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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