Microsoft Access-Abfrage ist zu komplex - IF-Formel

490
Clarisa

Ich habe eine Abfrage in der Access-Datenbank, und wenn ich versuche, sie auszuführen, erhalte ich die Fehlermeldung "Abfrage ist zu komplex zum Ausführen". Laufzeitfehler 3360. "Das Problem liegt bei einer Formel / Programmierlogik, siehe unten:

Zuvor war die Formel unten - und es hat funktioniert.

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

Eine ausführliche Version des Obigen wäre:

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

Dann habe ich es aktualisiert, siehe unten:

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

Ausführliche Version des obigen:

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

Und jetzt läuft die Abfrage nicht mehr, jede Hilfe wird sehr geschätzt, danke!

1
Eine Case-Anweisung könnte besser funktionieren, da sie besser lesbar wäre. Ihre Abfrage scheint zu fehlen und ein). Musselman vor 6 Jahren 0
Die Case-Anweisung wird in Access Expression nicht erkannt. Außerdem fehlt meines Erachtens ein ")", da Access einen Fehler zurückgibt, wenn eine Klammer fehlt. Irgendeine andere Möglichkeit, die IF-Anweisung zu vereinfachen? Clarisa vor 6 Jahren 1
Warum verwenden Sie "IIF"? Ich meine, was ist der Punkt? Dave vor 6 Jahren 1
Nun ... der komplexe Fehler kann durch so viele verschiedene Dinge verursacht werden: zu komplexe Ausdrücke, Funktionsaufrufe mit Nullwerten, unvollständige Datumsparameter (z. B. # 07-25- # usw.) und so weiter. RylanAccess vor 6 Jahren 0
Wie Sie aus meiner Bearbeitung Ihrer Frage entnehmen können, fehlt Ihnen tatsächlich eine schließende Klammer. Wenn Sie das in Ihrem Originalcode haben, ist Ihre Kopie für die Frage unvollständig. Da Sie diese unhandliche Berechnung ([TBBLL] + [Recourse] + [QualifiedNonrecourse] + [NonRecourse] `) mehrfach verwenden, haben Sie darüber nachgedacht, eine Variable / Spalte oder ähnliches zu verwenden? Seth vor 6 Jahren 0

0 Antworten auf die Frage