Russian version
English version
ОБ АЛЬЯНСЕ | НАШИ УСЛУГИ | КАТАЛОГ РЕШЕНИЙ | ИНФОРМАЦИОННЫЙ ЦЕНТР | СТАНЬТЕ СПОНСОРАМИ SILICON TAIGA | ISDEF | КНИГИ И CD | ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ | УПРАВЛЕНИЕ КАЧЕСТВОМ | РОССИЙСКИЕ ТЕХНОЛОГИИ | НАНОТЕХНОЛОГИИ | ЮРИДИЧЕСКАЯ ПОДДЕРЖКА | АНАЛИТИКА | КАРТА САЙТА | КОНТАКТЫ
 
Программное обеспечение
 
Для зарегистрированных пользователей
 
РАССЫЛКИ НОВОСТЕЙ
IT-Новости
Новости компаний
Российские технологии
Новости ВПК
Нанотехнологии
 
Поиск по статьям
 
RSS-лента
Подписаться
ОС и Офисное ПО

Ограничение раскрывающегося списка

К сожалению, в Access'е не предусмотрена возможность формирования набора строк раскрывающегося списка с ограничением, накладываемым значением какого-либо другого поля записи. Такой список можно создать самостоятельно ценой лишних поля в источнике данных формы, элемента управления типа Text Box и пары строк кода в обработчике события Got Focus раскрывающегося списка:

Private Sub MyCombo_GotFocus()
 Me.MyCombo.RowSource = "SELECT ID, Должность FROM Должности WHERE Фирма = " & Me!Фирма
 Me.MyCombo.Requery
End Sub

В источнике данных формы должны присутствовать и кодовое (из первичной таблицы - Сотрудники.Должность ) и текстовое (из присоединенного справочника - Должности.Должность ) представления поля Должность . Предполагается, что поле Фирма присутствует в обеих таблицах: именно по нему и происходит ограничение значений в списке.

ALTER PROCEDURE СписокДолжностей (@Сотрудник Int = NULL)
AS SELECT Сотрудники.*, Должности.Должность
FROM Сотрудники LEFT OUTER JOIN Должности ON Сотрудники.Должность = Должности.ID
WHERE (Сотрудники.ID = @Сотрудник) OR (@Сотрудник IS NULL)

Здесь параметр @Сотрудник нужен для правильной работы этой процедуры как команды синхронизации (данный пример подразумевает работу с ADP в Access 2000/2002).

В самой форме, кроме раскрывающегося списка, должен быть Text Box, связанный с полем Должности.Должность . Его нужно расположить поверх списка но так, чтобы кнопка раскрывания всё таки была видна. Первоначально источник строк списка должен быть пустым, что, кстати, благоприятно сказывается на скорости открытия формы.

Разумеется, в режиме таблицы это работать не будет. Пример для Access'97 можно взять здесь.

    Пара замечаний:

    1. Тот самый Text Box на форме должен быть заблокирован. Иначе фамилию в справочнике сотрудников можно случайно изменить.
    2. При выборе другой фирмы надо очищать поле сотрудника. Это препятствует попаданию сотрудников в "чужие" фирмы.


  Рекомендовать страницу   Обсудить материал Написать редактору  
  Распечатать страницу
 
  Дата публикации: 17.03.2006  

ОБ АЛЬЯНСЕ | НАШИ УСЛУГИ | КАТАЛОГ РЕШЕНИЙ | ИНФОРМАЦИОННЫЙ ЦЕНТР | СТАНЬТЕ СПОНСОРАМИ SILICON TAIGA | ISDEF | КНИГИ И CD | ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ | УПРАВЛЕНИЕ КАЧЕСТВОМ | РОССИЙСКИЕ ТЕХНОЛОГИИ | НАНОТЕХНОЛОГИИ | ЮРИДИЧЕСКАЯ ПОДДЕРЖКА | АНАЛИТИКА | КАРТА САЙТА | КОНТАКТЫ

Дизайн и поддержка: Silicon Taiga   Обратиться по техническим вопросам  
Rambler's Top100 Rambler's Top100