6 / 4 / 2
Регистрация: 29.08.2016
Сообщений: 83

Представление функции из построителя выражений в коде VBA

11.08.2017, 20:37. Показов 2500. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый!
Извините за сложное название темы))) Фантазии хватило только на это)

А вопрос в следующем:
--есть ф-ция из построителя выражений =Sum([Count]).
--Как её описать на VBA?
--На форме есть какое-то кол-во полей с данными из таблицы с столбцом Count.
--И есть вычисляемое поле с этой функцией, вычисляющей сумму полей.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.08.2017, 20:37
Ответы с готовыми решениями:

Заменить представление во всем коде БД на представление из другой БД
В базе было представление v_names. Во всех элементах базы в коде использовалось это название. Но теперь данные нужно брать из такого же...

Можно ли в коде VBA пользовательской функции EXCEL передать аргументы и запустить для промежуточного расчета процедуру?
Ребята! Подскажите. Можно ли в коде VBA пользовательской функции EXCEL передать аргументы и запустить для промежуточного расчета...

Вычислить значения выражений в VBA
Ребята помогите пожалуйста с задачкой, нужно перевести примеры в код VBA Даны целые числа х,у. Вычислить значения выражений ...

14
Эксперт MS Access
2835 / 1377 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
11.08.2017, 20:56
Z51, а пример показать можно? Условностей много, а в чем ее описать и где показать?
1
6 / 4 / 2
Регистрация: 29.08.2016
Сообщений: 83
12.08.2017, 18:46  [ТС]
Спасибо, модератор! Поправил вопрос)
На форме есть энное кол-во полей. Данные из этих полей берутся из таблицы со столбцом Count. Использую ф-цию =Sum([Count]), чтобы посчитать сумму этих полей. Итог исполнения этой ф-ции - в свободном поле Total на той же форме. Но требуется описать эту ф-цию на VBA. Как это сделать?
0
Эксперт MS Access
26823 / 14503 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
12.08.2017, 19:11
Лучший ответ Сообщение было отмечено Z51 как решение

Решение

Если правильно понял, то задачу, то найти сумму можно например функцией Dsum или выполнив запрос
Visual Basic
1
2
3
f=Dsum("[Count]", "Таблица")
или 
f=Currendb.openrecorset("select sum([Count]) from Таблица").fields(0)
Если на форме есть фильтры разного рода, то их надо подставлять в 3-й параметр Dsum или в sql-выражение в предложение Where
1
6 / 4 / 2
Регистрация: 29.08.2016
Сообщений: 83
12.08.2017, 21:45  [ТС]
Спасибо! А как высчитать сумму ПОЛЕЙ ФОРМЫ без обращения к таблице?
0
Эксперт MS Access
26823 / 14503 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
12.08.2017, 21:54
Без обращения к таблице в принципе тоже можно - делаем цикл по рекордсету формы
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'Сумма поля [Count] по всем записям формы в переменной s
dim s
with Me.recordsetcone
  'Проверка на "пустоту" формы. Если пустая ничего делать не надо
  if .eof and .bof then
    s=0
    exit sub
  end if
 
  .movefirst
  do until .eof       'цикл по записям формы с суммированием в переменной s
    s=s+nz(Me.[Count],0)
    .movenext
  loop
end with
0
6 / 4 / 2
Регистрация: 29.08.2016
Сообщений: 83
12.08.2017, 23:22  [ТС]
Что-то не заладилось) Считает кол-во полей (к примеру, 4), потом берёт данные из первого поля (1000) и вычисляет сумму (1000*4). Значения других полей не замечает)

Добавлено через 57 минут
Уточнение: происходит по событию "После обновления". Причём сумму берёт того поля, в котором наступило событие "После обновления". Например, 4 поля и, соответственно, суммы: 1000, 2000, 3000, 4000. Если события наступило в первом поле, то выдаст сумму 4000, если в четвёртом, то - 16000.
0
Эксперт MS Access
26823 / 14503 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
13.08.2017, 10:01
Цитата Сообщение от Z51 Посмотреть сообщение
Что-то не заладилось) Считает кол-во полей (к примеру, 4), потом берёт данные из первого поля (1000) и вычисляет сумму (1000*4). Значения других полей не замечает)
Ничего такого в моем коде нет. Предложенный код суммирует значения поля [Count] по всем записям формы. И все. Т.е. так как у Вас записано в первом посте:
Цитата Сообщение от Z51 Посмотреть сообщение
На форме есть энное кол-во полей. Данные из этих полей берутся из таблицы со столбцом Count. Использую ф-цию =Sum([Count]), чтобы посчитать сумму этих полей. Итог исполнения этой ф-ции - в свободном поле Total на той же форме. Но требуется описать эту ф-цию на VBA.
Если ситуация иная, то описывайте какая есть на самом деле. И лучше, чтобы не было непоняток, выложить БД с подробным объяснением какую форму и какие поля в ней смотреть. И что должно получиться. Куда записывать вычисляемый в коде результат. И с чем его сравнивать, чтобы убедиться в правильности.
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3680 / 2240 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
13.08.2017, 12:30
Цитата Сообщение от Z51 Посмотреть сообщение
--На форме есть какое-то кол-во полей с данными из таблицы с столбцом Count.
Z51, ускользает мысль. Вы имеете в виду, что на одной форме несолько разных полей отображают данные одного и того же столбца таблицы? А зачем?

