以文本方式查看主题

-  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("定额编码") & "\' ")
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
        Tables("采购订单").Filter = "定额编码 = \'" & e.DataRow("定额编码") & "\'"
        Tables("采购订单").Sort = "进货日期 DESC"
        MainTable =Tables( "采购订单")
        Forms("采购订单").Open
    End If
End If

 


--  作者: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