簡體   English   中英

MS Access VBA選擇查詢

[英]MS Access VBA Select query

因此,首先抱歉我的英語,我的母語是德語。

我有一個帶有幾個表的ACCESS數據庫,該數據庫中充滿了正在愈合的植物,並且有一個名為“問題”的表,它看起來像這樣:

列:ID-名稱-頭痛-疼痛-嘔吐-等等。

諸如頭痛之類的跡象的列是布爾值-True或False。

現在,我想進行一個查詢,要求用戶(帶有某種形式的列表框或文本輸入)告訴他的指示,然后應該有一個物質/植物的列表,指示的值(ColumnName)為true。

我認為多數民眾贊成在一個表中搜索列的參數。

我將看一下您的數據庫的設計。 如果另一個問題變得很明顯,那么要為每個問題創建一個帶有單獨列的表格將是一件令人頭疼的更新工作。

我可能為此使用四個表:

  • 用戶 :UserID(自動編號, PK ),UserName(文本)
    在此處輸入圖片說明
  • 植物 :PlantID(AutoNum, PK ),PlantName(文本)
    在此處輸入圖片說明
  • IssueList :IssueID(自動編號, PK ),IssueDescription(文本)
    在此處輸入圖片說明
  • User_Issues :UserID(數字, PK ),PlantID(數字, PK ),IssueID(數字, PK ),HasIssue(布爾)
    在此處輸入圖片說明

User_Issues表具有一個組合鍵,該組合鍵由其他表中的每個標識符組成-這將確保用戶不會多次遇到同一工廠的問題。

創建新用戶后,將運行查詢以更新User_Issues表:

INSERT INTO User_Issue(PlantID, IssueID, UserID)
SELECT      PlantID, IssueID, UserID
FROM        Plants, IssueList, Users
WHERE       UserName = "Darren"

這將為每個用戶從工廠和問題創建笛卡爾產品。 因此,例如,如果您有兩個工廠和三個問題,則將創建2x3記錄-兩個工廠中可能有6個問題。
在此處輸入圖片說明

此SQL將允許您分配問題:

SELECT        UserName
            , PlantName
            , IssueDesc
            , HasIssue
FROM        ((
             User_Issue INNER JOIN Users ON User_Issue.UserID = Users.UserID)
                        INNER JOIN Plants ON User_Issue.PlantID = Plants.PlantID)
                        INNER JOIN IssueList ON User_Issue.IssueID = IssueList.IssueID
ORDER BY    PlantName, IssueDesc

在此處輸入圖片說明

要查看問題,只需將WHERE HasIssue添加到上述SQL中。

SELECT        UserName
            , PlantName
            , IssueDesc
            , HasIssue
FROM        ((
             User_Issue INNER JOIN Users ON User_Issue.UserID = Users.UserID)
                        INNER JOIN Plants ON User_Issue.PlantID = Plants.PlantID)
                        INNER JOIN IssueList ON User_Issue.IssueID = IssueList.IssueID
WHERE       HasIssue
ORDER BY    PlantName, IssueDesc

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM