以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 入库处理 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=62032) |
||||
-- 作者:120785713 -- 发布时间:2014/12/24 13:08:00 -- 入库处理 我加入了一个产地就导致了修改产地后计算错误 是哪里错了 代码太长我有点晕 谢谢老师们帮我找一下错误再哪里 Select Case e.DataCol.Name Case "产品编号","入库数量","产地" Dim dr As DataRow Dim dr1 As DataRow \'接收查找库存明细表的查找结果 Dim mr As DataRow = e.DataRow Dim drs As List(of DataRow) dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [产品编号] = \'" & mr("产品编号") & "\' And [产地] = \'" & mr("产地") & "\'", "[_SortKey] Desc") \'找出上一行并给dr dr1 = DataTables("库存余量表").Find("[产品编号] = \'" & mr("产品编号") & "\'And [产地] = \'" & mr("产地") & "\'") If dr Is Nothing Then \'如果没有找到上一行,说明本行就是第一行 mr("累计入库数量") = mr("入库数量") \'当前的累计数量就等于当前的入库数量 dr = mr If dr1 Is Nothing Then \'如果没有找到余量表中相同编号的行 Tables("库存余量表").AddNew() \'库存余量表增加一行 Tables("库存余量表").Current("产品编号") = mr("产品编号") \'增加的行中赋值 Tables("库存余量表").Current("产品名称") = mr("产品名称") Tables("库存余量表").Current("产地") = mr("产地") Tables("库存余量表").Current("入库数量") = mr("累计入库数量") \'余量表入库数量等于当前行的累计数量 Else \'否则 dr1("入库数量") = mr("累计入库数量") \'找到行的入库数量等于当前入库明细表的累计数量 End If \'结束 End If drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [产品编号] = \'" & dr("产品编号") & "\'And [产地] = \'" & mr("产地") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 drs(i)("累计入库数量") = drs(i-1)("累计入库数量") + drs(i)("入库数量") If dr1 IsNot Nothing Then \'如果没有找到余量表中相同编号的行dr1不为空 dr1("入库数量") = drs(i)("累计入库数量") \'找到行的入库数量等于当前入库明细表上一行的累计数量 End If \'结束 Next If e.DataCol.Name = "产品编号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [产品编号] = \'" & e.OldValue & "\'And [产地] = \'" & mr("产地") & "\'", "[_SortKey] Desc") If dr Is Nothing Then dr = e.DataTable.Find("[产品编号] = \'" & e.OldValue & "\'And [产地] = \'" & mr("产地") & "\'", "[_SortKey]") If dr IsNot Nothing Then dr("累计入库数量") = dr("入库数量") If dr1 Is Nothing Then \'如果没有找到余量表中相同编号的行 Tables("库存余量表").AddNew() \'库存余量表增加一行 Tables("库存余量表").Current("产品编号") = mr("产品编号") \'增加的行中赋值 Tables("库存余量表").Current("产品名称") = mr("产品名称") Tables("库存余量表").Current("产地") = mr("产地") Tables("库存余量表").Current("入库数量") = mr("累计入库数量") \'余量表入库数量等于当前行的累计数量 Else \'否则 dr1("入库数量") = dr("累计入库数量") \'找到行的入库数量等于当前入库明细表的累计数量 End If \'结束 End If End If If e.DataCol.Name = "产地" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [产品编号] = \'" & e.OldValue & "\'And [产地] = \'" & mr("产地") & "\'", "[_SortKey] Desc") If dr Is Nothing Then dr = e.DataTable.Find("[产地] = \'" & e.OldValue & "\'And [产品编码] = \'" & mr("产品编号") & "\'", "[_SortKey]") If dr IsNot Nothing Then dr("累计入库数量") = dr("入库数量") If dr1 Is Nothing Then \'如果没有找到余量表中相同编号的行 Tables("库存余量表").AddNew() \'库存余量表增加一行 Tables("库存余量表").Current("产品编号") = mr("产品编号") \'增加的行中赋值 Tables("库存余量表").Current("产品名称") = mr("产品名称") Tables("库存余量表").Current("产地") = mr("产地") Tables("库存余量表").Current("入库数量") = mr("累计入库数量") \'余量表入库数量等于当前行的累计数量 Else \'否则 dr1("入库数量") = dr("累计入库数量") \'找到行的入库数量等于当前入库明细表的累计数量 End If \'结束 End If End If End If If dr IsNot Nothing Then drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [产品编号] = \'" & dr("产品编号") & "\'And [产地] = \'" & mr("产地") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 drs(i)("累计入库数量") = drs(i-1)("累计入库数量") + drs(i)("入库数量") If dr1 Is Nothing Then \'如果没有找到余量表中相同编号的行 Tables("库存余量表").AddNew() \'库存余量表增加一行 Tables("库存余量表").Current("产品编号") = mr("产品编号") \'增加的行中赋值 Tables("库存余量表").Current("产品名称") = mr("产品名称") Tables("库存余量表").Current("产地") = mr("产地") Tables("库存余量表").Current("入库数量") = mr("累计入库数量") \'余量表入库数量等于当前行的累计数量 Else \'否则 dr1("入库数量") = drs(i)("累计入库数量") \'找到行的入库数量等于当前入库明细表的累计数量 End If Next End If End If End Select |
||||
-- 作者:有点甜 -- 发布时间:2014/12/24 14:05:00 -- 例子发上来。 |
||||
-- 作者:120785713 -- 发布时间:2014/12/24 14:33:00 --
修改产品编号是正常的计算 修改产地就麻烦了 |
||||
-- 作者:有点甜 -- 发布时间:2014/12/24 14:40:00 -- If e.DataCol.Name = "产地" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
改成
If e.DataCol.Name = "产地" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then |
||||
-- 作者:120785713 -- 发布时间:2014/12/24 16:16:00 -- 还不对 比如编号输入001 产地 上海 数量 1 然后修改 产地 武汉 库存余量表中会有三条记录 编号 产地 入库数量 001 空 空 001 上海 1 001 武汉 1 在入库明细表中输入编号直接插入了没产地的行 修改产地后没有给原来的行更改新的值 呵呵 这两个问题 我研究好长时间了 麻烦甜老师帮我看看 |
||||
-- 作者:有点甜 -- 发布时间:2014/12/24 17:18:00 -- 汗......
|
||||
-- 作者:120785713 -- 发布时间:2014/12/24 20:15:00 -- 非常感谢甜老师 的耐心指点 什么时候得到武汉来玩玩 让我也见识一下高人的庐山真面目 呵呵 只不过不过我学的进度有点慢 还得麻烦甜老师多指点咯 |
||||
-- 作者:120785713 -- 发布时间:2014/12/26 9:36:00 -- 甜老师这个在外部数据源中为什么会报错 (红色部分的代码)
Dim Key As Decimal |
||||
-- 作者:有点甜 -- 发布时间:2014/12/26 9:37:00 -- 报什么错。 |
||||
-- 作者:120785713 -- 发布时间:2014/12/26 14:41:00 -- 我改动了一下 行了 大概搞懂了 代码的含义了 因为我没见过 这样的删除方法 谢了 |