Добавлено через 1 минуту
Цитата Сообщение от Z51 Посмотреть сообщение
А как высчитать сумму ПОЛЕЙ ФОРМЫ без обращения к таблице?
Visual Basic
1
Itog = Me.Поле1 + Me.Поле2 + Me.Поле3 + Me.Поле4 + Me.Поле5
Но это будет сумма значений полей в одной, текущей (отображаемой на экране) записи. Это именно то, что вам нужно?
0
6 / 4 / 2
Регистрация: 29.08.2016
Сообщений: 83
13.08.2017, 17:02  [ТС]
Цитата Сообщение от texnik-san Посмотреть сообщение
на одной форме несолько разных полей отображают данные одного и того же столбца таблицы? А зачем?
Да. Именно так. Зачем? Выложил пример, объясняющий, зачем мне это нужно.
Цитата Сообщение от texnik-san Посмотреть сообщение
g = Me.Поле1 + Me.Поле2 + Me.Поле3 + Me.Поле4 + Me.Поле5
В примере нажмите кнопку-поиск справа от номера заказа (например, Д-1). Откроется форма с относящимися именно к этому заказу изделиями. Поле txtCount - выделено красным цветом. Далее - вроде и так понятно, что не совсем ясно как заставить его работать)
Вложения
Тип файла: rar Пример.rar (90.4 Кб, 5 просмотров)
0
6 / 4 / 2
Регистрация: 29.08.2016
Сообщений: 83
13.08.2017, 17:03  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Если ситуация иная, то описывайте какая есть на самом деле. И лучше, чтобы не было непоняток, выложить БД с подробным объяснением какую форму и какие поля в ней смотреть. И что должно получиться. Куда записывать вычисляемый в коде результат. И с чем его сравнивать, чтобы убедиться в правильности
Спасибо за ответ. Выложил пример.
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3680 / 2240 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
13.08.2017, 17:45
Цитата Сообщение от Z51 Посмотреть сообщение
Да. Именно так. Зачем? Выложил пример, объясняющий, зачем мне это нужно.
То, что вы выложили - называется "ленточная форма". Она отображает много записей таблицы, но поле, отображающее поле Count таблицы - одно. Не "несколько полей", а одно поле на ленточной форме.
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3680 / 2240 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
13.08.2017, 17:53
Лучший ответ Сообщение было отмечено Z51 как решение

Решение

В выложенном примере программа отображает новую сумму после правки значения в поле, но до сохранения записи и перехода к другой записи.

На большинстве других событий можно просто обращаться к полю суммы.
Вложения
Тип файла: rar Пример.rar (90.6 Кб, 2 просмотров)
1
Эксперт MS Access
26823 / 14503 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
13.08.2017, 18:01
Лучший ответ Сообщение было отмечено Z51 как решение

Решение

Видимо надо сымитировать работу сумового поля txtTotal, но в коде ВБА?

Смотрите код на событии формы После обновления (AfterUpadte) и поле SummaCount в заголовке формы. В коде этому полю присваивается значение рассчитанной суммы. Значения в поле SummaCount ровно те же, что и в txtTotal.
Вложения
Тип файла: rar Пример1.rar (40.4 Кб, 4 просмотров)
2
6 / 4 / 2
Регистрация: 29.08.2016
Сообщений: 83
13.08.2017, 19:20  [ТС]
Цитата Сообщение от texnik-san Посмотреть сообщение
То, что вы выложили - называется "ленточная форма". Она отображает много записей таблицы, но поле, отображающее поле Count таблицы - одно. Не "несколько полей", а одно поле на ленточной форме
Спасибо)

Добавлено через 14 минут
Цитата Сообщение от mobile Посмотреть сообщение
Видимо надо сымитировать работу сумового поля txtTotal, но в коде ВБА?
Да. Большое спасибо за ответ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.08.2017, 19:20
Помогаю со студенческими работами здесь

Представление ДКА в коде
Здравствуйте! Подскажите пожалуйста, как можно представить детерминированный конечный автомат в коде? Знаю только, что его можно задать с...

ADODataSet->Column - представление в коде
Хочу заполнить пиклист для колонки Music (8я), ADODataSet1, данные берёт из ADODataSetMusicTable - её колонки Music void __fastcall...

PInvoke и представление параметра void** в управляемом коде
Здравствуйте! Проблема состоит в следующем: В библиотеке на CPP имеется некая функция, которая устанавливает соответствующие колбэки, а...

Битовое представление вещественного числа, ошибка в коде
#include <iostream> using namespace std; void binary (double x); //функция вывода представления числа через объединение int...

Есть ли в VBA for MSAccess что-то на подобии регулярных выражений RegExp?
Есть ли в VBA for MSAccess что-то ан подобии регулярнsх вsражений RegExp, метки времени unixtimestamp или что-то подобное этому?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
API на базе FastAPI с Python за пару минут
AI_Generated 07.07.2025
FastAPI - это относительно молодой фреймворк для создания веб-API, который за короткое время заработал бешеную популярность в Python-сообществе. И не зря. Я помню, как впервые запустил приложение на. . .
Основы WebGL. Раскрашивание вершин с помощью VBO
8Observer8 05.07.2025
На русском https:/ / vkvideo. ru/ video-231374465_456239020 На английском https:/ / www. youtube. com/ watch?v=oskqtCrWns0 Исходники примера:
Мониторинг микросервисов с OpenTelemetry в Kubernetes
Mr. Docker 04.07.2025
Проблема наблюдаемости (observability) в Kubernetes - это не просто вопрос сбора логов или метрик. Это целый комплекс вызовов, которые возникают из-за самой природы контейнеризации и оркестрации. К. . .
Проблемы с Kotlin и Wasm при создании игры
GameUnited 03.07.2025
В современном мире разработки игр выбор технологии - это зачастую балансирование между удобством разработки, переносимостью и производительностью. Когда я решил создать свою первую веб-игру, мой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru