Foxtable(狐表)用户栏目专家坐堂 → 垂直转换水平表百分比设置问题


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

主题:垂直转换水平表百分比设置问题

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
垂直转换水平表百分比设置问题  发帖心情 Post By:2017/4/28 11:21:00 [只看该作者]

请教老师,以下代码怎样设置增加列的百分比,和表头某列的百分比

 

Dim dtb As New DataTableBuilder("表D")
dtb.AddDef("目标产值",Gettype(String),10)
dtb.AddDef("奖金提取比例",Gettype(String),10)
dtb.AddDef("总奖金",Gettype(String),10)
For Each v As String In DataTables("表B").GetValues("净利润率")   这个部分怎样生成0.00%,现在显示的是0.03  0.04   0.05....
    dtb.AddDef(v, Gettype(Double))
Next
dtb.Build()
For Each v As String() In DataTables("表B").GetValues("目标产值|奖金提取比例|总奖金")
    Dim dr1 As DataRow = DataTables("表D").AddNew()
    dr1("目标产值") = v(0)
    dr1("奖金提取比例") = v(1)
    dr1("总奖金") = v(2)
    For Each dr2 As DataRow In DataTables ("表B").Select("目标产值 = '" & v(0) & "' And 奖金提取比例 = '" & v(1) & "'  And 总奖金 = '" & v(2) & "'")
        dr1(dr2("净利润率")) = dr2("奖金额")
    Next
Next
Tables("总因子_Table1").DataSource = DataTables("表D")
DataTables("总因子_Table1").DataCols("奖金提取比例").SetFormat("0.00%")    这个部分是增加列,这个代码无法生成0.00%,现在显示的是0.15


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/28 11:49:00 [只看该作者]

Dim dtb As New DataTableBuilder("表D")
dtb.AddDef("目标产值",Gettype(String),10)
dtb.AddDef("奖金提取比例",Gettype(Double))
dtb.AddDef("总奖金",Gettype(String),10)
For Each v As String In DataTables("表B").GetValues("净利润率")
    dtb.AddDef(v, Gettype(Double), "", Format(v, "0.00%"))
Next
dtb.Build()
For Each v As String() In DataTables("表B").GetValues("目标产值|奖金提取比例|总奖金")
    Dim dr1 As DataRow = DataTables("表D").AddNew()
    dr1("目标产值") = v(0)
    dr1("奖金提取比例") = v(1)
    dr1("总奖金") = v(2)
    For Each dr2 As DataRow In DataTables ("表B").Select("目标产值 = '" & v(0) & "' And 奖金提取比例 = '" & v(1) & "'  And 总奖金 = '" & v(2) & "'")
        dr1(dr2("净利润率")) = dr2("奖金额")
    Next
Next
Tables("总因子_Table1").DataSource = DataTables("表D")
DataTables("总因子_Table1").DataCols("奖金提取比例").SetFormat("0.00%")    这个部分是增加列,这个代码无法生成0.00%,现在显示的是0.15

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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2017/4/28 12:13:00 [只看该作者]

感谢老师,第一个问题,我忽略把DOUBLE写成了STRING,自然不能转换为0.00%,

              第二额问题,

             For Each v As String In DataTables("表B").GetValues("净利润率")
                 dtb.AddDef(v, Gettype(Double), "", Format(v, "0.00%"))
             Next

             原来净利润率的列是DOUBLE属性,现在转换过来是标题,您指导的代码转换后标题全部显示0.00%,不会GETVALUES得到量,比如3.00% 4.00%

             我把 For Each v As String 改成 For Each v As DOUBLE报错

采用以下方法可生成,但是不是随V的动态,也有问题

With DataTables("表D")
    .DataCols("0.03").Caption = "3%"
    .DataCols("0.04").Caption = "4%"
    .BuildHeader()
End With

[此贴子已经被作者于2017/4/28 12:23:24编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/28 12:14:00 [只看该作者]

哦,改成

 

dtb.AddDef(v, Gettype(Double), "", Format(val(v), "0.00%"))


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


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2017/4/28 12:26:00 [只看该作者]

感谢老师,应该就是帮助中的

最常见的转换应该是将字符转换为数字,对于这种转换,有更直接的方法。
Visual Basic提供了一个Val函数,用于将字符转换为数值,即使转换失败,也不会报错,而是返回0。

例如:

Dim s1 As String = "abc"
Dim
s2 As String = "123.12"
Output.Show(Val(s1) +
100) '等于100
Output.Show(Val(s2) +
100)
'等于223.12


 回到顶部