以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎么判断当前行有数据之后,在接下来的空白行自动填充内容呢?直到出现有数据行为止,其自动增加序号。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175070)

--  作者:cnsjroom
--  发布时间:2022/2/18 12:52:00
--  怎么判断当前行有数据之后,在接下来的空白行自动填充内容呢?直到出现有数据行为止,其自动增加序号。

怎么判断当前行有数据之后,在接下来的空白行自动填充内容呢?直到出现有数据行为止,其自动增加序号。(操作红色框中的效果部分,同时在序号列中实现顺序递增),麻烦老师们指导下 谢谢!

当前表图:


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

 

说明:当找到第一列袁0且第六列相等的时候  就自动将该序号定义为1

然后将袁0开始的行第一列 第三列  第四列数据  一直复制到张0的上一行

 

当找到第一列张0且第六列相等的时候  就将该行序号定义为1

如果已经是末尾行且末尾行没有其他数据  就一直将张0复制到末尾

然后将袁0开始的行第一列 第三列  第四列数据  一直复制到末尾行

 

最终实现效果如图:


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

 

列子:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table



--  作者:cd_tdh
--  发布时间:2022/2/18 13:20:00
--  

比如这样:

If e.DataCol.Name = "第六列" Then \'如果更改的是第六列列
    If e.DataRow.IsNull("第六列") Then \'第六列是否为空
        e.DataRow("第三列") = Nothing \'如果为空,则清除出生日期
        e.DataRow("第四列") = Nothing \'如果为空,则清除出生日期
        e.DataRow("序号") = Nothing \'如果为空,则清除出生日期
    Else
        e.DataRow("第三列") = "团员"  \'"党员"
        e.DataRow("第四列") = "52272519950623"
        e.DataRow("序号") = e.DataTable.Compute("max(序号)") +1
        e.DataRow.Save
    End If
End If

 

最好把列名写清楚,逻辑写清楚,

[此贴子已经被作者于2022/2/18 13:20:38编辑过]

--  作者:cnsjroom
--  发布时间:2022/2/18 13:54:00
--  回复:(cd_tdh)比如这样:If e.DataCol.Name = "第...
还是不大明白老师的意思

想实现的效果如下:
第一 第三 第四 第六列袁0  张0出现的第一行都是表中已经有的数据  对应的序号12345…是没有的数据
想实现遍历更新
如果遍历到袁0是属于该记录的第一行  就在第二行内复制对应的第一第三第四列
直到遍历张0所在的行-1  
然后又开始遍历张0所在行及之后的数据行  对应的也是-1复制第一第三第四列 同时递增张0为第一列的所有行序号  依次从1递增

--  作者:cd_tdh
--  发布时间:2022/2/18 13:58:00
--  

1、第一行直接用find就行了,find默认就是找到的第一行,就没必要用循环了吧

2、你要输入哪一列数据,那几列需要自动填充出来?

[此贴子已经被作者于2022/2/18 14:03:15编辑过]

--  作者:cnsjroom
--  发布时间:2022/2/18 14:13:00
--  回复:(cd_tdh)1、第一行直接用find就行了,find默认...
比如找到张0的第一行  接下来后几空行 一直到末尾  
那么从找到的第一行后面的第二行开始  一直到末尾行都自动将第一行的第一第三第四列赋值到下面的空行对应列里  同时更新序号列  以第一列第三列第四列相等为判断
如果找到了下一行中的第一列有李0  那就循环上述操作  
一直到表中第一第三第四都有值 且没有空行为止

--  作者:cd_tdh
--  发布时间:2022/2/18 14:13:00
--  

试试这样是不是你要的效果

If e.DataCol.Name = "第一列" Then
    If e.DataRow.IsNull("第一列") Then
        e.DataRow("第三列") = Nothing
        e.DataRow("第四列") = Nothing
        e.DataRow("序号") = Nothing
    Else
        Dim dr As DataRow = e.DataTable.Find("第一列 = \'" & e.DataRow("第一列") & "\'")
        If dr IsNot Nothing Then
            e.DataRow("第三列") = dr("第三列")
            e.DataRow("第四列") = dr("第四列")
            e.DataRow("序号") = e.DataTable.Compute("max(序号)","第一列 = \'" & dr("第一列") & "\'") + 1
            e.DataRow.Save
        Else
            e.DataRow("序号") = 1
        End If
    End If
End If

[此贴子已经被作者于2022/2/18 14:13:35编辑过]

--  作者:有点蓝
--  发布时间:2022/2/18 14:13:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1 (1).zip


--  作者:cnsjroom
--  发布时间:2022/2/18 14:21:00
--  回复:(cd_tdh)试试这样是不是你要的效果If e.Dat...
第一列的张0只会出现第一行哦  接下来的2345…行都是没有的  有可能第7行第一列会出现别的王0  想实现张0出现的第一行  一直到王0出现的第一行之间  都将第一三四列的内容赋值和张0出现的第一行的第一三四列内容
--  作者:cd_tdh
--  发布时间:2022/2/18 14:23:00
--  

你试试版主给你的,就是这样的

[此贴子已经被作者于2022/2/18 14:26:07编辑过]

--  作者:cnsjroom
--  发布时间:2022/2/18 15:34:00
--  回复:(有点蓝)[upload=zip,管理项目1 (1).zip]view...

谢谢  有点蓝老师

 

Dim r0 As Row
Dim idx As Integer = 1
For Each r As Row In Tables("表A").Rows
    If r0 IsNot Nothing Then
        If r.IsNull("第一列") OrElse r0("第一列") = r("第一列")
            r("第一列") = r0("第一列")
            r("第三列") = r0("第三列")
        Else
            idx = 1
        End If
    End If
    r("序号") = idx
    idx += 1
    r0 = r
Next

 

如果我要反过来  将第一三四列内容都相同的行的列合并单元格  只显示一行怎么操作呢?

 

袁0  团员

袁0  团员

袁0  团员

 

三行都相同   那就把他们三行两列合并成一行

袁0  团员