Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Sql 使用用户输入的日期从表单更新表_Sql_Ms Access - Fatal编程技术网

Sql 使用用户输入的日期从表单更新表

Sql 使用用户输入的日期从表单更新表,sql,ms-access,Sql,Ms Access,我有一个默认值为今天日期的文本框,用户也可以根据需要更改该文本框。日期是收到项目的日期,我需要使用此日期更新采购订单表。我有一个按钮,用db.Execute提交这些更改,下面是代码: Dim db As Database Dim w As String Set db = CurrentDb w = "UPDATE PO SET [Received] = " & Text20.Value & " WHERE [PONumber] = " & Text14.Value &am

我有一个默认值为今天日期的文本框,用户也可以根据需要更改该文本框。日期是收到项目的日期,我需要使用此日期更新采购订单表。我有一个按钮,用db.Execute提交这些更改,下面是代码:

Dim db As Database
Dim w As String
Set db = CurrentDb
w = "UPDATE PO SET [Received] = " & Text20.Value & " WHERE [PONumber] = " & Text14.Value & " AND [LineItem] = " & Text18.Value & ";"
db.Execute w
db.Close
Text20是带有默认日期的文本框。它上面有一个短日期输入掩码。我的问题是,当我单击按钮时,它会更新表中的[Received]字段,但不是以我希望的方式更新。它没有输入日期,而是将时间设置为上午12:00:50。我MsgBoxed了update语句,它看起来很好,那么是什么导致了这个问题呢?我也尝试过使用CDate函数,但没有效果。

试试这个:

If IsDate(Text20.Value) Then
    w = "UPDATE PO SET [Received] = #" & Format(Text20.Value, "yyyy\/mm\/dd") & "# WHERE [PONumber] = " & Text14.Value & " AND [LineItem] = " & Text18.Value & ";"
Else
    ' Something
End If

您必须将日期格式化为日期。我会移除输入掩码,它们很痛苦,然后将代码更改为

w = "UPDATE PO SET [Received] = #" & Format(Me.Text20,"yyyy/mm/dd") & "# WHERE [PONumber] = " & Me.Text14 & " AND [LineItem] = " & Me.Text18 & ";"

工作很有魅力,谢谢!我能问一下为什么它显示的是时间而不是日期吗?日期存储为日期时间,实际上是十进制数,整数部分是天数,小数部分是时间部分。如果您将2018年7月6日作为一个计算进行评估,您会得到一个非常小的数字,作为一个日期,它将等同于1899年12月31日和访问时间或类似的时间。请仔细阅读以获得良好的解释