Foxtable(狐表)用户栏目专家坐堂 → 如何根据进场日期列把内容增加到同一日期的“每日摘要”中


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

主题:如何根据进场日期列把内容增加到同一日期的“每日摘要”中

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
如何根据进场日期列把内容增加到同一日期的“每日摘要”中  发帖心情 Post By:2018/12/18 23:34:00 [只看该作者]

如何根据"进场日期"列把内容增加到同一日期的“每日摘要”中(同一日期的第一行)


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

[此贴子已经被作者于2018/12/19 0:01:36编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/19 9:44:00 [只看该作者]

1、循环每一行拼接内容

 

Dim drs = e.datatable.select("进场日期=#" & e.datarow("进场日期") & "#", "_Sortkey")

for each dr as datarow in drs

 

next

 

2、把拼接的内容,赋值给 drs(0) 行的列即可

 

drs(0)("某列") = str

[此贴子已经被作者于2018/12/19 9:44:59编辑过]

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/12/19 21:02:00 [只看该作者]

老师上面的问题基本解决了,表DataColChanged代码如下:

Select Case e.DataCol.Name
    Case "进场日期","材料名称"
        Dim drs As List(Of DataRow) = e.DataTable.Select("进场日期 = #" & e.DataRow("进场日期") & "#", "_Sortkey")
        Dim str As String
        Dim lst As New List(Of String)
        For Each dr As DataRow In drs
            If lst.Contains(dr("材料名称")) = False Then
                lst.Add(dr("材料名称"))
            End If
        Next
        str = String.Join(",",lst.ToArray)
        drs(0)("每日摘要") = str.Trim(",","")
        For i As Integer = 1 To lst.Count - 1
            drs(i)("每日摘要") = Nothing
        Next
End Select

但现在又有一个新的问题出现,如果删除某一行时,如何自动更新??
[此贴子已经被作者于2018/12/19 21:01:58编辑过]

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/12/19 21:44:00 [只看该作者]

已解决,在表DataRowDeleted事件中:

Dim fdr As DataRow = e.DataTable.Find("进场日期 = #" & e.DataRow("进场日期") & "#")
If fdr IsNot Nothing Then
    SystemReady = False
    Dim drs As List(Of DataRow) = e.DataTable.Select("进场日期 = #" & fdr("进场日期") & "#", "_Sortkey")
    Dim str As String
    Dim lst As New List(Of String)
    For Each dr As DataRow In drs
        If lst.Contains(dr("材料名称")) = False Then
            lst.Add(dr("材料名称"))
        End If
    Next
    str = String.Join(",",lst.ToArray)
    drs(0)("每日摘要") = str.Trim(",","")
    For i As Integer = 1 To lst.Count - 1
        drs(i)("每日摘要") = Nothing
    Next
    SystemReady = True
End If

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/12/21 21:36:00 [只看该作者]

如何删除行时,每日摘要自动变成第二条?

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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:每日摘要.table




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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/12/21 22:12:00 [只看该作者]

测试没有问题啊

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/12/22 0:08:00 [只看该作者]

如何修改“进场日期”或“材料名称”或“审核结果”的数据时,作相应调整,如材料名称为33的行的进场日期列由2018-12-07改为2018-12-05时,2018-12-05的“每日摘要”作了相应调整,但2018-12-07的“每日摘要”没有作相应调整,如何处理?


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


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:每日摘要.table



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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/12/22 9:10:00 [只看该作者]

Select Case e.DataCol.Name
    Case "进场日期","材料名称","审核结果"
        If e.DataRow("审核结果").Contains("符合要求") Then
            Dim drs As List(Of DataRow) = e.DataTable.Select("进场日期 = #" & e.DataRow("进场日期") & "# And 审核结果 = '" & e.DataRow("审核结果") & "'", "_Sortkey")
            Dim str As String
            Dim lst As New List(Of String)
            For Each dr As DataRow In drs
                If lst.Contains(dr("材料名称")) = False Then
                    lst.Add(dr("材料名称"))
                End If
                dr.Save()
            Next
            str = String.Join(",",lst.ToArray)
            drs(0)("每日摘要") = str.Trim(",","")
            For i As Integer = 1 To lst.Count - 1
                drs(i)("每日摘要") = Nothing
            Next
        End If
        If e.DataCol.Name = "进场日期" AndAlso e.OldValue <> Nothing Then
            Dim drs As List(Of DataRow) = e.DataTable.Select("进场日期 = #" & e.OldValue & "# And 审核结果 = '" & e.DataRow("审核结果") & "'", "_Sortkey")
            Dim str As String
            Dim lst As New List(Of String)
            For Each dr As DataRow In drs
                If lst.Contains(dr("材料名称")) = False Then
                    lst.Add(dr("材料名称"))
                End If
                dr.Save()
            Next
            str = String.Join(",",lst.ToArray)
            drs(0)("每日摘要") = str.Trim(",","")
            For i As Integer = 1 To lst.Count - 1
                drs(i)("每日摘要") = Nothing
            Next
            
        End If
End Select

 回到顶部