以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助:表事件中代码错误 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=72452) |
-- 作者:yancheng -- 发布时间:2015/7/30 14:06:00 -- 求助:表事件中代码错误 BeforeDeleteDataRow 表事件中写入: Dim drs As List (of DataRow) = DataTables("采购进货").Select("定额编码 = \'" & e.DataRow("定额编码") & "\' ") If drs.Count > 0 Then Dim result As DialogResult = MessageBox.Show("此材料已被采购进货录入,是否删除对应采购进货明细后再删除本条材料?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) If result = dialogresult.no Then e.Cancel = True Else e.Cancel = True For Each dr As DataRow In drs Tables("采购订单").Filter = "\'" & dr.GetParentRows & "\'" Tables("采购订单").Sort = "进货日期 DESC" MainTable =Tables( "采购订单") Forms("采购订单").Open Next End If End If 错误提示: Tables("采购订单").Filter = "\'" & dr.GetParentRows & "\'" 错了。 |
-- 作者:czy -- 发布时间:2015/7/30 14:43:00 -- Dim drs As List (of DataRow) = DataTables("采购进货").Select("定额编码 = \'" & e.DataRow("定额编码") & "\' ")
|
-- 作者:yancheng -- 发布时间:2015/7/30 17:00:00 -- 采购订单 中没有 :定额编码,列。 只有:采购进货(与采购订单关联)有,定额编码,列。
|
-- 作者:狐狸爸爸 -- 发布时间:2015/7/30 17:04:00 -- 你下面这行代码的意思是什么? Tables("采购订单").Filter = "\'" & dr.GetParentRows & "\'"
整个代码的设计思路和目的是什么? |
-- 作者:czy -- 发布时间:2015/7/30 17:21:00 -- 以下是引用yancheng在2015/7/30 17:00:00的发言:
采购订单 中没有 :定额编码,列。 只有:采购进货(与采购订单关联)有,定额编码,列。
当前表与采购订单的关联列是什么? |
-- 作者:yancheng -- 发布时间:2015/7/30 19:04:00 -- Tables("采购订单").Filter = "\'" & dr.GetParentRows & "\'" 是这样的,采购订单,只是订单;采购进货,就是订单明细。两个表用:订单编号,关联。 材料,中的一条材料如果要删除,我找出:采购进货(也就是订单明细)有没有输入:相同:定额编号,的明细。 采购进货,有这个明细,就不能在:材料,表中删除,要先删除:采购进货,中输入的明细。再删除这一条材料。 因为,我没有在窗口中显示单独的:采购进货,表,我想在:采购订单,表中,找出:含有这些:采购进货(明细)的订单。
|
-- 作者:yancheng -- 发布时间:2015/7/30 19:07:00 -- 当前表是:材料,表,与采购订单,与采购进货(即订单明细)无关联。 采购订单,与采购进货,有关联。
|
-- 作者:yancheng -- 发布时间:2015/7/30 19:19:00 -- 这个代码,错在哪里?
Tables("采购订单").Filter = "dr.GetParentRows" 提示错误。 BeforeDeleteDataRow 表事件中: 全部代码: Dim drs As List (of DataRow) = DataTables("采购进货").Select("定额编码 = \'" & e.DataRow("定额编码") & "\' ") If drs.Count > 0 Then Dim result As DialogResult = MessageBox.Show("此材料已被采购进货录入,是否删除对应采购进货明细后再删除本条材料?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) If result = dialogresult.no Then e.Cancel = True Else e.Cancel = True For Each dr As DataRow In drs Tables("采购订单").Filter = "dr.GetParentRows" Tables("采购订单").Sort = "进货日期 DESC" MainTable =Tables( "采购订单") Forms("采购订单").Open Next End If End If 情况是这样的,我有:材料,采购订单,采购进货(即:订单明细) 采购订单,与采购进货,通过:定额编码,关联表; 材料,表与其它无关联。能过:定额编码,用表代码自动输入到其它表的。 我现在想,当材料表删除一条材料时,查找:采购进货有没有已经输入这条材料。如果有,则把含量有这些采购进货明细的采购订单,筛选出来。显示给操作者。 |
-- 作者:狐狸爸爸 -- 发布时间:2015/7/30 20:46:00 -- 那么二楼c版的代码没有错。 既然你都说了,两个表哦他能够过定额编码建立的关联,当然两个表都会有定额这一列。
实际上:
Tables("采购订单").Filter = "定额编码 = \'" & e.DataRow("定额编码") & "\'"
可以理解为:
Tables("子表").Filter = "子表关联列 = \'" & e.DataRow("父表关联列") & "\'" |
-- 作者:yancheng -- 发布时间:2015/7/30 22:29:00 -- For Each dr As DataRow In drs Tables("采购订单").Filter = " 进货批次 = \'" & dr("进货批次") & "\'" Next 为什么,这条代码,只找出一行呢?(符合条件的行,不止一行) 全部代码是: Dim drs As List (of DataRow) = DataTables("采购进货").Select(" 定额编码 = \'" & e.DataRow("定额编码") & "\' ") If drs.Count > 0 Then Dim result As DialogResult = MessageBox.Show("此材料已被采购进货录入,是否删除对应采购进货明细后再删除本条材料?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) If result = dialogresult.no Then e.Cancel = True Else e.Cancel = True Forms("采购订单").show For Each dr As DataRow In drs Tables("采购订单").Filter = " 进货批次 = \'" & dr("进货批次") & "\'" Next \'Tables("采购订单").Sort = "进货日期 DESC" End If End If |