Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Путь к таблице / 3 сообщений из 3, страница 1 из 1
18.06.2016, 20:01
    #39258321
Novixen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к таблице
Добрый вечер. Я новичок в access и хотел бы спросить у вас кое-что. Имеется таблица и в ней три колонки: код продукт и сумма. Мне надо из vba обращаться к этой таблице и чтобы она пробегалась по первой колонке и если значение ячейки в первой колонке равно 1, то чтобы она брала значение третьего столбца из этой строки и добавляла его в память и так до конца всей таблицы. И чтобы был счётчик добавленных сумм. То есть нужно найти среднее арифметическое всех сумм, у которых значение первого столбца равно 1. Вот что сам пробовал:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim str_my As Integer
    Dim k As Integer

     Set db = CurrentDb()
    Set rst = db.OpenRecordset("Общая", dbOpenDynaset) 'dbOpenSnapshot)
    rst.MoveFirst
    
Do While Not rst.EOF
If rst![Код] = 1 Then
        str_my = str_my + rst![Сумма]
        k = k + 1
        rst.MoveNext
End If
    Loop
    rst![С] = str_my / k
       
    
    rst.Close
    db.Close
    Set db = Nothing


Но программа почему то не отвечает и access блокируется
...
Рейтинг: 0 / 0
18.06.2016, 20:33
    #39258327
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к таблице
Novixen,
1.кодовое поле обязано быть уникальным-ОДНОЗНАЧНО определяюшим запись(если будет так,то запись с кодом=1 будет только одна
или таковой не будет вовсе
2.если поле сумма вычисляемое,то хранить его в таблице можно,но крайне нежелательно
Хотите быстрой помощи-выложите базу и напишите чего Вы от нее хотите
...
Рейтинг: 0 / 0
18.06.2016, 20:52
    #39258334
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к таблице
Novixen,

у тебя дыра в алгоритме, на ней всё и стопорится:

rst.MoveNext работает только при rst![Код] = 1

переставь rst.MoveNext через строку (перед Loop)

Дополнительно:
str_my (сумма) - ну хотя бы каренси или дубле (а то дробей/копеек не будет)
к - тоже для общего случая маловато, лучше лонг
хороший тон в начале:
k=0
str_my=0

ну и проще это сделать сразу в запросе:
вставляешь в запрос код и сумму, включаешь группировку, для кода выбираешь Count, для суммы Avg
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Путь к таблице / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]