Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: И снова списки
 
 автор: Гоблин   (10.08.2009 в 15:33)   личное сообщение
 
 

На форме 2 списка. Значения одного должны фильтроваться по значениям другого, находящиеся во 2 столбце. Пишу:

With Me.Список40.ItemData
.Filter = "КодПротОбл=" & Me.Список30.Column(1)
.FilterOn = True
.Requery
End With

Чего ему не так?
With Me.Список40.ItemData а также (ItemList, Column(0), и прочее) дает ошибку.
По примеру и справке пробовал через функцию In, но с ней что-то никак не сладить. Плиз ЧД?

  Ответить  
 
 автор: Lukas   (10.08.2009 в 15:42)   личное сообщение
 
 

Откуда у списка свойства Filter и FilterOn?
В запросе-источнике строк второго списка в условиях отбора должна быть ссылка на значение ( или значение Column(..)) первого списка.

  Ответить  
 
 автор: Гоблин   (10.08.2009 в 15:47)   личное сообщение
 
 

Да вот как-то какие у них свойства.
Дело в том, что база из 2 форм состоит. На одной только формы - это все работает. На другой то же самое, только списками для просмотра. Вот тут-то и затык. Пытался по вашему примеру нечто соорудить. Там похоже функция In используется. Но с ней пока это...таво.
По справке пока тоже мало чего.

Похоже не в ту сторону копаю.

  Ответить  
 
 автор: час   (10.08.2009 в 15:57)   личное сообщение
 
 

А если источник строк списка2 - запрос, а у запроса условие значение списка1.... получится список2 отфильтрован согласно значению списка1.
================================================
А чё ты никада кусок базы не кладёшь с таблой, с формой фсё на пальцах

  Ответить  
 
 автор: Гоблин   (10.08.2009 в 16:15)   личное сообщение
36 Кб.
 
 

Час. Я этот кусок уже 3 раза выкладывал. По значению списка1 работает форма как по пристегнутому 1-у столбцу. А вот рядом списку требуется 2-й столбец из этого же первого списка. Вот и мудрю с запросами, условиями, фильтрами. В формах все проще и понятнее, но кучу форм на одно и то же - не солидно блин.
Кусочек базы. http://slil.ru/27891310 вся наработка. Если не лень и есть время. Там откроется форма. Вся пустая кроме одного списка. Вот его-то и надо фильтровать согласно списка слева.

Может форму поставить и черт с ним мутыриться?

В залил что-то глючит. Вот кусок. Список что показывает - не должен показывать до появления инфы в списке слева. А с появлением таковой должен показать только то, что там введено.

  Ответить  
 
 автор: Гоблин   (10.08.2009 в 15:55)   личное сообщение
 
 

В запросе-источнике строк второго списка в условиях отбора должна быть ссылка на значение ( или значение Column(..)) первого списка.

Запрос источник строк есть. В первом списке пристегнут Column(0) и активно используется формой. А другой список должен сослаться на Column(1). В запросе на источник строк так не поставить. Пробовал запрос загружать при открытии формы. Ошибок нет. Пробовал в условии отбора указать Column(1) - ругается. Пробовал отфильтровать - результат известен. Куда копать?

  Ответить  
 
 автор: Анатолий (Киев)   (10.08.2009 в 19:19)   личное сообщение
41 Кб.
 
 

Посмотрите...

Несколько советов:
1. У вас в заголовках модулей отсутствует Option Explicit, а это значит, что в настройках VBA не указано обязательное объявление переменных. Настоятельно рекомендую установить этот флажок, а в заголовке существующих модулей укажите Option Explicit.
2. Добавлять запись лучше не запросом INSERT INTO...VALUES..., а открыть Recordset и добавить туда. Меньше мороки и значение счетчика можно получить сразу после AddNew.
3. Третий аргумент DoCmd.OpenForm - условие отбора, а не имя сохраненного фильтра (это по другому вашему вопросу). После выполнения п.2 можно указать критерий при открытии формы. Также DoCmd.OpenForm умеет открывать форму на добавление записей и можно нового пациента вносить прямо в эту форму.
4. В источниках строк списков на форме допускается синтаксис =Form![Поле] или просто =[Поле].
5. Созданный вами код впечатляет! Не пожалейте времени на чтение умных книжек.

ЗЫ. А вы не перемудрили с фильтром по инициалам?

  Ответить  
 
 автор: Гоблин   (10.08.2009 в 22:28)   личное сообщение
 
 

Во блин в пух и перья меня разнесли не знаю за что хвататься.
Анатолий, это выходит то, что нужно. Способ вывода нужной инфы в скрытом поле открыл бы не сразу.
1. "У вас в заголовках модулей..." Модули никогда не применял считая их как (пока не знаю) С флажком где там проблема. Поищу. Option Explicit. -(во загруз) короче, не так быстро, я в VBA неделю - другую как залез методом тыка. Раньше дальше if не ходил.
2. Recordset... Да я с переменных только вчера слез до уровня запроса в VBA и то с помощью Лукаса. А форма ранее открывалась в режиме добавления.
3. Ну раньше так и открывалась. Теперь вот запрос добавляет, а потом форму открываю. Новый пациент вносится автоматически после предупреждения. Идея в том, что бы пациент вносился автоматом и только 1 раз. По мере ввода его данных он отфильтровывается в списке. Далее если список пуст - то предупредение и добавление его в базу с открытием формы для исследований. В форме что открывается поля Фамилия Имя и т.д. заблокированы полностью.
4. Буду знать. (не забыть бы с таким потоком инфы)
5. Спасибо. Книжки обязательно возьму. Список есть. Только в нашей деревне о таком никто не слышал. Код меня тоже впечатляет. А что делать? (Вы бы код на вторую форму посмотрели - во где пляски святого Витте.

ЗЫ. Там отбор идет не только по Фамилии и инициалам, но и дате рождения и полу.

  Ответить  
 
 автор: час   (10.08.2009 в 19:39)   личное сообщение
31 Кб.
 
 

может так???

  Ответить  
 
 автор: Гоблин   (10.08.2009 в 22:31)   личное сообщение
 
 

Час, спасибо, но немного не то. Надо что бы по мере ввода отсев шел по всем критериям. Если список опустеет, то запрос на добавление сработает. Если не опустеет, значит клиент был ранее введен. 2 хлопком по нему открываем форму. Такой вот замысел. Там все автоматически должно быть.
Вопрос был по поводу списка справа. Там где цифры стоят. Анатолий идею подкинул.

  Ответить  
 
 автор: час   (11.08.2009 в 08:50)   личное сообщение
 
 

  Ответить  
 
 автор: kot_k_k   (11.08.2009 в 11:57)   личное сообщение
 
 

А не проще, для пользователя, использовать ввод с клавы --> фильтр Like "Ив*" (обработка Клавиша вниз и Нажатие клавиши), а не поле со списком. Ведь по идее тысячи пациентов список не совсем удобен

  Ответить  
 
 автор: kot_k_k   (11.08.2009 в 12:01)   личное сообщение
 
 

А если хочешь фильтр по Вамилия, Имя, Отчество то проще сделать форму где вводится Начало каждого параметра и выдает отфильтрованное, и чел выбирает нужное.

  Ответить  
 
 автор: Гоблин   (11.08.2009 в 14:41)   личное сообщение
 
 

Кот, спасибо. Но тут идея в том, чтобы списки освоить. Раньше только на формах работал.Like штука известная, но введя фамилию уже отсев хороший. Вкупе с инициалами - практически неповторимо. Уже один и будет. Кроме того данное поле со списком будет открываться и по мере ввода символов сокращаться.
Кароче, все что я тут делаю - просто поиск некоего оптимального варианта. Как бы размышление с обучением.

  Ответить  
 
 автор: kot_k_k   (12.08.2009 в 10:56)   личное сообщение
 
 

Я ПолесоСписком вообще на формах прячу от Пользователя. Создаю Поле_1=ПолесоСписком.Column(1) и к нему пишу обработку, которая и заполняет само ПолеСоСписком. Мне кажется ПолеСоСписком для пользователя неудобно в восприятии, тем более что Пользователи как правило далеки от компов, очень.

  Ответить  
 
 автор: Гоблин   (12.08.2009 в 14:08)   личное сообщение
 
 

Тоже мысля. Сенька за идею.
Но поиск нечто чего-то продолжается.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList