【问题标题】:Recordset is not updatable (query from two tables)Recordset 不可更新(从两个表中查询)
【发布时间】:2017-07-16 09:31:15
【问题描述】:

我正在使用带有 Sharepoint 列表的 Microsoft Access 2013,并且我有两个表:

  • 学生:ID、全名、手机、Start_Date(他们开始在我中心学习的日期)以及一些不相关的字段

=> 有很多学生的开始日期不同

  • [Weeks Off]:ID、Reason、From_Date(中心暂时关闭的日期)、[Number of Weeks](中心从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;

现在的问题是,即使查询成功地显示了所有学生的“学习周数”列,但 Recordset 不可更新。

如何让它再次可更新?


来自评论:

我改成:

(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 找不到您在表达式中输入的名称 students.Start_Date。所以我还是卡在这里。

【问题讨论】:

    标签: sql ms-access sharepoint ms-access-2013


    【解决方案1】:

    请参阅:Dealing with Non-Updateable Microsoft Access QueriesAllen Browne: Why is my query read-only?

    来自后者:

    它在 SELECT 子句中使用 First()、Sum()、Max()、Count() 等。聚合记录的查询是只读的。

    如果您将计算放入单独的查询中并将其(在 Student.ID 上)连接到 Students 表,它可能会起作用。

    如果将 SUM 计算转换为 DSum() 表达式,它将起作用(但可能会更慢)。那么只有该列将是只读的。

    编辑

    students.Start_Date 是您的DSum 调用中的一个变量,因此它必须在条件中的常量字符串之外。

    使用 Gustav 的 CSql() function 格式化日期并将其与其他日期连接起来。

    (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] 
    

    应该这样做。

    【讨论】:

    • 嗨,我把它改成了:(Round((Date()-students.Start_Date)/7,0)-DSum("[周数]","[周休]", "[From Date]>= students.Start_Date And [From Date]
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2011-06-26
    • 2011-09-04
    相关资源
    最近更新 更多