以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何根据进场日期列把内容增加到同一日期的“每日摘要”中  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=128956)

--  作者:ZJZK2018
--  发布时间:2018/12/18 23:34:00
--  如何根据进场日期列把内容增加到同一日期的“每日摘要”中
如何根据"进场日期"列把内容增加到同一日期的“每日摘要”中(同一日期的第一行)


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

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

--  作者:有点甜
--  发布时间: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
--  发布时间: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
--  发布时间: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
--  发布时间:2018/12/21 21:36:00
--  
如何删除行时,每日摘要自动变成第二条?

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

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




--  作者:有点蓝
--  发布时间:2018/12/21 22:12:00
--  
测试没有问题啊
--  作者:ZJZK2018
--  发布时间:2018/12/22 0:08:00
--  
如何修改“进场日期”或“材料名称”或“审核结果”的数据时,作相应调整,如材料名称为33的行的进场日期列由2018-12-07改为2018-12-05时,2018-12-05的“每日摘要”作了相应调整,但2018-12-07的“每日摘要”没有作相应调整,如何处理?


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


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

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



--  作者:有点蓝
--  发布时间: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