Запрос Microsoft Access слишком сложен - формула ЕСЛИ

378
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] ) ) ) ) ) 

И теперь запрос не будет выполняться, любая помощь очень ценится, спасибо!

0
Оператор case может работать лучше, так как он будет более читабельным. Ваш запрос, по-видимому, отсутствует). Musselman 6 лет назад 0
Оператор case не распознается в выражении Access, также я не думаю, что в нем отсутствует ")", потому что Access возвращает ошибку, если в скобках отсутствует. Есть ли другой способ упростить оператор IF? Clarisa 6 лет назад 1
Почему вы используете `iif`? Я имею в виду какой смысл? Dave 6 лет назад 1
Что ж ... Сложная ошибка может быть вызвана слишком многими разными вещами: чрезмерно сложные выражения, вызовы функций с нулевыми значениями, неполные параметры даты (например, # 07-25- # и т. Д.) И так далее. RylanAccess 6 лет назад 0
Как вы можете видеть из моего редактирования вашего вопроса, вам действительно не хватает закрывающей скобки. Если у вас есть это в вашем исходном коде, ваша копия вопроса будет неполной. Поскольку вы используете это громоздкое вычисление (`[TBBLL] + [Recourse] + [QualifiedNonrecourse] + [NonRecourse]`) несколько раз, вы задумывались об использовании переменной / столбца или чего-то подобного? Seth 6 лет назад 0

0 ответов на вопрос