以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]代码没有实现想要的效果 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=79739) |
-- 作者:huhu -- 发布时间:2016/1/8 10:14:00 -- [求助]代码没有实现想要的效果 For Each ndr As DataRow In DataTables("扫描配货明细").DataRows Dim ddr3 As DataRow = DataTables("扫描配货明细统计").Find("工单号 = \'" & ndr("工单号") & "\' and 行号 = \'" & ndr("行号") & "\' and 入库单号 = \'" & ndr("入库单号") & "\'") If ddr3 IsNot Nothing Then ddr3("预入库数量") = ddr3("预入库数量") + 1 Else Dim ddr4 As DataRow = DataTables("扫描配货明细统计").AddNew() ddr4("工单号") = ndr("工单号") ddr4("行号") = ndr("行号") ddr4("预入库数量") = 1 ddr4("入库单号") = rkdh.text ddr4("产品态") = ndr("产品态") ddr4("产品名称") = ndr("产品名称") ddr4("物料编码") = ndr("物料编码") ddr4("库位类别") = ndr("库位类别") End If Dim ddr2 As DataRow = DataTables("工单明细").Find("工单号 = \'" & ndr("工单号") & "\' and 行号 = \'" & ndr("行号") & "\' and 入库单号 = \'" & ndr("入库单号") & "\' ") If ddr2 IsNot Nothing Then ddr2("预入库数量") = ddr2("预入库数量") + 1 ddr2("生产结束扫描日期") = Date.now Else Dim ddr1 As DataRow = DataTables("工单明细").AddNew() ddr1("工单号") = ndr("工单号") ddr1("行号") = ndr("行号") ddr1("预入库数量") = 1 ddr1("生产完成日期") = ndr("生产完成日期") ddr1("预入库日期") = ndr("预计入库日期") ddr1("入库单号") = rkdh.text ddr1("产品态") = ndr("产品态") ddr1("产品名称") = ndr("产品名称") ddr1("物料编码") = ndr("物料编码") ddr1("库位类别") = ndr("库位类别") ddr1("生产结束扫描日期") = Date.now End If Next 我想要的是在扫描配货明细表每增加一行。然后在工单明细就进行自动统计,根据工单号,行号,入库单号是否都匹配。在工单明细没有找到,那么直接增加一行。如果找到,预入库数量加一。 现在的效果是都是新增一行。 |
-- 作者:大红袍 -- 发布时间:2016/1/8 10:36:00 -- 只能是你条件有问题,找不到符合的数据。
主要是不是要用sqlfind。弹出你的条件好好看看。 |
-- 作者:huhu -- 发布时间:2016/1/8 11:12:00 -- 弹出看来一下,条件是对的。 发现问题是,首次执行这段代码,那么扫描配货明细表首次增加了4行数据。但因为在工单明细首次没有与条件匹配的数据,所以在工单明细也同样增加了4行数据。
但我想要的应该只增加2行。毕竟这4行数据有匹配的2行。但我现在不知道怎么改。 |
-- 作者:大红袍 -- 发布时间:2016/1/8 11:13:00 -- 做例子发上来。 |
-- 作者:huhu -- 发布时间:2016/1/12 22:05:00 -- 现在才发例子上来,可见最近其他事情有多忙。 麻烦大红袍老师给看看怎么改。多谢。
|
-- 作者:大红袍 -- 发布时间:2016/1/12 22:20:00 -- datacolchanged事件
If e.DataRow.IsNull("工单号") = False AndAlso e.DataRow.IsNull("行号") = False AndAlso e.DataRow.IsNull("入库单号") = False Then |
-- 作者:huhu -- 发布时间:2016/1/12 22:33:00 -- 是哪个的datacolchange?扫描配货明细?e.DataRow.Delete不是已经删掉了么,再用e.datarow应该有问题吧。 |
-- 作者:huhu -- 发布时间:2016/1/12 22:34:00 -- 还有请看一下,窗体的生成入库单按钮的代码,这个是有问题的。 |
-- 作者:大红袍 -- 发布时间:2016/1/12 22:59:00 -- 直接写,没问题啊
DataTables("扫描配货明细统计").DataRows.Clear Next |
-- 作者:huhu -- 发布时间:2016/1/12 23:12:00 -- .NET Framework 版本:2.0.50727.8009 Foxtable 版本:2015.12.22.1 错误所在事件:表,扫描配货明细,DataColChanged 详细错误信息: 调用的目标发生了异常。 此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据
|