Ms-Access

在訪問中的 1 個表欄位中連接 2-3 個表欄位值

  • January 31, 2016

我有一個在 Access 中的項目。問題是我是這個應用程序的新手,我真的不知道該怎麼做,我已經檢查了幾種方法,但仍然卡住了。

我將處理一份調查文件,該文件將維護每個客戶的答案。一年內每月對客戶進行一次回訪,也就是說一個客戶一年可以有12次回訪。

我的問題是,如果我要在未來五年或更長時間內維護這個項目,我必須在我的表中維護另一個欄位來阻止重複的條目。

最好附上文件,但我找不到辦法。這是我想要的佈局:

在我的表格中,欄位 1 將連接其他欄位。年份作為欄位 2,月份(欄位 3),客戶程式碼(欄位 4)等 10 個被調查產品。

我需要以這種方式連接欄位 2、3 和 4,我可以查看是否在特定月份和年份輸入了客戶,如果我的表單中已經存在,我可以安排警告。

您根本不需要連接這些欄位。您可以使用所有 3 列來了解客戶是否填寫了給定月份和年份的調查:

SELECT * FROM Surveys 
WHERE CustomerID = 1 
AND SurveyMonth = Month(Date())
AND SurveyYear = Year(Date())

Date() 函式返回目前系統日期。Month() 和 Year() 函式分別返回傳遞給它們的日期的月份和年份。

一個建議:將調查的整個日期作為日期類型儲存在數據庫中,而不是使用單獨的月份和年份列。這將簡化查找和儲存,使上面的查詢看起來更像:

SELECT * FROM Surveys 
WHERE CustomerID = 1 
AND Month(SurveyDate) = Month(Date())
AND Year(SurveyDate) = Year(Date())

其中 SurveyDate 是 Date 類型的列。

SurveyMonth您需要在and欄位上有一個唯一索引SurveyYear,這將防止重複條目。

您確實應該對月份和年份欄位進行限制,以避免輸入無效數字。

要限制這些值,請創建額外的表來儲存允許的月份和年份值,然後將外鍵關係添加到主表。

這可能比單個日期欄位更容易實現,因為您最終將拆分月份和年份,並且必須處理日期的日期部分,這在 Access 中可能會很棘手。

引用自:https://dba.stackexchange.com/questions/75878