以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 这个SQL语句为什么不执行? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=9880) |
||||
-- 作者:blackzhu -- 发布时间:2011/5/12 7:37:00 -- 这个SQL语句为什么不执行? 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匹配的数据全部修改,但是只要加上序号就不动了.
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/5/12 7:52:00 -- 呵呵,先提一个小问题,不是什么时候都要用ExecuteReader的,SQLCommand有好几个方法,要区分以下。 另在执行前,先Output.Show(cmd1.CommandText) 看看合成的Update语句是什么,特别是合成的条件。 最好复制条件,在SQl执行窗口执行:
Select * From {订单明细} From 你合成的条件
看看是否有符合条件的行。
|
||||
-- 作者:blackzhu -- 发布时间:2011/5/12 7:56:00 -- 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 这个还是照执行,没有判断后台有没有同样的数据?如有就不执行.
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/5/12 8:08:00 -- 呵呵,Update会判断Where后面的条件的,如果有符合条件条件的行,一定会执行,这点不用怀疑。 你判断没有执行的依据是load后口岸的值没有变化,说不定新旧的值本来就一样呢?
|
||||
-- 作者:blackzhu -- 发布时间:2011/5/12 9:13:00 -- 这个没有.我发上来测试一下:两个窗口,一个项目列表,一个是订单明细.
|