Foxtable(狐表)用户栏目专家坐堂 → [求助]解决生成重复数据


  共有2639人关注过本帖树形打印复制链接

主题:[求助]解决生成重复数据

帅哥哟,离线,有人找我吗?
liuyixin662
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:534 积分:4414 威望:0 精华:0 注册:2012/11/28 16:03:00
[求助]解决生成重复数据  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
liuyixin662
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:534 积分:4414 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/15 22:53:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生成表(入库日期修改时会产生重复数据).zip


 回到顶部
帅哥哟,离线,有人找我吗?
liuyixin662
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:534 积分:4414 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/16 12:36:00 [显示全部帖子]

老师你好,我试了一下还不行,截图给你,麻烦你了.


 回到顶部
帅哥哟,离线,有人找我吗?
liuyixin662
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:534 积分:4414 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/16 12:37:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:入库日期未修改前(正常).png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
liuyixin662
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:534 积分:4414 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/16 12:37:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:入库日期(修改为1月16日明细表原来行未能删除).png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
liuyixin662
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:534 积分:4414 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/16 12:37:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:入库日期(修改为2月16日,原来的2个未删除).png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
liuyixin662
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:534 积分:4414 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/16 12:42:00 [显示全部帖子]

应付款采购主表生成的数据正常

 回到顶部
帅哥哟,离线,有人找我吗?
liuyixin662
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:534 积分:4414 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/16 13:40:00 [显示全部帖子]

入库日期修改后,原有的单据应修改为新的日期单据,而原有的并未清除,新修改的能正常生成


 回到顶部
帅哥哟,离线,有人找我吗?
liuyixin662
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:534 积分:4414 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/16 15:00:00 [显示全部帖子]

谢谢红袍老师,按老师指点修改一切OK


 回到顶部
帅哥哟,离线,有人找我吗?
liuyixin662
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:534 积分:4414 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/16 15:47:00 [显示全部帖子]

要加上这个代码才行DataTables("应付款采购明细表").DeleteFor("入库明细号 = '" & e.OldValue & "'")


 回到顶部
总数 11 1 2 下一页