l ife-prog.ru
Dim rs As DAO.Recordset
2-3 минуты
Set db = CurrentDb
Set rs = db.OpenRecordset("Товары")
With rs
.MoveFirst
Me![Стоимость кофе] = 0
Do While .EOF = False
If .Fields("Марка") Like "Кофе*" Then Me![“Стоимость кофе”] = _
Me![“Стоимость кофе”] + .Fields("Стоимость товара")
.MoveNext
Loop
End Wtth
End Sub
Рис. 2.5. Форма “Товары”
Пример 2. Найти и вывести на экран номер группы с максимальным количеством студентов и средним баллом в группе более 4,7 в таблице "Группа".
Private Sub Поиск_Номер_Группы()
Dim db As Database
Dim rs As DAO.Recordset, max As Single, n As Variant
Set db = CurrentDb
Set rs = db.OpenRecordset("ГРУППА")
With rs
.MoveFirst
max = .Fields(1)
.MoveNext
Do While .EOF = False
If .Fields(1) > max And .Fields(2) > 4.7 Then max = .Fields(1): n = .Bookmark
.MoveNext
Loop
.Bookmark = n
MsgBox "Количество студентов - " & max & Chr(13) & "Номер группы - " & _
.Fields(0)
End With
End Sub
Пример 3.Используя библиотеку ADO в окне модуля создать процедуру для заполнения данными поле “Среднее” таблицы “Урожайность” (рис. 2.6).
Рис.2.6. Структура таблицы “Урожайность”
Public Sub Расчет_ADO()
Dim connection As New ADODB.connection 'Если база днных текущая, то
'эту строку можно не писать
'Если базу данных нужно открыть на диске, то после этой строки нужно писать
'Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0";Data Sourse=путь к файлу"
Dim rs As New ADODB.Recordset
Dim s As Double, i As Integer, n As Long
With rs
.Open "Урожайность", CurrentProject.connection, adOpenKeyset, adLockOptimistic
.MoveFirst
Do While .EOF = False
s = 0: n = 0
For i = 1 To .Fields.Count - 2
s = s + .Fields(i): n = n + 1
Next i
s = s / n
.Fields(5) = s
.MoveNext
Loop
End With
End Sub