Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用当前时间更新表字段_Vba_Ms Access - Fatal编程技术网

Vba 使用当前时间更新表字段

Vba 使用当前时间更新表字段,vba,ms-access,Vba,Ms Access,大家好 我有一个带有子表单的无界表单(它的数据源是一个名为SaleDetail的表)。 在主窗体上有一个用于销售ID的文本框,该文本框也是无界的 我创建了一个按钮,其代码如下: Private Sub btnEndSale_Click() Dim strPostTime As String strPostTime = "UPDATE SaleDetail " & _ "SET [TIMEOUT] = Time()" & _ "WHERE Sal

大家好

我有一个带有子表单的无界表单(它的数据源是一个名为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表中记录的当前时间,但它不起作用,但如果我替换
窗体!Sales.Form.sSID
与现有ID(如9)一起工作。任何帮助都将不胜感激

试试这个:

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

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

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

Dim db作为DAO.Database
将qdf设置为DAO.QueryDef
Dim strUpdate作为字符串
strUpdate=“UPDATE SaleDetail SET[TIMEOUT]=Time()”&_
“其中SaleDetail.SID=哪个_SID;”
Set db=CurrentDb
设置qdf=db.CreateQueryDef(vbNullString,strUpdate)
使用qdf
.Parameters(“which_SID”).Value=Forms!Sales.Form.sSID.Value
.执行dbFailOnError
以
MsgBox db.RecordsAffected&“记录已更新”

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

Dim db作为DAO.Database
将qdf设置为DAO.QueryDef
Dim strUpdate作为字符串
strUpdate=“UPDATE SaleDetail SET[TIMEOUT]=Time()”&_
“其中SaleDetail.SID=哪个_SID;”
Set db=CurrentDb
设置qdf=db.CreateQueryDef(vbNullString,strUpdate)
使用qdf
.Parameters(“which_SID”).Value=Forms!Sales.Form.sSID.Value
.执行dbFailOnError
以
MsgBox db.RecordsAffected&“记录已更新”

我认为NewbiedBuilder没有询问可能使用参数的SQL Server查询。他的密码是:

DoCmd.RunSQL strSQL

这是MS Access命令并查询Access db。

我认为newbieDBBuilder并不是在询问可能使用参数的SQL Server查询。他的密码是:

DoCmd.RunSQL strSQL

这是MS Access命令,用于查询Access db。

谢谢,成功了。@NewBeedBuilder注意,此解决方案有一个SQL注入漏洞,而其他解决方案则没有。SQL注入漏洞是一个安全问题,但也是一个等待发生的错误。考虑学习适当的参数化,而不是将表单字段连接到查询。谢谢,这样做了。@ NeBeBeBuBudid注意到,该解决方案具有另一个解决方案不具备的SQL注入漏洞。SQL注入漏洞是一个安全问题,但也是一个等待发生的错误。考虑学习适当的参数化,而不是将表单字段连接到查询中。这行不是
.Parameters(“which_SID”).Value=Forms吗!Sales.Form.sSID.Value
读取
.Parameters(Forms!Sales.Form.sSID.Value)。Value=Forms!Sales.Form.sSID.Value
?当db引擎在
UPDATE
语句文本中看到
which_SID
时,它将
which_SID
解释为参数(因为它既不是函数名,也不是表中字段名)。因此,从人类的角度来说,您所询问的行的意思是“使用
Forms!Sales.Form.sSID中的值作为名为
的参数的值,该参数的值是
”哦,我明白了。谢谢,我有点困惑。这行不是
.Parameters(“which_SID”).Value=Forms吗!Sales.Form.sSID.Value
读取
.Parameters(Forms!Sales.Form.sSID.Value)。Value=Forms!Sales.Form.sSID.Value
?当db引擎在
UPDATE
语句文本中看到
which_SID
时,它将
which_SID
解释为参数(因为它既不是函数名,也不是表中字段名)。因此,从人类的角度来说,您所询问的行的意思是“使用
Forms!Sales.Form.sSID中的值作为名为
的参数的值,该参数的值是
”哦,我明白了。谢谢。参数查询与SQL Server无关(可能与存储过程混淆了)。这是一种防止SQL注入的通用设计模式。看见可以与DAO或ADODB一起使用这是正确的,但他正在使用DoCmd.RunSQLSo查询访问表,为什么不建议使用
DAO.Execute
?大多数情况下,
DoCmd
的使用都很难看,因为有更好的选项。参数查询与SQL Server无关(可能与存储过程混淆了)。这是一种防止SQL注入的通用设计模式。看见可以与DAO或ADODB一起使用这是正确的,但他正在使用DoCmd.RunSQLSo查询访问表,为什么不建议使用
DAO.Execute
?大多数情况下,
DoCmd
的使用都很糟糕,因为有更好的选择。