Foxtable(狐表)用户栏目专家坐堂 → [求助]表事件DataColChanged请教


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

主题:[求助]表事件DataColChanged请教

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


加好友 发短信
等级:幼狐 帖子:196 积分:2156 威望:0 精华:0 注册:2013/5/10 15:59:00
[求助]表事件DataColChanged请教  发帖心情 Post By:2019/8/28 11:16:00 [只看该作者]

各位老师,我在表A里用表事件DataColChanged进行了自动编号及同步表的代码写入,前三行的时候,自动编号和同步信息都正常,但新增到第四行的时候,它会出现这样的提示


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

然后表A的数据就不能同步表B的了,请各位老师帮我查看一下代码没有输错,谢谢!
If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("序号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("日期"),"yyyyMMdd") '取得编号的8位前缀
        If e.DataRow("序号").StartsWith(bh) = False '如果编号的前8位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(序号)","日期 = #" & e.DataRow("日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(9,4)) + 1 '获得最大编号的后四位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("序号") = bh & "-" & Format(idx,"0000")
        End If
    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("数量")
            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
[此贴子已经被作者于2019/8/28 11:16:56编辑过]

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


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/28 11:32:00 [只看该作者]

Select Case e.DataCol.name
    Case "日期" '
if e.OldValue <> nothing
        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("数量")
            dr("员工") = e.DataRow("员工")
            dr("备注") = e.DataRow("备注")
        Else
            dr("日期") = e.DataRow("日期")
        End If
endif
    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
[此贴子已经被作者于2019/8/28 11:32:01编辑过]

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


加好友 发短信
等级:幼狐 帖子:196 积分:2156 威望:0 精华:0 注册:2013/5/10 15:59:00
  发帖心情 Post By:2019/8/28 12:00:00 [只看该作者]

蓝老师,修改过后,发现不能“一车间毛坯流水帐”的数据不能同步到“查询”表里去了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:5-1.zip

麻烦帮我看一下,哪里出错了
[此贴子已经被作者于2019/8/28 12:01:07编辑过]

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


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/28 13:44:00 [只看该作者]

Select Case e.DataCol.Name
    Case "日期"
        If e.DataRow.IsNull("日期") Then
            e.DataRow("序号") = Nothing
        Else
            '
            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("备注")
            Else
                dr("日期") = e.DataRow("日期")
            End If

            Dim bh As String = Format(e.DataRow("日期"),"yyyyMMdd") '取得编号的8位前缀
            If e.DataRow("序号").StartsWith(bh) = False '如果编号的前8位不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(序号)","日期 = #" & e.DataRow("日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(9,4)) + 1 '获得最大编号的后四位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("序号") = bh & "-" & Format(idx,"0000")
            End If
        End If
    Case "序号","材料名称","规格型号","工序","数量","员工","备注"
        If e.DataRow.IsNull("日期") = False Then
            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 If
End Select

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


加好友 发短信
等级:幼狐 帖子:196 积分:2156 威望:0 精华:0 注册:2013/5/10 15:59:00
  发帖心情 Post By:2019/8/28 14:53:00 [只看该作者]

蓝老师,这个又引出别一个问题:如果在按“一车间毛坯流水帐”里,同一天在日期新增几行内容的话,哪么“查询”只默认同步一行的内容,哪么又如何设置的呢,请指导一下,谢谢!

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


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/28 15:37:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:196 积分:2156 威望:0 精华:0 注册:2013/5/10 15:59:00
  发帖心情 Post By:2019/8/28 16:21:00 [只看该作者]

蓝老师,我的问题是在“一车间毛坯流水帐”这个表里面,通过日期的自编编号,想按同一天(以日期为例,新增多条信息


此主题相关图片如下:qq图片20190828161402.png
按此在新窗口浏览图片

但发现“查询”表里的话,它日期同步的话,只得一条信息了

此主题相关图片如下:qq图片20190828161409.png
按此在新窗口浏览图片



表的DataColChanged事件代码设置为
Select Case e.DataCol.Name
    Case "日期"
        If e.DataRow.IsNull("日期") Then
            e.DataRow("序号") = Nothing
        Else
            '
            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("备注")
            Else
                dr("日期") = e.DataRow("日期")
            End If

            Dim bh As String = Format(e.DataRow("日期"),"yyyyMMdd") '取得编号的8位前缀
            If e.DataRow("序号").StartsWith(bh) = False '如果编号的前8位不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(序号)","日期 = #" & e.DataRow("日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(9,4)) + 1 '获得最大编号的后四位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("序号") = bh & "-" & Format(idx,"0000")
            End If
        End If
    Case "序号","材料名称","规格型号","工序","数量","员工","备注"
        If e.DataRow.IsNull("日期") = False Then
            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 If
End Select
表的DataRowDeleting事件代码设置为

Dim dr As DataRow = DataTables("查询").Find("日期 = '" & e.DataRow("日期") & "'")
If dr IsNot Nothing Then
    dr.Delete()
End If

我还未啃透帮助文件,请蓝老师指导一下,我这应该怎么修改,谢谢





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


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/28 16:26:00 [只看该作者]

Case "序号","材料名称","规格型号","工序","数量","员工","备注"
        If e.DataRow.IsNull("日期") = False Then
            for each dr As DataRow in DataTables("查询").select("日期 = #" & e.DataRow("日期") & "#")
                dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
            next
        End If

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


加好友 发短信
等级:幼狐 帖子:196 积分:2156 威望:0 精华:0 注册:2013/5/10 15:59:00
  发帖心情 Post By:2019/8/28 16:56:00 [只看该作者]

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("数量")

            dr("员工") = e.DataRow("员工")

            dr("备注") = e.DataRow("备注")

        Else

            dr("日期") = e.DataRow("日期")

        End If

Case "序号","材料名称","规格型号","工序","数量","员工","备注"

        If e.DataRow.IsNull("日期") = False Then

            For Each dr As DataRow In DataTables("查询").Select("日期 = #" & e.DataRow("日期") & "#")

                dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)

            Next

        End If

End Select


If e.DataCol.Name = "日期" Then

    If e.DataRow.IsNull("日期") Then

        e.DataRow("序号") = Nothing

    Else

        Dim bh As String = Format(e.DataRow("日期"),"yyyyMMdd") '取得编号的8位前缀

        If e.DataRow("序号").StartsWith(bh) = False '如果编号的前8位不符

            Dim max As String

            Dim idx As Integer

            max = e.DataTable.Compute("Max(序号)","日期 = #" & e.DataRow("日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号

            If max > "" Then '如果存在最大编号

                idx = CInt(max.Substring(9,4)) + 1 '获得最大编号的后四位顺序号,并加1

            Else

                idx = 1 '否则顺序号等于1

            End If

            e.DataRow("序号") = bh & "-" & Format(idx,"0000")

        End If

    End If

End If

它又显示这个出来了


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:5-1_201908281651.zip




[此贴子已经被作者于2019/8/28 17:09:13编辑过]

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


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/28 17:51:00 [只看该作者]

Dim dr As DataRow = DataTables("查询").Find("日期 = #" & e.NewValue & "#")

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