Private Sub Form_Load()
Form.RecordSelectors = False
Form.NavigationButtons = False
Form.DividingLines = False
End Sub
Затем введем процедуру обработки изменения значения поля со списком:
Private Sub Combo4_Change()
Dim rs As Recordset ‘описали объект
Dim sql As String, str As String, sum As Single‘описали переменные
Combo4.SetFocus ‘установили фокус на поле со списком
str = Combo4.Text ‘взяли выбранную фамилию
sql = "select январь, февраль, март from table1 where фио=" & "'" & str + "'" ‘ составили SQL-запрос
Set rs = CurrentDb.OpenRecordset(sql)‘выполнили запрос к теущей БД
Text6.SetFocus
sum = rs.Fields(0).Value + rs.Fields(1).Value + rs.Fields(2).Value
Text6.Text = sum
rs.MoveNext
While Not rs.EOF
Text6.Text = sum + rs.Fields(0).Value + rs.Fields(1).Value + rs.Fields(2).Value
rs.MoveNext
Wend
End Sub
Внешний вид формы приведен на рис. 1
Рис. 1
Рассмотрим более сложный пример. Создадим форму, содержащую поле со списком, группу из трех переключателей, текстового поля и кнопки (рис. 2):
Рис.2
Необходимо, чтобы после выбора фамилии из списка, установки переключателя и нажатия кнопки в текстовом поле отобразилось значение из соответствующего поля соответствующей записи. Текст программы, реагирующей на нажатие кнопки, такой:
Private Sub Кнопка14_Click()
Dim rs As Recordset
Dim sql1 As String, sql2 As String, sql3 As String
ПолеСоСписком1.SetFocus
str = ПолеСоСписком1.Text
sql1 = "select " & Надпись7.Caption & " from Лист1 where фио=" & "'" & str + "'"
sql2 = "select " & Надпись9.Caption & " from Лист1 where фио=" & "'" & str + "'"
sql3 = "select " & Надпись11.Caption & " from Лист1 where фио=" & "'" & str + "'"
Select Case (Группа3.Value)
Case 1: Set rs = CurrentDb.OpenRecordset(sql1)
Поле12.SetFocus
Поле12.Text = rs.Fields(0).Value
Case 2: Set rs = CurrentDb.OpenRecordset(sql2)
Поле12.SetFocus
Поле12.Text = rs.Fields(0).Value
Case 3: Set rs = CurrentDb.OpenRecordset(sql3)
Поле12.SetFocus
Поле12.Text = rs.Fields(0).Value
End Select
End Sub
4. Дополнительные элементы управления (на примере MSFlexGrid).
Очевидно, что результаты SQL-запроса удобнее представлять в табличном виде. К сожалению, в наборе стандартных элементов управления отсутствуют компоненты, представляющие данные в табличном виде. Однако корпорация Microsoft в комплекте со средой программирования Visual Studio 6.0 поставляет большое количество дополнительных элементов управления. Воспользуемся одним из них, под названием MSFlexGrid. Для его установки в системе необходимы два файла - собственно компонент ActiveX msflxgrd.ocx и файл сведений msflxgrd.dep. Файлы необходимо скопировать в папку Windows\System, а затем через «Пуск» - «Выполнить» необходимо выполнить команду regsvr32 msflxgrd.ocx, что позволит занести сведения об элементе управления в системный реестр. Теперь дополнительный элемент управления модет быть добавлен на форму в режиме конструктора с помощью кнопки «Дополнительно» в панели инструментов «Панель элементов». Выбрав из списка Microsoft FlexGrid Control, version 6.0, нарисуем его на форме.
Следует заметить, что у дополнительных элементов управления большинство свойств и методов не отображаются редактором VBA. Для того, чтобы полноценно использовать такие компоненты, необходимо найти их описание, например, в Microsoft Development Network Library, входящей в комплект Visual Studio 6.0.
Поскольку ни из конструктора, ни из редактора VBA свойства и методы дополнительного компонента недоступны, зададим их в программе вывода результатов запроса вручную:
Private Sub Form_Open(Cancel As Integer)
Dim rs As Recordset
Dim i As Integer, j As Integer, ln As Integer
Form.RecordSelectors = False
Form.NavigationButtons = False
Form.DividingLines = False
ПолеСоСписком1.SetFocus
Set rs = CurrentDb.OpenRecordset("select * from Table1")
Grid.Cols = rs.Fields.Count
Grid.Row = 0
For i = 0 To Grid.Cols - 1
Grid.Col = i
Grid.Text = rs.Fields(i).name
Next
rs.MoveLast
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.