以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  为什么这个sql语句删除不了数据?(OK)  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=42361)

--  作者:zpx_2012
--  发布时间:2013/11/9 11:13:00
--  为什么这个sql语句删除不了数据?(OK)
sql server 的外部数据源,按钮代码如下:

Dim Date_S As WinForm.DateTimePicker = e.Form.Controls("date_E")
Dim Date_E As WinForm.DateTimePicker = e.Form.Controls("date_S")
Dim cmd As New SQLCommand
cmd.ConnectionName = Mydata
If Date_S.Value IsNot Nothing AndAlso Date_S.Value IsNot Nothing Then
    Dim count As Integer
    cmd.CommandText = "DELETE FROM {Log} WHERE 修改时间 >= \'" & Date_S.value  & "\' And 修改时间 <= \'" & Date_E.value & "\'"
    count = cmd.ExecuteNonQuery()
    Messagebox.Show( "总共删除" & Count & "行!")
End If
里面有数据,但每次执行都是显示删除了0行,也没什么提示。

控件中的日期显示是 2013-10-22 
而sql数据库表中的日期是2013/11/8 14:48:03

是不是这两种格式不能比较?
谢谢!
[此贴子已经被作者于2013-11-9 11:53:49编辑过]

--  作者:longtechwj
--  发布时间:2013/11/9 11:15:00
--  
把表前面的花括号去掉
--  作者:Bin
--  发布时间:2013/11/9 11:18:00
--  
可以比较,会默认当作 2013-10-22 00:00:00 

你先利用Select SQL语句查询使用相同的条件,看看是否可以查询出要删除的数据, 如果可以肯定可以正常删除.

如果没有查询到数据,说明就没有符合条件的数据.

--  作者:longtechwj
--  发布时间:2013/11/9 11:25:00
--  
用剪切板吧,我如果SQL有错误在代码执行的时候将
SQL语句放到剪切板里面然后到查询分析器里面一看
就明白错在哪里了
ClipBoard.SetText("Text")
不过我这种方法,测试的人可能会有点那个,但是
调好之后记得屏蔽掉,要不然人家剪切板里面
出来的是一串串长的SQL语句

--  作者:zpx_2012
--  发布时间:2013/11/9 11:46:00
--  
谢谢各位,不好意思,这两个没注意颠倒了。
Dim Date_S As WinForm.DateTimePicker = e.Form.Controls("date_E")
Dim Date_E As WinForm.DateTimePicker = e.Form.Controls("date_S")

但有个奇怪的问题,如果
修改时间 <= ‘2013-11-08’
就查不到2013-11-08那天的数据,必须要输入2013-11-09才能查到,难道<=后面这个=号不起作用? 



--  作者:Bin
--  发布时间:2013/11/9 11:48:00
--  
不是,原因还是你之前说得那个,参考我3楼说得,你自然明白了.

 <= ‘2013-11-08’
相当于
 <= ‘2013-11-08 00:00:00’

--  作者:longtechwj
--  发布时间:2013/11/9 11:49:00
--  
数据格式的问题
--  作者:zpx_2012
--  发布时间:2013/11/9 11:52:00
--  
明白了,谢谢两位!
--  作者:longtechwj
--  发布时间:2013/11/9 11:53:00
--  
SELECT * FROM prwird WHERE CONVERT(VARCHAR(10),Tran_date,120) BETWEEN \'2013-11-08\' AND \'2013-11-09\'
"DELETE FROM Log WHERE convert(varchar(10),修改时间,120) >= \'" & Date_S.value  & "\' And convert(varchar(10),修改时间,120) <= \'" & Date_E.value & "\'"
[此贴子已经被作者于2013-11-9 11:54:55编辑过]