LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  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 сообщения
1-ый


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 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Сложный з...
ПоискПоиск  Список форумовСписок форумов  
right