以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请帮助解决一个问题?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=43003)

--  作者:lyfxybc
--  发布时间:2013/11/27 22:44:00
--  请帮助解决一个问题?
请帮助解决一个问题?

假设有一个产品表和一个库存表,两个表都有产品编号产品名称、数量三列,但是没有建立关联,我们希望:

1、在产品表增加一个产品,库存表对应也增加此产品。如果库存表有和产品表相同的产品编号  产品名称,不再增加记录。
2、在产品表继续添加产品,库存表中的数量自动累计。



图片点击可在新窗口打开查看此主题相关图片如下:305.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:306.jpg
图片点击可在新窗口打开查看

下列代码如何修改

将产品表的DataColChanged事件代码设置为:

Select Case e.DataCol.name
    Case "产品编号"
        Dim dr As DataRow = DataTables("库存表").Find("产品编号 = \'" & e.OldValue & "\'")
       
If dr Is Nothing Then
            dr = DataTables(
"
库存表").AddNew()
            dr(
"
产品编号") = e.DataRow("产品编号")
            dr(
"
产品名称") = e.DataRow("产品名称")
            dr(
"
数量") = e.DataRow("数量")
        Else
            dr(
"
产品编号") = e.DataRow("产品编号")
        End If
    Case
"
产品名称"
        Dim dr As DataRow = DataTables(
"
库存表").Find("产品编号 = \'" & e.DataRow("产品编号") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
       
End If
End
Select


--  作者:有点甜
--  发布时间:2013/11/27 23:25:00
--  
 代码如下

If e.DataRow.Isnull("产品编号") = False AndAlso e.DataRow.Isnull("产品名称") = False Then
    Dim filter As String = "产品编号 = \'" & e.DataRow("产品编号") & "\' and 产品名称 = \'" & e.DataRow("产品名称") & "\'"
    Dim fdr As DataRow = DataTables("库存表").Find(filter)
    If fdr Is Nothing Then
        fdr = DataTables("库存表").AddNew()
    End If
    fdr("产品编号") = e.DataRow("产品编号")
    fdr("产品名称") = e.DataRow("产品名称")
    fdr("数量") = e.DataTable.Compute("sum(数量)", filter)
End If

--  作者:lyfxybc
--  发布时间:2013/11/29 11:55:00
--  
谢谢
--  作者:lyfxybc
--  发布时间:2013/11/29 12:10:00
--  
再次感谢有点甜老师