|
|
|
| При открытии формы стало появляться сообщение:
Выражение является слишком сложным для вычисления ...
Вначале его не было, стало появляться с некоторого объема заполнения базы.
В базе несколько контролов "список" источниками для которых являются запросы с вычисляемыми полями.
Как определить контрол который вызывает эту ошибу?
М.б. в Access есть параметр который по крайней мере отодвигает начало этой проблемы? | |
|
| |
|
|
|
| такое бывает после "преобразования" условий конструктором запросов, поскольку иногда сложные условия он преобразует крайне не оптимально
например условие
where (w=1 and c =1) and (e=2 or f=4)
сбольшой долей вероятности конструктором будет преобразовано в что-то такое
((w=1 and c =1) and e=2) or( (w=1 and c =1) and f=4)
Кроме того нужно посмотреть что за "вычисляемые поля", если используются dlookUp и подобные функции, то при больших объемах они могу не успевать вычисляться | |
|
| |
|
|
|
| В вычислениях проверка условий и обычные арифметические операции.
Как определить какой именно контрол?
Могут ли настройки параметров Access'a решать эти вопросы? | |
|
| |
|
|
|
|
Как определить контрол который вызывает эту ошибу?
|
Убрать обработку ошибок и посмотреть на источнике записей для какого контрола выдается ошибка. ( Выполнение программы остановится, В сообщении об ошибке нажмите кнопку debug. Вам покажут строку, которая вызывает ошибку) | |
|
| |
|
|
|
| А если кода в форме вообще нет?
Источники записей - запросы, назначенные в конструкторе? | |
|
| |
|
|
|
| одна из причин - попытка использовать для вычислений поля(втч вычисляемые или агрегатные) самого запроса | |
|
| |
|
|
|
| А как выглядет полный текст сообщения об ашыпки?
Ни разу с ним не сталкивался, по моему,
Разве там не приводится текст слишком сложного выражения? | |
|
| |
|
|
|
|
одна из причин - попытка использовать для вычислений поля(втч вычисляемые или агрегатные) самого запроса
|
Так вы получается знаете какой запрос вызывает ошибку?
Так в чем причина определить какой из списков вызывает ошибку - тот для которого запрос является источником записей. Или у вас для разных списков один и тот же источник записей? | |
|
| |
|
|
|
| Смотри авторов. | |
|
| |
|
|
|
|
| Код в форме есть, но он не связан с запросами для списков назначенные в конструкторе. | |
|
| |
|
|
|
| Как убрать обработку ошибок? | |
|
| |
|
|
|
|
Private Sub Кнопка7_Click()
On Error GoTo Err_Кнопка7_Click
Exit_Кнопка7_Click:
Exit Sub
Err_Кнопка7_Click:
MsgBox Err.Description
Resume Exit_Кнопка7_Click
End Sub
|
Вот пример обработки ошибок. Уберите выделенный жирным шрифтом текст | |
|
| |
|
|
|
| Уточните, это должно быть в коде всязанном с формой:
Private Sub Кнопка7_Click()
End Sub | |
|
| |
|
|
|
| Нет, Это объявление процедуры из моего примера. Можете выкинуть эти строчки нах | |
|
| |
|
|
|
| У меня с формой связан некий код, не понимаю что мне даст clic на кнопке? | |
|
| |
|
45 Кб. |
|
| Текст ошибки | |
|
| |
|
|
|
| Клик вам ничего не даст. Я показал выделенным шрифтом какие строчки отвечают за обрабоку ошибок. Если у вас в коде есть нечто подобное, уберите эти строчки. | |
|
| |
|
|
|
|
не связан с запросами для списков назначенные в конструкторе
|
Я этого ответа не увидел. Вам нужно смотреть сами запросы. | |
|
| |