2017-02-17 39 views
0

我試圖在SELECT子句中使用動態參數與此代碼:SELECT子句中使用動態參數

ExecuteSQL (
     " 
     SELECT ? 
     FROM \"KPI\" 
     WHERE \"Year\" IN (2016) 
     " 
     ; 
     ""; "" ; "MarketingActivities" 
) 

它返回意外的結果,它解釋字符串字面意思,而不是作爲字段名稱。

MarketingActivities 
MarketingActivities 
MarketingActivities 
... 

此代碼不會得到預期的結果,但不是動態

ExecuteSQL (
     " 
     SELECT \"MarketingActivities\" 
     FROM \"KPI\" 
     WHERE \"Year\" IN (2016) 
     " 
     ; 
     ""; "" 
) 

結果:

318 
75 
235 
... 

這用的FileMaker 15.參數存儲在一個場作爲一個全局變量,但在這裏我明確寫出來了。我也試着動態參數的變化:

\"Marketing Activities\" 
'Marketing Activities' 

WHERE子句中使用動態參數時,我還沒有過類似的問題。 有沒有辦法解決這個問題,並且允許SELECT子句是動態的?

回答

0

我用這個link

例子:

ExecuteSQL("select sum(S.salary) from Employees E join Salary S on E.EmpID = S.EmpID where E.Department = ?"; ""; ""; Department) 

所以對於你這個應該是以下幾點:

ExecuteSQL (
    " 
    SELECT ? 
    FROM \"KPI\" 
    WHERE \"Year\" IN (2016) 
    " 
    ; 
    ""; "" ; MarketingActivities) 
+0

感謝您的想法的字符串,但如你已經在'WHERE'子句中顯示了一個參數。而當執行代碼時,我得到這個錯誤:「找不到指定的表」。它突出了「MarketingActivities」這個詞。 – Bobby

+0

這是因爲它傳遞當前記錄的MarketingActivities列的值作爲參數,而不是對列本身的引用 –

+0

嘗試將方案名稱添加到表名稱:schemename.MarketingActivities。 –

1

使用參數,則不能指定列。這是很容易實現通過修改計算:

ExecuteSQL (" 
     SELECT " & "MarketingActivities" & " 
     FROM \"KPI\" 
     WHERE \"Year\" IN (2016) 
     ";""; "") 

相反,你可以使用一個變量或字段中的值,使得列選擇動態

+0

剛剛意識到,SQL語句的最後一行應該是WHERE Year = 2016 –