2017-06-13 16 views
1

私の最初の英語を申し訳ありません、私の母国語はドイツ語です。MS Access VBA質問を選択

私はDBは、植物を癒しで満たされている、いくつかのテーブルを使ってアクセスのDBを持ち、かつ1つの表に「問題」が命名され、それは以下のようになります。

列:ID - 名前 - 頭痛 - - 痛み - 嘔吐など...

そして、頭痛などの徴候の列は、真偽値または真偽値です。

これで、ユーザーに(フォームまたはリスト形式のリストボックスまたはテキスト入力を使用して)ユーザーに指示を伝えるクエリを作成してから、物質/植物のリストが必要になります指示(ColumnName)の値はtrueです。

私はそれがテーブルの列の検索のためのパラメータだと思います。

答えて

5

私はあなたのデータベースのデザインを見ています。別の問題が明らかになった場合は、各issueごとに別々の列を持つテーブルを用意することで、更新するのが難しいでしょう。

私はおそらく、このための4つのテーブルを使用したい:

  • ユーザー:ユーザーID(AUTONUM、PK)、ユーザー名(テキスト)
    enter image description here
  • 植物:PlantID(AUTONUMを、PK)、PlantName(テキスト)
    enter image description here
  • IssueList:IssueID(AUTONUM、PK)、IssueDescription(テキスト)
    enter image description here
  • User_Issues:ユーザID(NUM、PK)、PlantID(NUM、PK)、IssueID(NUM 、PK)、HasIssue(ブール)
    enter image description here

User_Issuesテーブルには、他のテーブルから各識別子を構成した複合キーがあります。これにより、ユーザーは工場で同じ問題を2回以上発生することはありません。

新しいユーザーが作成されると、クエリがUser_Issuesテーブルを更新するために実行します:

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

これは、ユーザーごとに植物や問題から直積を作成します。たとえば、2つのプラントと3つの問題がある場合、2つのプラントで6つの問題が発生する可能性があります。
enter image description here

この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 

enter image description here

はあなただけ上記のSQLにWHERE HasIssueを追加する必要が問題を表示します。

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 

enter image description here

+0

すごい...何不完全な質問に対する完全な答え!オペラが尋ねる次のことは彼にあなたの仕事を送ることですLOL –

+0

@krishKMおそらく穴がいっぱいです。私は 'User_Issue'テーブルに値を追加する追加クエリがあるのが好きではありませんが、クエリを更新不可能にすることなくSQLの各プラントに対するすべての問題をリストする方法は考えられません。 –

+0

詳細な回答ありがとうDarren! あなたのアイデアは私にとって完璧に機能します! –