以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  有关主从表关联删除的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=29967)

--  作者:魔鬼之神
--  发布时间:2013/3/18 10:48:00
--  有关主从表关联删除的问题

我在关联表里已设置同步删除关联行,为什么删除主表后,我在数据库里查还有明细记录存呢?


--  作者:狐狸爸爸
--  发布时间:2013/3/18 11:50:00
--  

也许主表和明细的数据,没有同步加载。

例如加载了订单,但是这个订单的明细没有加载,那么对应的明细就不会自动删除了。

可以在订单表DataRowDeleteing再加上一点代码:

 

Dim cmd As New SqlCommand
cmd.Connection Name = "数据源名称"
cmd.CommandText = "Delete From {明细表的名称} Where 订单编号 = \'" & e.DataRow("订单编号") & "\'"
cmd.ExecuteNonQuery

 

这样没有加载的订单明细,也会被删除的。


--  作者:逆行舟
--  发布时间:2013/9/4 10:19:00
--  

我了一下狐狸爸爸的方法

跳出一个框
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20130904101525.jpg
图片点击可在新窗口打开查看

不知道是错在哪,数据库是access的


--  作者:狐狸爸爸
--  发布时间:2013/9/4 10:30:00
--  

ConnectionName

 

你多了一个空格


--  作者:逆行舟
--  发布时间:2013/9/4 10:52:00
--  

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dg.mdb;Persist Security Info=False

数据源我是这么连的可以

但是写在datarowdeleting里的的代码,执行的时候说

不存在名为"dg.mdb"的数据源

 


--  作者:Bin
--  发布时间:2013/9/4 10:54:00
--  
这个填写的是你添加数据源命名的名称,  是这个名称  http://www.foxtable.com/help/topics/1822.htm
--  作者:逆行舟
--  发布时间:2013/9/4 11:20:00
--  
Dim cmd As New SqlCommand
cmd.C
cmd.CommandText = "Delete From cpcymx Where ghl = \'" & e.DataRow("id") & "\'"
cmd.ExecuteNonQuery

 

 

cpcymx表中记录有好几条的,要用FOR语句了吧,bei不出来了,求救


--  作者:Bin
--  发布时间:2013/9/4 11:59:00
--  
不会啊,条件删除何须FOR循环.

实在不会就上例子吧.

--  作者:逆行舟
--  发布时间:2013/9/4 12:50:00
--  

解决了,写在beforedeletddatrow 里面了

If e.DataRow.GetChildRows("cpcymx").Count > 0 Then
    Dim s As String = "此票报关存在出运商品明细, 是否确定要删除此报关信息及其商品明细?"
    If MessageBox.Show(s,"提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.No
        e.Cancel= True
    End If
End If

 

我老想着,表里有好几条数据,要循环起来挨个删,读取也是一样,现在还有九头牛拉不回来的架式,这个观念得改过来