以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于动态增加临时列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98801)

--  作者:10059
--  发布时间:2017/4/7 11:11:00
--  关于动态增加临时列
老师,请问在动态增加临时列时怎么用代码设置增加列的显示位置??谢谢!
--  作者:有点青
--  发布时间:2017/4/7 11:42:00
--  

增加以后,移动位置

 

Tables("表A").Cols("第二列").Move(8)


--  作者:10059
--  发布时间:2017/4/7 11:49:00
--  
谢谢青老师,再个问题就是临时列可以用来分组统计??
--  作者:有点青
--  发布时间:2017/4/7 11:52:00
--  
以下是引用10059在2017/4/7 11:49:00的发言:
谢谢青老师,再个问题就是临时列可以用来分组统计??

 

可以的


--  作者:10059
--  发布时间:2017/4/7 12:00:00
--  
有个错误提示: 无效列名:xxx。这是为什么呢??
--  作者:有点青
--  发布时间:2017/4/7 12:01:00
--  

 贴出你写的代码。


--  作者:10059
--  发布时间:2017/4/7 13:33:00
--  
代码如下:
DataTables("oemp_dim").DataCols.Add("工号", Gettype(String), 20)
Tables("离职管理_table1").Cols("工号").move(1)
DataTables("oemp_dim").DataCols.Add("姓名", Gettype(String), 6)
DataTables("oemp_dim").DataCols.Add("部门", Gettype(String), 32)
DataTables("oemp_dim").DataCols.Add("入职日期", Gettype(Date))

DataTables("oemp_dim").DataCols("emp_no").RaiseDataColChanged()

Dim dt As DataTable
Dim b As new GroupTableBuilder("统计表","oemp_dim")
b.Groups.Adddef("部门")
b.Totals.adddef("emp_no",AggregateEnum.Count,"人数")
dt = b.build(False)
Tables("统计表").Visible = False
Dim c As WinForm.TreeView = e.Form.Controls("TreeView1")
c.buildtree(dt,"部门")
c.StopRedraw
For Each d As WinForm.TreeNode In c.AllNodes
    Dim bm As String = d.DataRow("部门")
    Select Case d.level
        Case 0
            d.Text = d.Text & "(" & dt.Compute("Sum(人数)","部门 = \'" & bm & "\'" ) & "人)"
    End Select
Next
c.Nodes.Insert("加载所有行","加载所有行(" & dt.Compute("Sum(人数)") & "人)",0)
c.ResumeRedraw

--  作者:有点青
--  发布时间:2017/4/7 14:20:00
--  

 改一下代码,看弹出什么

 

Dim dt As DataTable = Tables("离职管理_table1").DataTable
dt.DataCols.Add("工号", Gettype(String), 20)
msgbox(1)
Tables("离职管理_table1").Cols("工号").move(1)
msgbox(2)
dt.DataCols.Add("姓名", Gettype(String), 6)
dt.DataCols.Add("部门", Gettype(String), 32)
dt.DataCols.Add("入职日期", Gettype(Date))
dt.DataCols("emp_no").RaiseDataColChanged()

msgbox(3)
Dim b As new GroupTableBuilder("统计表",dt)
b.Groups.Adddef("部门")
b.Totals.adddef("emp_no",AggregateEnum.Count,"人数")
dt = b.build(False)
Tables("统计表").Visible = False
Dim c As WinForm.TreeView = e.Form.Controls("TreeView1")
c.buildtree(dt,"部门")
c.StopRedraw
For Each d As WinForm.TreeNode In c.AllNodes
    Dim bm As String = d.DataRow("部门")
    Select Case d.level
        Case 0
            d.Text = d.Text & "(" & dt.Compute("Sum(人数)","部门 = \'" & bm & "\'" ) & "人)"
    End Select
Next
c.Nodes.Insert("加载所有行","加载所有行(" & dt.Compute("Sum(人数)") & "人)",0)
c.ResumeRedraw


--  作者:10059
--  发布时间:2017/4/7 14:39:00
--  
可以了,谢谢青老师了。老师麻烦告诉我出现问题的关键是什么??下次可以避免
--  作者:有点青
--  发布时间:2017/4/7 15:02:00
--  
窗口表的话,尽量用 Tables("离职管理_table1") 这种方式来访问。如果要用到datatable,就写成Tables("离职管理_table1").DataTable