2012-12-20 50 views
3

這是場景。我有一個基本上是管理文檔的單一功能的數據庫。我爲這個例子處理了兩個表格。從交叉表查詢訪問中打開表格

表1:具有以下字段的文檔表DOCUMENT_NUM,PK; DOCUMENT_NAME;與表1的一對多關係以及基於DOCUMENT_NUM

的參考完整性表2:具有字段的文檔的修訂歷史表DOCUMENT_NUM,PK; REVISION_DATE; REVISION_NUM

我有在該信息進入用於表1進入在信息到表2中DOCUMENT_NUM斷標準拉動型1

我的問題形式,並且另一種形式:我有一個搜索形式,我希望能夠通過搜索不僅在表1中而且還在表2中的參數來打開綁定到表1的表單1。示例:搜索在##/##/###之間修改的文檔#和##/##/####,但會打開帶有「DOCUMENT_NUM」,「DOCUMENT_NAME」等的表單1。但是我無法執行搜索,因爲From 1綁定到表1以及我查詢的信息在表2中。

該搜索使用DoCmd.OpenForm "Documents",,,strQuery其中strQuery = "1=1 AND [SOPS].[SOP_NUMBER] = 'QA-001' AND [SOP_REVISIONS].[REVISION_DATE] >= #12/02/2011# AND [SOP_REVISIONS].[REVISION_DATE] <= #12/02/2012#"

([SOPS] ==表1 & & [SOP_REVISIONS] ==表2)

+0

是什麼問題? –

+2

爲什麼你需要'1 = 1'?你期望你的代碼運行在某種平行的宇宙中嗎? –

+0

@ZevSpitz 1 = 1在動態構建WHERE語句時經常使用。你可以從一個字符串'WHERE 1 = 1'開始,追加'AND ...',而不是試圖找出哪一個是第一個附加語句和/或剝離後續字符串。 – Fionnuala

回答

2

如何:

strQuery = "1=1 AND [SOPS].[SOP_NUMBER] = 'QA-001' " _ 
    & "AND DOCUMENT_NUM IN (" _ 
    & " SELECT DOCUMENT_NUM FROM [SOP_REVISIONS] " _ 
    & " WHERE [SOP_REVISIONS].[REVISION_DATE] >= #12/02/2011# " _ 
    & " AND [SOP_REVISIONS].[REVISION_DATE] <= #12/02/2012#)" 

換句話說,使用子查詢從[SOP_REVISIONS]中獲取相關的DOCUMENT_NUM。

+0

我很難得到像這樣的工作。當您將它用於DoCmd.OpenForm操作的Where條件時,您可以執行這樣的嵌套語句嗎? –

+0

我用這個「DoCmd.OpenForm」tbljournaltitles「,」,「JournalTitleskey」(選擇tbljournals裏的JournalTitleskey,其中crdate>#2012/11/13#)「'這比你的查詢更簡單,但沿着同樣的路線和它返回了預期的記錄數。你有什麼問題?也許你可以在日期中使用年,月,日? – Fionnuala

+0

您的解決方案工作。我犯了一個愚蠢的錯誤。感謝您的幫助。我不知道你可以在這樣的命令中做嵌套SQL。 –