我正在尝试在FileMaker Pro 13中创建一个字段(计算结果),该字段将返回在特定字段中选择特定值的次数。
例如:
假设你有表1.表1只有一个名为Field 1的字段。字段1是一个下拉列表字段,带有选项“A”,“B”和& “C”。以下数据来自表1的记录,使用字段1:
记录1:表1 ::字段1 =“A”
记录2:表1 ::字段1 =“A”
记录3:表1 ::字段1 =“B”
记录4:表1 ::字段1 =“C”
我想要的是一个计数器,用于搜索表1的记录,并查找选择某个选项的次数。例如,我想知道在字段1中选择了多少次“A”,它将返回“2”。
我到目前为止尝试做的是以下但是它没有那么热(返回“?”):
的ExecuteSQL(
“SELECT Field 1
FROM表1
WHERE字段1 ='A'“
“;”, “”)
有关正确SQL脚本的任何建议吗?
答案 0 :(得分:1)
执行的正确版本
ExecuteSQL(
"SELECT Count(\"Field 1\")
FROM \"Table 1\"
WHERE \"Field 1\" = ?"
;"";"";"A")
当您使用ExecuteSQL时,您将字符串传递给FileMaker的函数,然后在幕后,FileMaker使用该字符串以及您为其提供的各种其他部分来执行操作。
如果您的字段或表名中有空格,例如Field 1
,FileMaker认为您的意思是"选择字段名称Field
和名为1
的字段。如果字段名称包含空格或特殊字符,则需要引用字段名称,但是您不能使用常规双引号,因为这会结束字符串。
解决问题的方法就是我上面所做的;转义字段或表名周围的双引号。
此外,底部的?
和"A"
允许您将数据传递到查询中,即参数化查询。这意味着你可以做一个循环,循环的每次迭代都传递给我有"A"
的不同值。例如。你可以这样做:
ExecuteSQL(
"SELECT Count(\"Field 1\")
FROM \"Table 1\"
WHERE \"Field 1\" = ?"
;"";""; Table 1::Search Field)
或
ExecuteSQL(
"SELECT Count(\"Field 1\")
FROM \"Table 1\"
WHERE \"Field 1\" = ?"
;"";"";$searchValue)
但是要小心,如果您在服务器/客户端环境中,ExecuteSQL不会缓存它所记录的记录,因此如果您在表中有大量记录,这个计算可能会变得非常缓慢,你&# 39;重新过去,或两者兼而有之。我建议尝试以不同的方式获得计数。
答案 1 :(得分:0)
Select count(*) from Table1 where Field1='A'