首页 > 解决方案 > 如何在 UPDATE 命令的 WHERE 子句中使用三个条件更新单个记录?

问题描述

我使用 Visual Basic 2015 作为前端,使用 Access 数据库作为后端。我想在以下三个基础上更新表中的单个记录:

在哪里

Sap_No = TxtSap_No AND

MNT (i. e. Month) = CmbMonth.Text (i. e. ComboBox Text) AND

YR (i.e. Year) = CmbYear.Text (i. e. ComboBox Text)

我的更新命令如下:

尝试

LvMasterCmd.CommandText = "UPDATE LeaveMaster SET  Sap_No= @Sap_No, From_Date= @From_Date, To_Date= @To_Date, LeaveType= @LeaveType, Days= @Days, LeaveStatus= @LeaveStatus , MNT = @MNT , YR = @YR WHERE Sap_No=  " & CInt(TxtSapID.Text) & " AND MNT=  " & MN & " ;"

LvMasterCmd.Parameters.AddWithValue("@Sap_No", TxtSapID.Text)

LvMasterCmd.Parameters.AddWithValue("@From_Date", DtpFrom.Value)
LvMasterCmd.Parameters.AddWithValue("@To_Date", DtpTo.Value)

LvMasterCmd.Parameters.AddWithValue("@LeaveType", LT)
LvMasterCmd.Parameters.AddWithValue("@Days", LblDays.Text)

LvMasterCmd.Parameters.AddWithValue("@MNT", MN)
LvMasterCmd.Parameters.AddWithValue("@YR", YRR)

LvMasterCmd.Parameters.AddWithValue("@LeaveStatus", "Y")

LvMasterReader.Close()


LvMasterCmd.ExecuteNonQuery()
LvMasterCmd.Parameters.Clear()
Exit Sub
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

但是是节目

一个或多个标准表达式没有价值

这段代码有什么问题以及如何纠正它?请帮忙。

标签: c#visual-studio-2015

解决方案


如果条件中的任何值无效,您将无法更新任何列...因此您应该确保这些值存在于数据库中,然后尝试这种格式

Try
 LvMasterCmd.Parameters.AddWithValue("@Sap_No", TxtSapID.Text)
 LvMasterCmd.Parameters.AddWithValue("@From_Date", DtpFrom.Value)
 LvMasterCmd.Parameters.AddWithValue("@To_Date", DtpTo.Value)
 LvMasterCmd.Parameters.AddWithValue("@LeaveType", LT)
 LvMasterCmd.Parameters.AddWithValue("@Days", LblDays.Text)
 LvMasterCmd.Parameters.AddWithValue("@MNT", MN)
 LvMasterCmd.Parameters.AddWithValue("@YR", YRR)
 LvMasterCmd.Parameters.AddWithValue("@LeaveStatus", "Y")
 LvMasterCmd.CommandText = "UPDATE LeaveMaster SET Sap_No= @Sap_No, From_Date= @From_Date, To_Date= @To_Date, LeaveType= @LeaveType, Days= @Days, LeaveStatus= @LeaveStatus , MNT = @MNT , YR = @YR WHERE Sap_No = " & CInt(TxtSapID.Text) & " AND MNT = '" & MN & "'"
 LvMasterReader.Close()
 LvMasterCmd.ExecuteNonQuery()
 LvMasterCmd.Parameters.Clear()
 Exit Sub
 Catch ex As Exception
 MessageBox.Show(ex.Message)
End Try

推荐阅读