以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  BeforeDeleteDataRow事件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73114)

--  作者:阿福
--  发布时间:2015/8/12 17:21:00
--  BeforeDeleteDataRow事件
在DataTables("母猪分娩断奶")BeforeDeleteDataRow事件设置代码
Dim dr As DataRow = DataTables("母猪转产房").sqlfind("[创建时间]=" & e.DataRow("创建时间") )
MessageBox.Show(1)
If dr Is Nothing Then
MessageBox.Show(2)
e.Cancel = True
MessageBox.Show(3)
Else
MessageBox.Show(3)
DataTables("母猪转产房").SQLDeleteFor("[创建时间]=" & dr("创建时间") )
MessageBox.Show(4)
DataTables("母猪转产房").RemoveFor("[创建时间]=" & dr("创建时间") )
MessageBox.Show(5)
End If
MessageBox.Show(6)

代码执行了1,2,3,6。
请问老师,明明DataTables("母猪转产房")里有相同的“创建时间”行都是“2015/8/12 16:47:56”,却代码说找不到,为什么?
我看了一下SQL server里的“创建时间”行显示“2015/8/12 16:47:56:030”和“2015/8/12 16:47:56:037”,是不是这两个时间不同导致找不到datarow?

--  作者:大红袍
--  发布时间:2015/8/12 17:29:00
--  

条件这样写

 

Dim dr As DataRow = DataTables("母猪转产房").sqlfind("[创建时间]>=\'" & e.DataRow("创建时间") & "\' and [创建时间]<\'" & cDate(e.DataRow("创建时间")).AddSeconds(1) & "\'")


--  作者:阿福
--  发布时间:2015/8/12 17:47:00
--  
大红袍老师,还有问题。

Dim dr As DataRow = DataTables("母猪转产房").sqlfind("[创建时间]>=\'" & e.DataRow("创建时间") & "\' and [创建时间]<\'" & cDate(e.DataRow("创建时间")).AddSeconds(1) & "\'")
MessageBox.Show(1)
If dr Is Nothing Then
MessageBox.Show(2)
e.Cancel = True
MessageBox.Show(3)
Else
MessageBox.Show(4)
DataTables("母猪转产房").SQLDeleteFor("[创建时间]=" & dr("创建时间") )
MessageBox.Show(5)
DataTables("母猪转产房").RemoveFor("[创建时间]=" & dr("创建时间") )
MessageBox.Show(6)
End If
MessageBox.Show(7)

执行了1,4,5,6,7
在执行4时出现\'17\' 附近有语法错误。
在执行5时出现语法错误:“17”运算符后缺少操作数。。

最后也没有同步删除行,老师帮我改一下代码!

[此贴子已经被作者于2015/8/12 17:50:13编辑过]

--  作者:大红袍
--  发布时间:2015/8/12 17:51:00
--  

Dim filter As String = "[创建时间]>=\'" & e.DataRow("创建时间") & "\' and [创建时间]<\'" & cDate(e.DataRow("创建时间")).AddSeconds(1) & "\'"
Dim filter2 As String = "[创建时间]=#" & e.DataRow("创建时间") & "#"
Dim dr As DataRow = DataTables("母猪转产房").sqlfind(filter)
MessageBox.Show(1)
If dr Is Nothing Then
    MessageBox.Show(2)
    e.Cancel = True
    MessageBox.Show(3)
Else
    MessageBox.Show(4)
    DataTables("母猪转产房").SQLDeleteFor(filter )
    MessageBox.Show(5)
    DataTables("母猪转产房").RemoveFor(filter2 )
    MessageBox.Show(6)
End If
MessageBox.Show(7)

[此贴子已经被作者于2015/8/12 17:51:46编辑过]

--  作者:阿福
--  发布时间:2015/8/12 18:03:00
--  
大红袍老师,还有问题.SQL server里已经彻底删除了数据,然而DataTables("母猪转产房")表里还是没有移除数据
--  作者:大红袍
--  发布时间:2015/8/12 18:07:00
--  

Dim filter As String = "[创建时间]>=\'" & e.DataRow("创建时间") & "\' and [创建时间]<\'" & cDate(e.DataRow("创建时间")).AddSeconds(1) & "\'"
Dim filter2 As String = "[创建时间]>=#" & e.DataRow("创建时间") & "#
 and [创建时间]<#" & cDate(e.DataRow("创建时间")).AddSeconds(1) & "#"


--  作者:阿福
--  发布时间:2015/8/12 18:12:00
--  
终于可以了,谢谢大红袍老师!!!图片点击可在新窗口打开查看