sql - 在 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 很业余。
解决方案
我不会尝试直接对 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 )
推荐阅读
- go - 为什么我可以将结构函数分配给其他结构的成员?
- node.js - node js selenium-webdriver 将页面另存为
- c# - 如何在 C# 中使用 Header Request 从另一个控制器调用一个控制器?
- drools - Drool DRL 包含
- gradle - 为运行和测试 Gradle 任务重用环境变量定义的方法?
- java - 将 ExplicitWait 方法调用到功能特性中
- unity3d - 如何使编辑器句柄可选择以显示属性检查器窗口
- python - 在 Django 表单发布请求中访问单选/复选框按钮选择
- jmeter - 在 JMeter 中,如何向 JMS 发布者发送 4 字节消息
- google-streetview-publish - 街景发布导航角度已更改