Dim d As String = e.Form.Controls("制单ID").Value
Dim t As String = e.Form.Controls("ID").Value
Dim d1 As String = e.Form.Controls("口岸").Value
If d1<>"" Then
Dim dt As DataTable
Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText = "Update {订单明细} set 口岸='" & d1 & "' Where 制单ID = '" & d & "'and序号='" & T & "'"
dt = cmd1.ExecuteReader()
DataTables ("订单明细_table1").Load()
End If
老大帮看看,这一条语句为什么不执行?我把序号给删掉会把所有制单ID匹配的数据全部修改,但是只要加上序号就不动了.
呵呵,先提一个小问题,不是什么时候都要用ExecuteReader的,SQLCommand有好几个方法,要区分以下。
另在执行前,先Output.Show(cmd1.CommandText)
看看合成的Update语句是什么,特别是合成的条件。
最好复制条件,在SQl执行窗口执行:
Select * From {订单明细} From 你合成的条件
看看是否有符合条件的行。
Dim d As String = e.Form.Controls("ID").Value
Dim d1 As String = e.Form.Controls("制单ID").Value
Dim dt As DataTable
Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText = "SELECT * From {订单明细} Where [制单ID]='" & d1 & "'And [序号]='" & d & "'"
dt = cmd1.ExecuteReader()
If dt.DataRows.Count > 0 Then
Messagebox.show("序号已经存在,不能重覆!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
e.Cancel=True
End if
这个还是照执行,没有判断后台有没有同样的数据?如有就不执行.
呵呵,Update会判断Where后面的条件的,如果有符合条件条件的行,一定会执行,这点不用怀疑。
你判断没有执行的依据是load后口岸的值没有变化,说不定新旧的值本来就一样呢?
这个没有.我发上来测试一下:两个窗口,一个项目列表,一个是订单明细.