在FileMaker Pro中修改ExecuteSQL语句以允许宽大处理

时间:2018-10-23 15:57:18

标签: sql filemaker

我试图在一个长脚本中更改一条语句,该语句将变量设置为几个变量完全匹配的结果。现在,这是一个确切的日期匹配,如果日期前后约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 :(得分:2)

我不会尝试直接在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 )