Ms Access нарушает функцию DateDiff iif

ms-access syntax ms-office datediff iif

132 просмотра

1 ответ

У меня есть расчетный столбец, чтобы проверить, меньше ли «Последний платеж», чем 90 дней от «отзыва». Выражение:

IIf(DateDiff('d',[Last Payment],[withdrawaldate])<=90,'1')

Если я отредактирую это в представлении sql, это работает отлично. Однако, если я редактирую это с помощью построителя запросов, он ломается и говорит «Неверный синтаксис», выделяя «1» как недопустимый раздел.

«Последний платеж» также является расчетным полем, если это имеет значение?

Что мне не хватает ??

Пожалуйста помоги

Заранее спасибо!

редактировать

SQL-представление следующим образом:

SELECT Book.Cause_Date, Book.Is_Archived, Book.Status, Book.Handover_Status, Max(Payments.[Capture Date]) AS [Last Payment], Withdrawaltest.ACCOUNTNO, Withdrawaltest.WITHDRAWALDATE, Withdrawaltest.WITHDRAWALREASON, IIf(Abs(DateDiff('d',[Last Payment], [WITHDRAWALDATE])<=90)='1',"Yes","No") AS [Paid in 90Days], IIf((Abs(DateDiff('m',[Cause_Date],[WITHDRAWALDATE])<=14)='1' And [Handover_Status]='3') Or (Abs(DateDiff('m',[Cause_Date], [WITHDRAWALDATE])<=9)='1' And [Handover_Status]='1'),'No','Yes') AS [Out Of Term], IIf([Paid in 90Days]="Yes" Or [Out Of Term]="No","KEEP","DontBother") AS [Keep?] FROM Payments RIGHT JOIN (Book INNER JOIN Withdrawaltest ON Book.Case_Reference = Withdrawaltest.ACCOUNTNO) ON Payments.[Case Reference] = Withdrawaltest.ACCOUNTNO GROUP BY Book.Cause_Date, Book.Is_Archived, Book.Status, Book.Handover_Status, Withdrawaltest.ACCOUNTNO, Withdrawaltest.WITHDRAWALDATE, Withdrawaltest.WITHDRAWALREASON, IIf((Abs(DateDiff('m',[Cause_Date],[WITHDRAWALDATE])<=14)='1' And [Handover_Status]='3') Or (Abs(DateDiff('m',[Cause_Date], [WITHDRAWALDATE])<=9)='1' And [Handover_Status]='1'),'No','Yes') ORDER BY Max(Payments.[Capture Date]) DESC;

Автор: Stefanpt Источник Размещён: 08.11.2019 11:27

Ответы (1)


0 плюса

Во-первых, в вашем выражении отсутствует «ложная» часть IIf:

IIf(DateDiff('d',[Last Payment],[withdrawaldate])<=90, '1', <FALSE-PART>)

Во-вторых, если вы используете немецкий доступ, вы должны использовать ;вместо ,функций в представлении конструктора запросов.

IIf(DateDiff('d';[Last Payment];[withdrawaldate])<=90; '1'; <FALSE-PART>)

Но в представлении SQL (это «международный») это так ,.

Автор: Andre Размещён: 22.08.2016 08:00
Вопросы из категории :
32x32