2015-01-09 106 views
1

我試圖在FileMaker Pro 13中創建一個字段(計算結果),它將返回在特定字段中選擇特定值的次數。查找特定值的出現次數

例如:

假設有表1只有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字段1

FROM表1

WHERE字段1 = 'A'」

; 「」; 「」)

對於正確的SQL腳本有何建議?

回答

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不緩存記錄,它拉,如果你在一臺服務器/客戶端環境是那麼這種計算可以得到相當低迷如果你在表格中有很多記錄,那麼你就要通過廣域網,或者兩者兼而有之。我會建議試圖以不同的方式獲得計數。

+0

工作完美,謝謝! – 2015-01-10 01:57:10

+0

沒問題:)很高興我能幫上忙。 – 2015-01-10 12:29:11

0
Select count(*) from Table1 where Field1='A' 
+0

我試過這個,因爲某些原因它不工作。回: 」?」 – 2015-01-09 23:34:17