Запрос Microsoft Access слишком сложен - формула ЕСЛИ
404
Clarisa
У меня есть запрос в базе данных Access, и когда я пытаюсь его запустить, я получаю сообщение об ошибке «запрос слишком сложен для выполнения». Ошибка выполнения 3360. «Проблема в одной формуле / логике программирования, см. Ниже:
Ранее формула была ниже - и это работало.
IIf([BegTaxBasis]=0 And [Contribution]+[Distribution]=0,0,IIf([BegTaxBasis]=0 And [TaxIncSubTotal]=0,-[Distribution],IIf([Distribution]=0,0,IIf([TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse]<[Distribution],-[Distribution],0))))
Подробная версия выше была бы:
IIf( [BegTaxBasis]=0 And [Contribution]+[Distribution]=0, 0, IIf( [BegTaxBasis]=0 And [TaxIncSubTotal]=0, -[Distribution], IIf( [Distribution]=0, 0, IIf( [TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse]<[Distribution], -[Distribution], 0 ) ) ) )
Затем я обновил его, см. Ниже:
IIf([BegTaxBasis]=0 And [Contribution]+[Distribution]=0,0,IIf([BegTaxBasis]=0 And [TaxIncSubTotal]=0,-[Distribution],IIf([Distribution]=0,0,IIf([TBBLL]>0,0,IIf([TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse]<[Distribution],-[Distribution],IIf([TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse]>[Distribution] And [TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse]<0 And [TaxIncSubTotal]<0,[TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse]-[TaxIncSubTotal],[TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse])))))
Подробная версия вышеперечисленного:
IIf( [BegTaxBasis]=0 And [Contribution]+[Distribution]=0, 0, IIf( [BegTaxBasis]=0 And [TaxIncSubTotal]=0, -[Distribution], IIf( [Distribution]=0, 0, IIf( [TBBLL]>0, 0, IIf( [TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse]<[Distribution], -[Distribution], IIf( [TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse]>[Distribution] And [TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse]<0 And [TaxIncSubTotal]<0, [TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse]-[TaxIncSubTotal], [TBBLL]+[Recourse]+[QualifiedNonrecourse]+[NonRecourse] ) ) ) ) )
И теперь запрос не будет выполняться, любая помощь очень ценится, спасибо!
Оператор case может работать лучше, так как он будет более читабельным. Ваш запрос, по-видимому, отсутствует).
Musselman 7 лет назад
0
Оператор case не распознается в выражении Access, также я не думаю, что в нем отсутствует ")", потому что Access возвращает ошибку, если в скобках отсутствует. Есть ли другой способ упростить оператор IF?
Clarisa 7 лет назад
1
Почему вы используете `iif`? Я имею в виду какой смысл?
Dave 7 лет назад
1
Что ж ... Сложная ошибка может быть вызвана слишком многими разными вещами: чрезмерно сложные выражения, вызовы функций с нулевыми значениями, неполные параметры даты (например, # 07-25- # и т. Д.) И так далее.
RylanAccess 7 лет назад
0
Как вы можете видеть из моего редактирования вашего вопроса, вам действительно не хватает закрывающей скобки. Если у вас есть это в вашем исходном коде, ваша копия вопроса будет неполной. Поскольку вы используете это громоздкое вычисление (`[TBBLL] + [Recourse] + [QualifiedNonrecourse] + [NonRecourse]`) несколько раз, вы задумывались об использовании переменной / столбца или чего-то подобного?
Seth 7 лет назад
0
0 ответов на вопрос
Похожие вопросы
-
2
Как добавить в «Общие выражения» в Access?
-
5
Какие интерфейсы помимо MS Access доступны для манипулирования файлами MDB
-
11
Менее устрашающий интерфейс для SQL Server
-
-
4
Каков наилучший способ преобразования базы данных MySQL в базу данных доступа?
-
4
Открытие mdb файлов в Ubuntu
-
1
Access 2007 не будет отображать панель навигации
-
2
Эквивалент функции Excel NETWORKDAYS с Jet ADO
-
11
Почему Access сообщает, что не может получить команду для своей программы?
-
2
MS Access сплит базы данных запросов
-
1
Открытие файлов .mdb 2003 в MS Access 2007