首页 > 解决方案 > 用当前时间更新表字段

问题描述

大家好,

我有一个带有子表单的无界表单(它的数据源是一个名为 SaleDetail 的表)。在主窗体上有一个销售 ID 的文本框也是无界的。

我使用以下代码创建了一个按钮:

Private Sub btnEndSale_Click()

Dim strPostTime As String

strPostTime = "UPDATE SaleDetail " & _
        "SET [TIMEOUT] = Time()" & _
        "WHERE SaleDetail.SID = Forms!Sales.Form.sSID"

DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
DoCmd.Requery

End Sub

一旦主窗体上的 SID 与 SalesDetail 表中的 SID 匹配,我试图获取当前时间来更新 SalesDetail 表中的记录,但它不起作用,但如果我Forms!Sales.Form.sSID用现有 ID(例如 9)替换它可以工作. 任何帮助将不胜感激。

标签: vbams-access

解决方案


SetWarnings False抑制信息,因此可能成为故障排除的障碍。并且可以通过参数查询完全避免。

Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strUpdate As String

strUpdate = "UPDATE SaleDetail SET [TIMEOUT] = Time() " & _
    "WHERE SaleDetail.SID = which_SID;"
Set db = CurrentDb
Set qdf = db.CreateQueryDef(vbNullString, strUpdate)
With qdf
    .Parameters("which_SID").Value = Forms!Sales.Form.sSID.Value
    .Execute dbFailOnError
End With
MsgBox db.RecordsAffected & " records updated"

推荐阅读