首页 > 解决方案 > 在 FileMaker Pro 中修改 ExecuteSQL 语句以允许天宽

问题描述

我正在尝试更改长脚本中的语句,该语句将变量设置为几个变量完全匹配的结果。现在它是一个精确的日期匹配,如果日期在大约 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 很业余。

标签: sqlfilemaker

解决方案


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

推荐阅读