Лабораторные работы по СУБД
1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 (0 Голоса)

Лабораторная работа Динамическое изменение источника строк для элемента управления Поле со списком.

Цель: Научиться программно формировать источник строк для элемента управления поле со списком, согласовывать данные в нескольких полях со списком.

Условие задания:

Создать форму ПросмотрКонтактов для отбора данных о контактах фирмы (клиентах или поставщиках), с возможность задания критериев выбора (все контакты заданной группы, контакты заданной группы расположенные в указанной стране, заданный контакт из указанной группы). Форма в режиме Формы представлена на рис. 1.

Форма в режиме Формы с настройкой значений элементов управления по умолчанию

Рис.1. Форма в режиме Формы с настройкой значений элементов управления по умолчанию

Спецификация элементов управления


п/п

Тип

Имя

Назначение

1

Группа

grpContactType

Выбор типа контактной группы

2

Кнопка

cmdOpenContact

Открытие формы Клиенты или Поставщики в соответствии с выбранным типом контактной группой

3

Кнопка

cmdDefault

Установка значений элементов управления в форме по умолчанию

4

Кнопка

cmdClose

Закрыть форму

5

Группа

grpCriteria

Выбор критерия для просмотра данных о

6

Надпись

lbl1

Вывод количества строк в поле со списком КодСтраны

7

Надпись

lbl2

Вывод количества строк в поле со списком cbContact

8

Поле со списком

cbContact

Вывод названий контактов из контактной группы

9

Поле со списком

КодСтраны

Вывод стран контактной группы

Примеры процедур обработки событий:

'------------------------------------------------------------------------

'заголовок модуля формы Просмотр контактов

Option Explicit

Dim strFormName As String               'имя открываемой формы

Dim strNameControl As String            'имя элемента управления

                                                       'в открываемой форме,

                                                       'по которому осуществляется отбор

'------------------------------------------------------------------------

Private Sub Form_Open(Cancel As Integer)

DoCmd. Restore

cmdDefault_Click

End Sub

'------------------------------------------------------------------------

Private Sub cmdClose_Click()

DoCmd. Close

End Sub

'------------------------------------------------------------------------

Private Sub cmdDefault_Click()

grpContactType = 1

grpContactType_AfterUpdate

End Sub

'------------------------------------------------------------------------

Private Sub grpContactType_AfterUpdate()

grpCriteria = 1

If grpContactType = 1 Then

strNameControl = "КодКлиента"

strFormName = "Клиенты"

Else

strNameControl = "КодПоставщика"

strFormName = "Поставщики"

End If

InitControl

End Sub

'------------------------------------------------------------------------

Private Sub InitControl()

With КодСтраны

.RowSource = "SELECT Страны. КодСтраны, Страны. Страна" _

& " FROM Страны" _

& " INNER JOIN " & strFormName _

& " ON Страны. КодСтраны =" & strFormName & ".КодСтраны" _

& " UNION" _

& " SELECT 0, '<Все>'" _

& " FROM Страны"

.Value = .ItemData(0)

.Enabled = False

lbl1.Caption =.ListCount - 1

End With

With cbContact

.RowSource = "SELECT " & strNameControl & ", Название" _

& " FROM " & strFormName _

& " UNION" _

& " SELECT '0', '<Все>' FROM " & strFormName

.Value = .ItemData(0)

.Enabled = False

lbl2.Caption = .ListCount - 1

End With

End Sub

'------------------------------------------------------------------------
Private Sub cmdOpenContact_Click()

Dim strWhere As String, strWhere1 As String

Dim blFlag As Boolean

blFlag = False

strWhere = ""

If Not КодСтраны = 0 Then

strWhere = strWhere & "КодСтраны =" & КодСтраны

End If

If Not CbContact. Column(1) = "<Все>" Then

blFlag = True

If Not strWhere = "" Then strWhere = strWhere & " AND "

If strNameControl = "КодКлиента" Then

strWhere = strWhere & strNameControl & "=" & "'" & cbContact & "'"

Else

strWhere = strWhere & strNameControl & "=" & cbContact

End If

End If

DoCmd. OpenForm strFormName, , , strWhere

If blFlag Then

With Forms(strFormName)

'не выводить кнопки перехода по записям

.NavigationButtons = False

'запретить добавление записей

.AllowAdditions = False

End With

End If

End Sub

'------------------------------------------------------------------------

Private Sub КодСтраны_AfterUpdate()

With CbContact

If Not КодСтраны = 0 Then

.RowSource = "SELECT " & strNameControl & ", Название" _

& " FROM " & strFormName _

& " WHERE КодСтраны=" & КодСтраны _

& " UNION" _

& " SELECT '0', '<Все>'" _

& " FROM " & strFormName

Else

.RowSource = "SELECT " & strNameControl & ", Название" _

& " FROM " & strFormName _

& " UNION" _

& " SELECT '0', '<Все>'" _

& " FROM " & strFormName

End If

lbl2.Caption = .ListCount – 1

End With

End Sub

'------------------------------------------------------------------------

Private Sub grpCriteria_AfterUpdate()

If grpCriteria = 1 Then

InitControl

Else

КодСтраны. Enabled = True

CbContact. Enabled = True

End If

End Sub

'------------------------------------------------------------------------

Private Sub CbContact_AfterUpdate()

Dim strWhere As String

With КодСтраны

If Not CbContact. Column(1) = "<Все>" Then

If strNameControl = "КодКлиента" Then

strWhere = "'" & CbContact & "'"

Else

strWhere = CbContact

End If

.RowSource = "SELECT DISTINCT Страны. КодСтраны, Страны. Страна" _

& " FROM Страны" _

& " INNER JOIN " & strFormName _

& " ON Страны. КодСтраны =" & strFormName & ".КодСтраны" _

& " WHERE " & strNameControl & "=" & strWhere _

& " UNION" _

& " SELECT 0, '<Все>'" _

& " FROM Страны"

Else

.RowSource = "SELECT DISTINCT Страны. КодСтраны, Страны. Страна" _

& " FROM Страны" _

& " INNER JOIN " & strFormName _

& " ON Страны. КодСтраны =" & strFormName & ".КодСтраны" _

& " UNION" _

& " SELECT 0, '<Все>'" _

& " FROM Страны"

End If

lbl1.Caption = .ListCount – 1

End With

End Sub

'------------------------------------------------------------------------

Примеры режимов отображения данных в форме

Пример режимов отображения данных в форме1Пример режимов отображения данных в форме2

Рис. 2                                                                          Рис. 3

Добавить комментарий


Защитный код
Обновить

По темам:

История Украины

Культурология

Высшая математика

Информатика

Охотоведение

Статистика

География

Военная наука

Английский язык

Генетика

Разное

Технологиеские темы

Украинский язык

Филология

Философия

Химия

Экология

Социология

Физическое воспитание

Растениевосдство

Педагогика

История

Психология

Религиоведение

Плодоводство

Экономические темы

Бухгалтерские темы

Маркетинг

Иностранные языки

Ветеринарная медицина

Технические темы

Землеустройство

Медицинские темы

Творчество

Лесное и парковое хозяйство

Агрономия

Преподавателям

Юридические темы

Google