Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2012, 19:55   #1
Jimmy Lenox
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 32
По умолчанию Подчиненные списки

Здравствуйте!
Обращаюсь к профессионалам, так как у самого нет глубокого опыта работы с Access и Visual Basic.
Есть база с информацией о сети. Главная таблица – «Активка» - содержит поля «Имя устройства», «VLAN», «IP-подсети» , «IP-адрес». Для всех полей, кроме «Имя устройства», есть соответствующие таблицы с данными.
Хотелось бы сделать иерархические списки (если не ошибаюсь, так называется). При выборе значения VLAN в списке «IP-подсеть» оставались значения, которые относятся только к этому значению VLAN’a. И далее, исходя из значения в поле «IP-подсеть», в списке «IP-адрес» оставались значения, соответствующие IP-подсети.
Если возможно, реализовать не через форму, а через таблицу. И пару слов, как это было сделано, чтобы понять, что и куда писать. Пробовал делать по аналогиям, найденным в сети, но результата не получил.
Макет базы приложил.
Заранее спасибо!
Вложения
Тип файла: rar Сетевая.rar (14.1 Кб, 21 просмотров)
Jimmy Lenox вне форума Ответить с цитированием
Старый 05.10.2012, 00:17   #2
ovt256
Форумчанин
 
Регистрация: 01.04.2011
Сообщений: 226
По умолчанию

Для начала, Вы напутали с типом полей, например в таблице VLAN поле Код VLAN числовой, а в таблице IP-подсети - текстовый. А должен быть тоже числовой, ведь связывание этих таблиц будет происходить именно по этому полю.
Для реализации Вашей задумки в таблице (без использования формы) попробуйте использовать подстановку (конструктор таблиц, параметры поля, закладка Подстановка) см. рис.
Изображения
Тип файла: jpg Активка.jpg (38.9 Кб, 150 просмотров)
Если руки золотые, то не важно, откуда они растут.
ovt256 вне форума Ответить с цитированием
Старый 09.10.2012, 22:23   #3
Jimmy Lenox
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 32
По умолчанию

Спасибо, исправляю ошибки! ,)
Jimmy Lenox вне форума Ответить с цитированием
Старый 12.10.2012, 00:03   #4
Jimmy Lenox
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 32
По умолчанию

Подправил кое-что. Сделал базу с другими, чтобы понятнее было, о чем речь.
Фильтрация происходит, но есть вопросы:
1) Почему-то не происходит обновления подчиненного списка. Только если нажать кнопку "Обновить".
2) В какой-то момент времени форма перескакиевает на первую запись в таблице и начинает перезаписывать записи.
3) Вместо названия Отдела в итоговую таблицу заносится его код. Не могу понять, почему...
Будьте так добры, подскажите, что не так...
Вложения
Тип файла: rar Сотрудники.rar (63.7 Кб, 20 просмотров)
Jimmy Lenox вне форума Ответить с цитированием
Старый 12.10.2012, 09:06   #5
ovt256
Форумчанин
 
Регистрация: 01.04.2011
Сообщений: 226
По умолчанию

Все-таки Вы не прислушались к предыдущей рекомендации: не следует хранить в таблице "Сотрудники" названия отделов и должностей, достаточно хранить их коды.
1. Для того, чтобы изменился список должностей после выбора отдела, необходимо выполнить запрос1, который фильтрует должности по выбранному отделу. Для этого надо добавить обработку события AfterUpdate для поля отдела.
Код:
Private Sub ПолеСоСписком0_AfterUpdate()
  ПолеСоСписком3.Requery
End Sub
2. Тут не понятно, что это за какой-то момент... Для добавления новой записи надо нажать соответствующую кнопочку либо Ctrl++.
3. Так и должно быть. Согласитесь, что нет смысла хранить название отдела в двух таблицах (избыточность данных). Тем более, что описание отдела может содержать гораздо больше информации, нежели просто название (номер комнаты, телефон). Кроме того, если организационная структура предприятия подразумевает наличие филиалов со сходной структурой, то и названия отделов будут повторяться. Если Вам потребуется вывести, например, списочный состав организации с отображением отделов и должностей, то используйте запрос.

На будущее не ленитесь присваивать элементам формы понятные названия: ПолеСоСписком0 - это ни о чем, а вот cbOtdel или cbDept говорит и о назначении поля (отдел) и о типе элемента (cb = ComboBox = ПолеСоСписком)
Если руки золотые, то не важно, откуда они растут.
ovt256 вне форума Ответить с цитированием
Старый 12.10.2012, 18:36   #6
Jimmy Lenox
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 32
По умолчанию

Спасибо за ответ!
Все поправил, как вы сказали. Вставил код обработки события, но автоматичское обновление все равно не происходит... В первый раз, при открытии формы все ок, а дальше - отказывается работать...
Вложения
Тип файла: rar Сотрудники.rar (59.5 Кб, 10 просмотров)
Jimmy Lenox вне форума Ответить с цитированием
Старый 12.10.2012, 22:32   #7
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Доброго. У вас обновление содержимого выпадающего списка происходит, но его значение вы не меняете ...
Вложения
Тип файла: rar Сотрудники .rar (17.3 Кб, 30 просмотров)
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 13.10.2012, 00:23   #8
Jimmy Lenox
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 32
По умолчанию

Простите, можно немного поподробнее!..
Jimmy Lenox вне форума Ответить с цитированием
Старый 13.10.2012, 00:38   #9
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
  If CbOtdel <> CbOtdel.OldValue Then
' выполнять если выбран отдел отличный от старого или небыл выбран ранее
    cbDolzhnost.Requery  ' обновление содержимого раскрывающегося списка, но не его значения
    cbDolzhnost = ""   ' убираем значение поля
    cbDolzhnost.SetFocus  ' устанавливаем фокус на поле должностей
    cbDolzhnost.Dropdown ' раскрываем список выбора должностей
   End If
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 14.10.2012, 16:24   #10
Jimmy Lenox
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 32
По умолчанию

Простите, но я видимо чего-то не понимаю...
Сделал все, как Вы говорили, но обновление подчиненного списка все равно не происходит. Я просмотрел ту базу, которую Вы приложили в сообщении и заметил, что там та же самая проблема...
Может я что-то не так делаю?.. Объясните, пожалуйста!..
Jimmy Lenox вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подчиненные формы, связь. Angelo4ka Microsoft Office Access 0 19.07.2012 16:30
разнести подчиненные формы по вкладкам access user Microsoft Office Access 1 17.07.2011 18:02
Списки в Си. Multiman Помощь студентам 3 03.06.2011 18:26
mdb+ADO главная и подчиненные таблцы masal77 БД в Delphi 2 03.04.2011 09:34