powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Путь к таблице
3 сообщений из 3, страница 1 из 1
Путь к таблице
    #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
Путь к таблице
    #39258327
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Novixen,
1.кодовое поле обязано быть уникальным-ОДНОЗНАЧНО определяюшим запись(если будет так,то запись с кодом=1 будет только одна
или таковой не будет вовсе
2.если поле сумма вычисляемое,то хранить его в таблице можно,но крайне нежелательно
Хотите быстрой помощи-выложите базу и напишите чего Вы от нее хотите
...
Рейтинг: 0 / 0
Путь к таблице
    #39258334
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Novixen,

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

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

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

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

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


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