FileMaker Pro12添加了一个很重要的函数,就是ExecuteSQL,这个函数可以直接执行SQL语句获取FileMaker表中的数据。
函数原型:
ExecuteSQL(sqlQuery;fieldSeparator; rowSeparator {;arguments...})
参数:
sqlQuery:查询数据的SQL语句。SQL语句中可以使用Union和Where进行联合查询和条件查询。使用?来进行指定条件查询的参数。
fieldSeparator:字段分隔符。如果返回的结果包含多个字段,则使用这个参数指定一个字段分隔符。
rowSeparator:行分隔符。如果返回结果包含多个行,则使用这个参数指定一个行分隔符。
arguments:查询参数。主要是在使用Where子句时指定动态参数使用。
返回值类型:字符串
解释:ExecuteSQL函数不能使用诸如Create,Update,Delete等SQL语句对FileMaker表结构进行修改。只能进行数据查询。
如果返回是日期和时间,返回值的格式遵循SQL标准而不是FileMaker中定义的格式。
如果查询过程有误FileMaker返回?作为结果。
ExecuteSQL不认识FileMaker中定义的表关系,所以用户可以自行定义表关系进行相应的查找,ExecuteSQL中定义的表关系与FileMaker中定义的互不影响。
需要注意的是SQL语言是有保留字的,所以在定义FileMaker表时最好不要使用SQL保留字作为表名,字段名,否则在执行ExecuteSQL时会出错。
例如,定义表名叫Table,字段名叫Date。执行ExecuteSQL(“select Date fromTable”;“”;“”)时就会出错,需要改为ExecuteSQL(“select “Date" from"Table"”;“”;“”)才可以。
还有一点就是很多FileMaker开发者习惯在表名或者字段名前面加下划线,比如_Table,_Field。这样也是不能直接用在ExecuteSQL中的,也需要加反斜杠引号:ExecuteSQL("select"_Field" from "_Table""; ""; "")
这里是SQL保留字列表:http://www.sql.org/sql-database/postgresql/manual/sql-keywords-appendix.html
为了更好的理解FileMaker支持哪些SQL语句,我做了一个测试文件,里面依据http://www.w3school.com.cn/sql/index.aspW3C School SQL部分进行了依次验证:
http://vdisk.weibo.com/s/41DDt
关于SQL语句的使用和各个关键字的意思,请仔细阅读W3C School的SQL部分,强力推荐~