以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  单元格提取  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=149354)

--  作者:yaojun
--  发布时间:2020/4/29 15:51:00
--  单元格提取

有一“姓名”列,是采用多值字段录入单元格内容的,怎么样在“姓名”列李选择几个人,则在另外一列“人数”中自动统计多少人呀?请求帮助,谢谢,例如单元格里选择了“张三,李四”,在人数列李自动生成2.

 

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


--  作者:y2287958
--  发布时间:2020/4/29 15:53:00
--  
.split(",").lenght
--  作者:有点蓝
--  发布时间:2020/4/29 16:09:00
--  
DataColChanged事件

If e.DataCol.Name = "姓名" Then 
    If e.DataRow.IsNull("姓名") Then 
        e.DataRow("人数") = Nothing 
    Else
        e.DataRow("人数") = e.DataRow("姓名").split(",").length
    End If
End If

--  作者:yaojun
--  发布时间:2020/4/29 16:14:00
--  

完整代码怎么写


--  作者:有点蓝
--  发布时间:2020/4/29 16:26:00
--  
看3楼
--  作者:yaojun
--  发布时间:2020/4/29 16:53:00
--  

谢谢,可以了,非常实用,另外请教:

现在到表A里面完成了,现在需要提交到表C里面去,该怎么做?

例如:做了一个按钮,当该行的“审核=TRUE”与“是否提交=TRUE”时,把当前表A里面的姓名分解成几行,复制到表C里面去,其它部分内容不变,只是把多值字段的姓名分解成单一的行,以方便个人工资计算,谢谢。

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

[此贴子已经被作者于2020/4/29 16:53:04编辑过]

--  作者:有点蓝
--  发布时间:2020/4/29 17:13:00
--  
For Each dr As DataRow In DataTables("表A").Select("是否提交=true and 审核=true")
    For Each s As String In dr("姓名").split(",")
        Dim r As Row = Tables("表C").AddNew
        For Each c As Col In Tables("表C").Cols
            r(c.Name)=dr(c.Name)
        Next
        r("姓名")= s
    Next
Next

--  作者:yaojun
--  发布时间:2020/4/29 19:11:00
--  

谢谢蓝师,这段代码是整个表复制的,但是这样很容易重复,为了防止重复,能否当前表当前行符合("是否提交=true and 审核=true")的情况下复制当前行:请蓝老师帮忙修改代码:For Each dr As DataRow In DataTables("表A").Select("是否提交=true and 审核=true")
    For Each s As String In dr("姓名").split(",")
        Dim r As Row = Tables("表C").AddNew
        For Each c As Col In Tables("表C").Cols
            r("人数")=dr("人数")
            r("工序")=dr("工序")
            r("完成日期")=dr("完成日期")
            r("总工资")=dr("总工资")
            r("平均工资")=dr("平均工资")
        Next
        r("姓名")= s
    Next
Next

非常感谢


--  作者:有点蓝
--  发布时间:2020/4/30 8:45:00
--  
这个代码本来就是复制符合("是否提交=true and 审核=true")的行的