【问题标题】:Timing Out using UPDATE statement使用 UPDATE 语句超时
【发布时间】:2015-12-24 08:35:11
【问题描述】:
Private Sub DTRTimeOutBTN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DTRTimeOutBTN.Click
        con = New OleDbConnection(cs)
        con.Open()

        Dim cmd As OleDbCommand = New OleDbCommand("UPDATE Worker_Attendance SET Time_Out = @TOut WHERE @TOut = null", con)
        cmd.Parameters.AddWithValue("@TOut", lblTime.Text.ToString)
        cmd.ExecuteNonQuery()
        DTRTimeOutBTN.Enabled = False
        DTRTimeInBTN.Enabled = True
        con.Close()
    End Sub

大家好,谁能帮帮我?当我单击超时按钮时,它应该根据代码存储当前计算机时间,因为 @TOut 为空。但是当点击超时按钮时,数据库中没有任何存储。

【问题讨论】:

  • @Tout 永远不会为空,因为您在一个永远不会返回 null 的字符串值上调用 ToString。另外,@TNull =null 永远不会是真的。发生了与您的查询无关的其他事情。

标签: sql vba sql-update


【解决方案1】:

我不知道您的超时问题,但对于您的查询,您需要使用 IS NULL 来检查该值是否为空。

UPDATE Worker_Attendance 
SET Time_Out = @TOut 
WHERE Time_Out IS NULL 

【讨论】:

  • 现在超时了。但问题是当我单击 Time Out 按钮时,整个 Time_Out 列正在更新等于计算机的当前时间。
  • 您要存储新记录吗?目前您正在更新 Time_Out 列为 NULL所有 记录(至少应该与我上面的查询有关)。
  • 如何防止所有记录在 Time_Out 列中更新?
  • 这是我的代码,我无法更新 time_out 列“UPDATE Worker_Attendance SET Time_Out = atTOut WHERE atTOut IS NULL”
  • 现在我看它不应该是WHERE Time_Out IS NULL 所以它检查的是字段而不是NULL 的参数吗?我更新了我的答案。当@TOut 为 NULL 时,为什么要将 Time_Out 设置为 NULL?
猜你喜欢
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多