Foxtable(狐表)用户栏目专家坐堂 → [求助]空行循环赋值


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

主题:[求助]空行循环赋值

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


加好友 发短信
等级:幼狐 帖子:91 积分:732 威望:0 精华:0 注册:2016/3/8 11:20:00
[求助]空行循环赋值  发帖心情 Post By:2016/10/11 1:27:00 [只看该作者]

 如何对空行循环赋值,我写了如下代码,错误比较多,望老师指出错误,或者指点更好更简洁的方法
  If e.DataRow.Isnull("姓名") = True then
            Dim t1 As Byte
            Dim t As List(Of String) = DataTables("客服目标").GetValues("姓名","月=" & Date.Today.month)
            Dim t3 As List(Of String) = DataTables("组合1").GetValues("姓名","月=" & Date.Today.month)
            t1 = t.Count
            
            Dim t5 As Integer = DataTables("组合1").DataRows.Count '行计数
            Dim t2 ,r As Integer
            t2 = Tables("组合1").Compute("count(姓名)","姓名 Is Not Null") '非空计数
            
            For r = 0 To t5 - t2
                Dim dr As DataRow
                dr = DataTables("组合1").Find("[月] Is null",,r)
                For Each t6 As String In t
                    dr("姓名") = t(r)
                Next
            Next
        End If
[此贴子已经被作者于2016/10/11 1:29:35编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

没有看懂你的逻辑。

假如姓名为空,应该给什么值呢?麻烦下次给代码的时候详细说明操作逻辑

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


加好友 发短信
等级:幼狐 帖子:91 积分:732 威望:0 精华:0 注册:2016/3/8 11:20:00
  发帖心情 Post By:2016/10/11 10:51:00 [只看该作者]

老师我要实现的功能有一下几点:
1、首先 每次打开项目后能自动检测 【客服目标,有几个名字(条件是按系统日期所在月 例如:本月为10)
2、其次 在合1增加行 (增加行:根据 【合1日期列的最大日期,距离系统日期天数X姓名数)
3、在合1新增加的行中循环填入姓名
例如:3.1客服目标按月筛选出  张三、李四、王二 (姓名计数为3)
    3.2合1中最大日期为2016/10/5,系统日期为2016/10/7 (相差天数为2天)
          3.3合1增加3*2=6行
          3.4合1新增行中写入, 姓名列                 日期列
                                                    张三                 2016/10/6
                                                    李四                 2016/10/6
                                                    王二                 2016/10/6
                                                    张三                 2016/10/7
                                                    李四                 2016/10/7
                                                    王二                 2016/10/7
       备注:姓名为客服目标中的名字,按条件是按月筛选出来
以上是我想实现的功能
我的设计思路是:(合1AfterOpenProject写入)1、首先提起系统日期计算出所在月份,其次 在客服目标中筛选出 当月姓名并写入到集合中,同时计算出集                              合个数。然后 查找合1】日期列中查找最大日期,并计算出距离系统日期天数。最后 计算出合1
                                                               中的增加行数(增加行数=相差天数X姓名数)。
                      2、(合1DataColChanged写入) 查找出姓名列为空的,并把姓名按次序循环写人不通的行(日期我就不知怎么写入了)


 如何对空行循环赋值,我写了如下代码,错误比较多,望老师指出错误,或者指点更好更简洁的方法
  If e.DataRow.Isnull("姓名") = True then '判断合1】姓名列是否存在空值
            Dim t1 As Byte '
            Dim t As List(Of String) = DataTables("客服目标").GetValues("姓名","月=" & Date.Today.month) '姓名写入集合
            Dim t3 As List(Of String) = DataTables("组合1").GetValues("姓名","月=" & Date.Today.month) '(这条代码写错啦)
            t1 = t.Count '集合计数
            
            Dim t5 As Integer = DataTables("组合1").DataRows.Count '所有行计数
            Dim t2 ,r As Integer
            t2 = Tables("组合1").Compute("count(姓名)","姓名 Is Not Null") '非空行计数
            
            For r = 0 To t5 - t2 '非空行行循环次数
                Dim dr As DataRow
                dr = DataTables("组合1").Find("[月] Is null",,r) '查找空行
                For Each t6 As String In t '
                    dr("姓名") = t(r) '写入姓名
                Next
            Next
        End If

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

请上例子测试

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


加好友 发短信
等级:幼狐 帖子:91 积分:732 威望:0 精华:0 注册:2016/3/8 11:20:00
  发帖心情 Post By:2016/10/11 11:35:00 [只看该作者]

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


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

Dim t As List(Of String) = DataTables("客服目标").GetValues("姓名","月=" & Date.Today.month) '姓名写入集合

Dim maxdate  = DataTables("组合1").Compute("max(日期)")
If maxdate IsNot Nothing Then
    Dim days As Integer = (Date.Today - cdate(maxdate)).TotalDays
    If days > 0 Then
        Dim dr As DataRow
        For Each name As String In t
            For i As Integer = 1 To days
                dr = DataTables("组合1").AddNew
                dr("姓名") = name
                dr("日期") = maxdate.AddDays(i)
            Next
        Next
    End If
End If

 回到顶部