2016-01-08 53 views
0

我在MS ACCESS 2013中爲我的用戶創建了一個動態SQL字符串構建器。這些報告基本上是從預設的字段池中查詢數據,用戶可以使用表單控件來更改這些數據。我沒有使用條件語句來構建SELECTWHERE聲明但我一直使用基於我的表關係的靜態字符串來生成語句。我已經開始獲取模糊的外部連接錯誤,但是當我解決它時,我會得到重複的報告數據。我想知道是否可以根據用戶從不同的表格中選擇的字段動態構造一個基於語句的語句FROM構建動態SQL「FROM」語句

Table relationships I copied the FROM SQL from is shown here

這裏是我使用的竟然放棄我的錯誤

FROM (((((((tbl_PROJECTS_PARENT LEFT JOIN tbl_PROJECTS_CHILD ON 
tbl_PROJECTS_PARENT.WR_ID = tbl_PROJECTS_CHILD.WR_ID) LEFT JOIN 
tbl_PROJECTS_FACILITIES ON tbl_PROJECTS_PARENT.WR_ID = 
tbl_PROJECTS_FACILITIES.WR_ID) LEFT JOIN tbl_SPC_GFEBS_BLDG ON 
tbl_PROJECTS_FACILITIES.FACILITY_ID = tbl_SPC_GFEBS_BLDG.Building) LEFT 
JOIN tbl_CLEARANCE ON tbl_PROJECTS_PARENT.WR_ID = tbl_CLEARANCE.WR_ID) 
LEFT JOIN tbl_RMP ON tbl_PROJECTS_CHILD.ID_WBS = tbl_RMP.ID_WBS) LEFT JOIN 
tbl_RMP_FY ON tbl_PROJECTS_CHILD.ID_WBS = tbl_RMP_FY.ID_WBS) LEFT JOIN 
tbl_COMMENTS ON tbl_PROJECTS_PARENT.WR_ID = tbl_COMMENTS.WR_ID) RIGHT JOIN 
Qry_comments_latest_basic ON tbl_COMMENTS.WR_ID = 
Qry_comments_latest_basic.WR_ID 

我不使用的代碼插入道歉靜態FROM字符串。無法讓它顯示整個塊。

+0

您的問題不是很清楚。如果你的問題是「_我想知道是否有可能根據用戶從不同的表中選擇的字段來動態構造一個FROM語句。」當然,你可以。如果您對特定的「動態生成的查詢」有錯誤,那麼您應該將完整的查詢與準確的錯誤消息一起發佈。 –

回答

0

您需要創建包含所有可用字段的查詢,以便將其顯示並作爲新表進行查詢。

SELECT [user selected field 1], [user selected field 2], [user selected field 3] 
FROM (
    SELECT * 
    FROM tbl_PROJECTS_PARENT 
    LEFT JOIN tbl_PROJECTS_CHILD ON tbl_PROJECTS_PARENT.WR_ID = tbl_PROJECTS_CHILD.WR_ID 
    LEFT JOIN tbl_PROJECTS_FACILITIES ON tbl_PROJECTS_PARENT.WR_ID = tbl_PROJECTS_FACILITIES.WR_ID 
    LEFT JOIN tbl_SPC_GFEBS_BLDG ON tbl_PROJECTS_FACILITIES.FACILITY_ID = tbl_SPC_GFEBS_BLDG.Building 
    LEFT JOIN tbl_CLEARANCE ON tbl_PROJECTS_PARENT.WR_ID = tbl_CLEARANCE.WR_ID 
    LEFT JOIN tbl_RMP ON tbl_PROJECTS_CHILD.ID_WBS = tbl_RMP.ID_WBS 
    LEFT JOIN tbl_RMP_FY ON tbl_PROJECTS_CHILD.ID_WBS = tbl_RMP_FY.ID_WBS 
    LEFT JOIN tbl_COMMENTS ON tbl_PROJECTS_PARENT.WR_ID = tbl_COMMENTS.WR_ID 
    RIGHT JOIN Qry_comments_latest_basic ON tbl_COMMENTS.WR_ID = Qry_comments_latest_basic.WR_ID 
) AS FullData 
+0

我遵循邏輯,但當我嘗試執行查詢時遇到語法錯誤。我確定它不是間距或分隔符。任何想法? –