Обмеження списку, MS Office, Програмні керівництва, статті

На жаль, в 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. При виборі іншої фірми треба очищати поле співробітника. Це перешкоджає попаданню співробітників в “чужі” фірми.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*