MyTetra Share
Делитесь знаниями!
Время создания: 16.03.2019 23:43
Текстовые метки: DAO.Recordset, DAO, Recordset
Раздел: !Закладки - VBA - Access
Запись: xintrea/mytetra_db_adgaver_new/master/base/1513758826vpcvijnsnu/text.html на raw.githubusercontent.com

life-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

 

 


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования