以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]帮忙找个可行的方法 谢谢  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=42500)

--  作者:jiskin
--  发布时间:2013/11/13 16:57:00
--  [求助]帮忙找个可行的方法 谢谢
Dim dt As DataTable
Dim cmd As new SQLCommand
cmd.ConnectionName
cmd.CommandText = "select * from {Request_Purchase}"
dt = cmd.ExecuteReader(True)
For Each r As Row In Tables("Purchase Orders_Order_Add").Rows
    For Each dr As DataRow In dt.DataRows
        If r("Material") = dr("Material") Then
            dr.Delete()
            dt.Save
        End If
    Next
Next

我想直接删除另外一个表中的匹配项,但领导说不能在遍历中删除集合成员
我想不到更好的方法了,求帮忙想想啊 大哥

--  作者:狐狸爸爸
--  发布时间:2013/11/13 17:02:00
--  

临时表删除行出错,在改进之前,先用sql语句删除吧,另外你这个代码临时表只用两列,没有必要加载所有列的:

 

Dim dt As DataTable
Dim cmd As new SQLCommand
Dim cmd1 As new SqlCommand
cmd.Connection Name = "xxx"
cmd1.Connection Name = "xxx"
cmd.CommandText = "select [_Identify],Material from {Request_Purchase}"
dt = cmd.ExecuteReader(True)
For Each r As Row In Tables("Purchase Orders_Order_Add").Rows
    For Each dr As DataRow In dt.DataRows
        If r("Material") = dr("Material") Then
            cmd1.commandtext = "delete from {Request_Purchase} where [_Identify] = " & dr("_Identify")
            cmd1.ExecuteNonQuery
        End If
    Next
Next


--  作者:Bin
--  发布时间:2013/11/13 17:02:00
--  
"delete FROM {Request_Purchase} WHERE Material =\'" dr("Material") "\'"
--  作者:jiskin
--  发布时间:2013/11/13 19:28:00
--  
OK