以文本方式查看主题

-  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
--  
这个没有.我发上来测试一下:两个窗口,一个项目列表,一个是订单明细.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:服装系统.rar