LEADERSOFT.ru
Разработка на заказ программ и сайтов
Разработка
Заказ программы
Прайс-лист
Техническое задание
Проектная документация
Наши клиенты
Реклама и продвижение
Магазин
Перейти в магазин
Новинки магазина
Бизнес программы
Финансовый учет
Документооборот
Исходные коды
Интернет решения
Обучение
Перейти в раздел
Форумы по разработке
Примеры на Access
Рассылка статей
Магазин IT литературы
Блог
Все статьи
Microsoft Access (VBA)
Microsoft Access (Проекты)
Microsoft ASP.NET
Сервисы Google
Технические задания
Новости IT технологий
Сервисы
Форумы разработчика
Контакты
О компании
Регистрация на сайте
Подписка на новости по Email
Сообщество Google+
Подписка subscribe.ru
Новости в формате Атом
Загрузить
Загрузить каталог программ
Форумы по информационным технологиям
Начало
Forums
Регистрация
|
Вход
Forums
Обновлено ::
07 февраля 2005
Форумы
Поиск
Список форумов
Программирование
Microsoft Access. Файлы mdb и accdb
Тема: Сложный з...
Тема: Сложный запрос
15.06.2007 21:02:12
Alex5
14 сообщения
Тема: Сложный запрос
В запросе имеется 6 полей с формулами с уровнем сложности, приведенным ниже
ПолеХ:
-Int((-Abs([ПолеХ-1]-[ПолеХ-2]])+[ПолеХ-1]-[ПолеХ-2])/Int(2000*[Поле0]))*Int(1000*[Поле0])
При попытке выполнить запрос появляется сообщение "Слишком сложный запрос". При удалении любого из вычисляемых полей запрос медленно, но выполняется. Упростить его не могу, т.к. необходимы более сложные вычисления. Реализация этого алгоритма в форме не вызывает никаких затруднений при выполнении (не говоря уже о вычислениях в электронных таблицах), но мне необходимы вычиления в запросе, т.к. из него формируются отчеты и дальнейшие расчеты.
Как вообще производятся сложные поэтапные вычисления в запросах без потерь в производительности?
P.S. Общий раздел по запросам
Автор:
Инженер
от 29.03.2002 11:40:47
Источник ...
15.06.2007 21:02:12
All
4316 сообщения
RE: Сложный запрос
Если запрос сложный, то его можно упростить следующим образом.
1. Введите дополнительное поле в таблицу и выполните запрос на обновление.
2. Можно написать функцию на VBA и ее подставить в запрос.
3. Можно создать не только поле, но целую таблицу, где можно сохранять временные данные.
P.S. Общий раздел по запросам
Автор:
Виктор Конюков
от 0:00:00
Источник ...
15.06.2007 21:02:12
Alex5
14 сообщения
RE: Сложный запрос
Расскажите, пожалуйста, подробнее, как подставлять функцию из VBA в запрос для его упрощения. В общем, проблема состоит в том, чтобы составить структуру автоматических поэтапных вычислений в ACCESS, т.е. подобие связанных книг в EXCEL, когда в Книге1 имеются исходные данные, в Книге2 идет первичная обработка данных из Книги1, а в Книге3 обрабатываются результаты из Книги2. При открытии любой книги, она обновляет связи с файлом-источником. Каким путем автоматизировать вычисления в ACCESS? 1. Создавать запросы на обновление и запускать их вручную? 2. При пересчете вычисляемых полей в форме (их ведь невозможно напрямую с полями таблицы, а жаль) обновлять данные в таблицах с помощью инструкций VBA? Пробовал разделить один сложный запрос на несколько простых, но они все равно воспринимаются как один сложный. Посоветуйте, каким путем пойти, чтобы не создавать монстра на глиняных ногах, а потом все переделывать.
P.S. Общий раздел по запросам
Автор:
Инженер
от 01.04.2002 9:20:19
Источник ...
15.06.2007 21:02:12
Николай3
48 сообщения
RE: Сложный запрос
Вообще-то реализация этого вычисления тоже не представляет проблемм.
Запрос нормально выполняется как при использовании вычислений в теле запроса, так и при использовании функции
Например алгоритм ПолеX=ПолеX+[ПолеX-1]+... двенадцать полей (больше не пробовал) вычисляются без проблемм
При выполнении вычислений операции проводятся построчно(т.е. все указанные поля одной строки, затем следующая строка), но со значениями, существующими в таблице(до выполнения запроса)
Так что дело скорее в правильности написания запроса.
Насчет функций, например так:
Поля запроса:
V1: Proba([T1]![X1];Истина)
V2: Proba([T1]![X2];Ложь)
В модуле:
'каждое поле - сумма предыдущих+это поле
Function Proba(lngVal As Long, flag As Boolean) As Long
Static lngTemp As Long
If flag = True Then lngTemp = 0 'при переходе на новую строку сбрасываем промежуточные результаты
Proba = lngVal + lngTemp
lngTemp = lngVal
End Function
P.S. Общий раздел по запросам
Автор:
Николай
от 02.04.2002 3:20:09
Источник ...
Страница 1 из 1
Программирование
Microsoft Access. Файлы mdb и accdb
Тема: Сложный з...
Одноуровневый вид
Древовидная структура
Самый старый из новых
Новейший из старых
Поиск
Список форумов
Начало
|
Forums
Copyright 2002-2016 Leadersoft.ru
::
Leadersoft
::
Соглашение о безопасности
::
Условия использования