Погода: -12°C
  • Значит так. Мне по учебе дали задание создать базу данных в MS Access. Тема - спортивные организации города. Таблицы нужные я создал, связи расставил по спроектированной ER-модели. А вот при создании формы возникла проблема. Я хочу сделать фильтрацию по группам. Т.е. допустим, меня есть в форме два выпадающих списка. В 1-м списке – виды спорта, во втором – тренеры. Требуется настроить форму так, чтобы после того, как я выбрал вид спорта, во втором выпадающем списке появлялись лишь те тренеры, которые которым принадлежит выбранный вид спорта.
    Таблицы
    1) ID_Sportsman, ID_Trainer, ID_Sport
    2) ID_Trainer, ID_Sport, прочие атрибуты тренеров
    3) ID_Sportsman, прочие атрибуты тренеров

    Форма основывается на запросе из всех трех таблиц. Первичные ключи - все ID, кроме ID_Sport. Связи между соответствующими первичными ключами.
    Как поставить фильтр, чтобы он мог фильтровать группы тренеров по видам спорта и выдавать только их выпадающем списке?

    Правило №2: не смотреть в телескоп на солнце оставшимся глазом.

  • Решал задачи подобную Вашей.
    Решить задачу можно:
    1. Макросами – устарело немного и муторное это дело))
    2. Встроенным средством программирования

    Если остановиться на втором варианте ( встроенном VB). Решение следующее.

    В событии AfterUpdate поля lstВидыСпорта подставляете процедуру обработки событий.
    1. В процедуре считываете идэшник или значения поля ВидаСпорта
    и присваиваете его переменной например «varВидСпорта».
    2. Далее, посредством свойства «RowSource», присваиваете полю lstТренеры
    список значений. Список значений формируется запросом SQL, (который описывается также в тексте процедуры), в котором в качестве условия вводится переменная «varВидСпорта», т.е. выбор тренеров соответствующих выбранному виду спорта.
    3. Обновление формы)))
    Все. Текст приводить нет смыла.Так как сделать это в вашей БД,
    будет быстрее, нежели мне писать текст с нуля.
    Дерзайте))

  • Хм... Спасибо, конечно...
    Но я к сожалению на Visual Basic ничего не писал и слабо представляю как программировать на нем. Я не знаю его втроенных функций. (На Spectrumовском Basic у меня неплохо получалось :)) Э-э-э, вас не затруднит подсказать, как сделать это с помощью макросов? Я знаю что макросом надо монтировать фильтр, но условие отбора для макроса "применить фильтр" я не могу написать... Сказывается отсутствие опыта создания макросов. Т.е. что мне написать в конструктре выражений.

    Правило №2: не смотреть в телескоп на солнце оставшимся глазом.

  • Давайте лучше сделаем так...
    Вы мне в личку скинете вашу базу...
    или на ящик serleg@ngs.ru...
    это дело 15 минут... вместе с перерывом на чаепитие))...
    мне не в напряг будет помочь...
    дольше обмениваться сообщениями будем..

  • Список Вам сделал. Отправил по почте. Ловите)
    Вот только ... просто... ради интереса...
    можно узнать назначение базы данных...
    если с таблицами более менее понятно, с нормализацией справились на 3+ (шутка)))
    то вот с формами....хмммм.... для чего огород
    с основной формой спортсменов...
    и подчиненной видами спорта....
    ниче не понял...))

  • В ответ на: 2. Далее, посредством свойства «RowSource», присваиваете полю lstТренеры
    список значений. Список значений формируется запросом SQL, (который описывается также в тексте процедуры), в котором в качестве условия вводится переменная «varВидСпорта», т.е. выбор тренеров соответствующих выбранному виду спорта.
    решал подобную задачу - помогло, спасибо.

    однако есть ряд "савсэм темных" мест:

    1, как присвоить текущее значение поля с списком текстовому полю?

    2, как обращаться к таблице , созданной , например, коструктором, из формы, модуля... встроенного VB, одним словом ?

    3. как вызвать форму из формы, модуля... не используя макрос ?

    >>>Come back to USS...A © >>>
    долой лицемерие!

    запустить ракету вокруг Америки может быть не менее сложно и полезно, чем когда-то вокруг Земли

Записей на странице:

Перейти в форум

Модератор: