|
|
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
Есть некая форма с подчиненной(внедренной формой), в главной форме несколько(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 Фильтруется ,но при выборе значения в поле со списком выдается окошко "Введите значение параметра" и после ввода уже фильтруется. Почему не подставляется сразу выбранное значение,где я ошибся? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 15:48 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
Нужно проверить какое значение ты передаешь в выражении str = Me.PoleCity Чему оно у тебя равно Названию City (типа Москва ) или коду этого города в таблице (типа 3) Судя по всему у тебя не сопадает значения получаемого в str = Me.PoleCity и того что храниться в WHERE City . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 15:56 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
Кавички надо добавить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 15:58 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
По идее должно равняться Названию City, таблица CityTbl из которой беруться значения для поля со списком состоит из одного столбца, суть названий городов. Как можно проверить, какое значение передается? Кавычки добавить куда?Если str = "Me.PoleCity" то все равно вываливается окно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 16:10 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
sql = "SELECT * FROM CompTbl WHERE City= ' " & str & " ' " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 16:14 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
sql = "SELECT * FROM CompTbl WHERE City= '" & str & "'" Иначе получается, что строка, сидящая в str, - это имя то ли поля, то ли параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 16:16 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
Только не " ' ", а то там еще один пробел прилепится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 16:17 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
ОООО! Всем огромное спасибо, заработало после добавления кавычек. Отдельное спасибо Владимир Санычу . Я так понимаю что это не последний мой вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 16:42 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
Отдельное пожалуйста. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 16:47 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
Так, созре еще один вопрос. Задача стоит следующая Грубо говоря в нижней таблице список пациентов, выбрали в верхнем поле со списком городов Москва, отобразились только московские пациенты,далее выбрал в поле диагнозов ОРЗ, отобразились московские пациенты с ОРЗ ну и т.д. Т.е в следующих сортировках должны участвовать не вся таблица пациентов,а только результаты предыдущей сортировки. Нужно ли создавать временную таблицу или можно обратиться прямо к форме,где содержаться отсортированные например по городу результаты? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 17:10 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
Наверное не сортировка, а выборка?! Как вариант 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 17:32 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
Вдогонку: ошибочка strw = " and city='" & Me.PoleCity & "'" strw = " and orz='" & Me.PoleORZ & "'" Кавычки нужно ставить для символьных полей для числовых чуть-чуть другая строка strw = " and orz=" & cstr(Me.PoleORZ) для дат третья strw = " and dat='" & format(Me.PoleDat,"yyyymmdd") & "'" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 17:38 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
Несмотря на свои "динамические взгляды" на жизнь, все таки предлагаю отказатся от динамической фильтрации. Предлагаю добавить кнопку "эапрос" (выполнить поиск). Немного обясню: Пользователь выбрал г. Москва. В итоге может оказаться скажем 10 000 пациентов, надо ли это выводить, если заранее известно что будем искать ОРЗ и скажем дети до 10 лет. Если все же динамически, то ограничить число записей скажем до 1000 и каждый раз новый запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 17:41 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
Согласен с V. Motchulsky Любые запросы к базе лучше посылать по кнопке, а не при обновлении полей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 17:45 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
вообще динамическая фильтрация грубо говоря нафик не нужна ни mdb ни тем более в adp базах . зачем загружать проц. клиента вычислениями и сеть (как правило клиент и сами базы сервер или mdb файл находятся отдельно). данные образованные с помощью одного критерия как водится не нужны и соответсвенно работа по их извлечению лишняя. грамотнее в нескольких полях занести условия выборки . одни поля со списками, другие просто текстовые потом сформировать запрос и получит уже нужную инфу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 19:29 |
|
||
|
Динамическая фильтрация, как?-II
|
|||
|---|---|---|---|
|
#18+
вообще динамическая фильтрация грубо говоря нафик не нужна ни mdb ни тем более в adp базах . зачем загружать проц. клиента вычислениями и сеть (как правило клиент и сами базы сервер или mdb файл находятся отдельно). данные образованные с помощью одного критерия как водится не нужны и соответсвенно работа по их извлечению лишняя. грамотнее в нескольких полях занести условия выборки . одни поля со списками, другие просто текстовые потом сформировать запрос и получит уже нужную инфу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 19:29 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32165397&tid=1681445]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 390ms |

| 0 / 0 |
