Изменение оператора ExecuteSQL в FileMaker Pro, чтобы учесть дневную снисходительность - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь изменить оператор в длинном скрипте, который устанавливает переменную в результате точного совпадения пары переменных.Прямо сейчас это точное совпадение даты, я хочу, чтобы оно совпадало, если даты выходят на ~ 2 дня, до или после.Текущий сценарий:

Let( [
   UUID = sqlNameField( EIV_Eiv::A__UUID ; "" ; "" )
; BATCHID = sqlNameField( EIV_Eiv::A_BATCH_ID ; "" ; "" )
; PID = sqlNameField( EIV_Eiv::User_ID ; "" ; "" )
; STARTDATE = sqlNameField( EIV_Eiv::Start date ; "" ; "" )
; EIV = sqlNameTable( EIV_Eiv::A__UUID ; "" )
] ;
  ExecuteSQL( "SELECT" & UUID & "," & BATCHID & "FROM" & EIV & "WHERE" & PID & "= ? AND" & STARTDATE & "= ? FETCH FIRST ROW ONLY" ; ¶ ; "" ; EIM_Eim__SELECTED::User_id ; EIM_Eim__SELECTED::Start_date )
)

Я попытался изменить строку ExecuteSQL на:

ExecuteSQL( "SELECT" & UUID & "," & BATCHID & "FROM" & EIV & "WHERE" & PID & "= ? AND" & STARTDATE & "- ? >= -2 AND" & STARTDATE & "- ? <= 2 FETCH FIRST ROW ONLY" ; ¶ ; "" ; EIM_Eim__SELECTED::User_id ; EIM_Eim__SELECTED::Start_date )

Безрезультатно (и FMP не возвращает никаких ошибок, которые яможно увидеть).Я решаю это правильно?Я довольно новичок в написании сценариев FMP и разбираюсь в SQL.

1 Ответ

0 голосов
/ 23 октября 2018

Я бы не пытался делать математику для столбцов дат в SQL напрямую, а скорее делать это с помощью параметров FileMaker, которые вы передаете.(Кроме того, я, кажется, пропустил некоторые пробелы, которые я добавил)

Примерно так:

ExecuteSQL( "SELECT " & UUID & "," & BATCHID & 
" FROM " & EIV & 
" WHERE " & PID & " = ? AND " & STARTDATE >= ? AND STARTDATE <= ? FETCH FIRST ROW ONLY" ;
"¶" ; "" ; EIM_Eim__SELECTED::User_id ; EIM_Eim__SELECTED::Start_date - 2; 
EIM_Eim__SELECTED::Start_date + 2 )
...