以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]解决生成重复数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=78724) |
||||
-- 作者:liuyixin662 -- 发布时间:2015/12/15 18:51:00 -- [求助]解决生成重复数据 老师你好,麻烦修改一下如下代码. 以下代码反馈如下: 1. 不修改”入库日期”时,修改其他列内容<应付款采购主表>与<应付款采购明细表>能正常生成不重复数据.(正确) 2. 当修改”入库日期”时原有的”入库单号”已变化(其他列内容不变), 原有的”入库单号”及相应的内容应清除,但<应付款采购主表>与<应付款采购明细表>会生成重复数据,原有的”入库单号”未被清除.(不正确) 材料入库主表DataColChanged事件 If e.DataCol.Name = "入库日期" Then If e.DataRow.IsNull("入库日期") Then e.DataRow("入库单号") = Nothing Else Dim d As Date = e.DataRow("入库日期") Dim y As Integer = d.Year Dim m As Integer = d.Month Dim Days As Integer = Date.DaysInMonth(y,m) Dim fd As Date = New Date(y,m,1) \'获得该月的第一天 Dim ld As Date = New Date(y,m,Days) \'获得该月的最后一天 Dim bh As String = Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月. If e.DataRow("入库单号").StartsWith(bh) = False \'如果编号的前6位不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(入库单号)","入库日期 >= #" & fd & "# And 入库日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该月的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(7,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("入库单号") = bh & "-" & Format(idx,"000") End If End If End If If e.DataCol.Name = "供应商名称" Then \' Dim dr As DataRow dr = DataTables("供应商信息表").Find("供应商名称 = \'" & e.DataRow("供应商名称") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("供应商编号")= dr("供应商编号") End If End If 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("仓库名称") dr("入库日期") = e.DataRow("入库日期") dr("录入人") = e.DataRow("录入人") dr("入库类型") = e.DataRow("入库类型") Else dr("入库单号") = e.NewValue 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 Select Case e.DataCol.Name Case "审核人","审核日期","供应商名称","供应商编号","入库类型","仓库名称","备注","入库日期" Dim Filter As String = "[入库单号] = \'" & e.DataRow("入库单号") & "\'" Dim nm As String = e.DataCol.Name DataTables("材料入库明细表").ReplaceFor(nm, e.DataRow(nm), Filter) End Select 材料入库明细表DataColChanged事件 Select Case e.DataCol.name Case "入库单号" Dim bh As String = e.DataRow("入库单号") Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(入库明细号)","入库明细号 like \'" & bh & "-%\' and [_Identify] <> " & e.DataRow("_Identify")) If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(bh.length+1)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("入库明细号") = bh & Format(idx,"-000") Dim dr As DataRow = DataTables("材料入库明细表").Find("入库明细号 = \'" & e.NewValue & "\'") If dr Is Nothing Then dr = DataTables("应付款采购明细表").AddNew() dr("材料_大类") = e.DataRow("材料_大类") dr("材料_中类") = e.DataRow("材料_中类") dr("材料名称") = e.DataRow("材料名称") dr("规格型号") = e.DataRow("规格型号") dr("计量单位") = e.DataRow("计量单位") dr("数量") = e.DataRow("数量") dr("含税单价") = e.DataRow("含税单价") dr("材料编号") = e.DataRow("材料编号") dr("采购订单明细号") = e.DataRow("采购订单明细号") dr("入库单号") = e.DataRow("入库单号") dr("税率") = e.DataRow("税率") dr("入库明细号") = e.DataRow("入库明细号") dr("送货单号码") = e.DataRow("送货单号码") dr("供应商名称") = e.DataRow("供应商名称") dr("录入日期") = e.DataRow("入库日期") dr("仓库名称") = e.DataRow("仓库名称") dr("入库类型") = e.DataRow("入库类型") dr("供应商编号") = e.DataRow("供应商编号") dr("录入人") = e.DataRow("录入人") dr("含税金额调整") = e.DataRow("含税金额调整") dr("不含税金额") = e.DataRow("不含税金额") dr("不含税单价") = e.DataRow("不含税单价") dr("含税金额") = e.DataRow("含税金额") Else dr("入库明细号") = e.OldValue 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 |
||||
-- 作者:大红袍 -- 发布时间:2015/12/15 19:57:00 -- Dim dr As DataRow = DataTables("应付款采购主表").Find("入库单号 = \'" & e.OldValue & "\'") If dr Is Nothing Then ----------------- Dim dr As DataRow = DataTables("应付款采购明细表").Find("入库明细号 = \'" & e.NewValue & "\'") If dr Is Nothing Then dr = DataTables("应付款采购明细表").AddNew
|
||||
-- 作者:大红袍 -- 发布时间:2015/12/15 19:57:00 -- 不会做就上传具体例子。 |
||||
-- 作者:liuyixin662 -- 发布时间:2015/12/15 22:53:00 --
|
||||
-- 作者:大红袍 -- 发布时间:2015/12/16 0:38:00 --
|
||||
-- 作者:liuyixin662 -- 发布时间:2015/12/16 12:36:00 -- 老师你好,我试了一下还不行,截图给你,麻烦你了. |
||||
-- 作者:liuyixin662 -- 发布时间:2015/12/16 12:37:00 -- 此主题相关图片如下:入库日期未修改前(正常).png |
||||
-- 作者:liuyixin662 -- 发布时间:2015/12/16 12:37:00 -- 此主题相关图片如下:入库日期(修改为1月16日明细表原来行未能删除).png |
||||
-- 作者:liuyixin662 -- 发布时间:2015/12/16 12:37:00 -- 此主题相关图片如下:入库日期(修改为2月16日,原来的2个未删除).png |
||||
-- 作者:liuyixin662 -- 发布时间:2015/12/16 12:42:00 -- 应付款采购主表生成的数据正常 |