簡體   English   中英

記錄集不可更新(來自兩個表的查詢)

[英]Recordset is not updatable (query from two tables)

我將Microsoft Access 2013與Sharepoint列表一起使用,並且有兩個表:

  • 學生 :ID,全名,手機,Start_Date(他們在我中心開始學習的日期)以及一些無關的字段

=>許多學生的開學日期不同

  • [Weeks Off] :ID,原因,From_Date(中心暫時關閉的日期),[周數](中心從該From_Date暫時關閉的周數)

=>在每個學生的學習時間中,他們可能有一些“假”沒有計入其學習的總周數中。

我正在創建一個查詢,以計算學生從Start_Date開始學習的周數。

SELECT

students.ID,
students.[Full name],
students.Mobile,
students.Start_Date,
Round((Date()-students.[Start_Date])/7,0) - 
( SELECT SUM(
    IIF( [Weeks Off].[From Date]> students.[Start_Date] and [Weeks Off].[From Date]<Date(), 
         [Weeks Off].[Number of Weeks], 0 )
   ) 
  FROM [Weeks Off]
) AS [Studied Weeks],

FROM students;

現在的問題是,即使查詢成功地在所有學生的列中顯示了“學習周數”,但記錄集還是不可更新的。

我該如何使其再次可更新?


來自評論:

我將其更改為:

(Round( ( Date()- students.Start_Date)/7,0) - 
 DSum("[Number of Weeks]", "[Weeks Off]", 
      "[From Date]>= students.Start_Date And [From Date]<= Date()") 
) AS [Studied Weeks] 

但它說:Microsoft找不到學生的名字。您在表達式中輸入的起始日期。 所以我仍然停留在這里。

請參閱: 處理不可更新的Microsoft Access查詢艾倫·布朗Allen Browne):為什么查詢是只讀的?

從后者:

它在SELECT子句中使用First(),Sum(),Max(),Count()等。 匯總記錄的查詢是只讀的。

如果將計算結果放到一個單獨的查詢中(並將該查詢(在Student.ID上)加入“學生”表,則可能會起作用。

如果將SUM計算轉換為DSum()表達式,它將起作用(但可能會更慢)。 然后,只有該列將是只讀的。

編輯

students.Start_DateDSum調用中的變量,因此它必須在條件中的常量字符串之外。

使用Gustav的CSql()函數格式化日期並將其與其余日期連接在一起。

(Round( ( Date()- students.Start_Date)/7,0) - 
 DSum("[Number of Weeks]", "[Weeks Off]", 
      "[From Date]>=" & CSql(students.Start_Date) & " And [From Date]<= Date()") 
) AS [Studied Weeks] 

應該這樣做。

暫無
暫無

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

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