Foxtable(狐表)用户栏目专家坐堂 → 如何将表B的列标题写入到表A的第一行?


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

主题:如何将表B的列标题写入到表A的第一行?

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/8/9 12:04:00 [显示全部帖子]

Dim dr As DataRow = DataTables("表A").DataRows(0)
dim tt as string
For Each c As DataCol In DataTables("表B").DataCols
      tt = tt & "|" & c.name
Next
dim n as integer
For Each cl As DataCol In DataTables("表A").DataCols
    dr(cl)=tt.split("|")(n+1)
    n=n+1

Next


刚才A  B 表颠倒了
[此贴子已经被作者于2009-8-9 12:08:30编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/8/9 13:01:00 [显示全部帖子]

简化一下:::::::::::::

Dim dr As DataRow = DataTables("表A").DataRows(1)
Dim tt as string
Dim n as integer
For Each c As DataCol In DataTables("表B").DataCols
    tt = c.name
    dr(Tables("表A").Cols(n).name)=tt
    n=n+1
Next


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/8/9 13:05:00 [显示全部帖子]

yangming版主,我可当不了老师,  只是刚好写过类似的代码, 好多都不会的~  

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/8/13 12:30:00 [显示全部帖子]

For Each dt As DataTable In DataTables
    For Each dc As DataCol In dt.DataCols
        Dim dr As DataRow = DataTables("表A").AddNew()
        dr("表名")=dt.Name
        dr("表标题")=dt.caption
        dr("列名")=dc.Name
        dr("列标题")=dc.caption
    Next
Next
这个不就可以吗?


另外,要按楼上的改,那么表A你得事先准备好增加列 =  表个数 X 每个表的列数 ,多麻烦啊~   对不?
[此贴子已经被作者于2009-8-13 12:54:13编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/8/13 13:23:00 [显示全部帖子]

难道9楼的是想要这样的形态:?


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2009-8-13 17:48:05编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/8/13 17:32:00 [显示全部帖子]

如果你有几十列,横向也同样打不了的~

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/8/13 17:55:00 [显示全部帖子]

按照12楼的样式在狐表中增加一个表, 表名:test1 ,用下面代码做一个按钮: 所有列类型都是string(文本)型

DataTables("test1").DataRows.Clear()
Dim tt as string
Dim n as integer
Dim n1 as integer
Dim n2 as integer
For Each dt As DataTable In DataTables
    if dt.name <> "test1"
        Dim dr As DataRow = DataTables("test1").AddNew()
        dr("表名")=dt.Name
        dr("表标题")=dt.caption
        dr("列名或标题")="列名"
        Dim dr1 As DataRow = DataTables("test1").AddNew()
        dr1("列名或标题")="列标题"
        if dt.datacols.count > n then
            n=dt.datacols.count  '保留个表列数最多的一个值
        end if
    end if
Next

if n-datatables("test1").datacols.count > 0 then
    for i as integer = 0 to 3+n-datatables("test1").datacols.count-1
        With DataTables("test1")
            .DataCols.Add("列" & 9+i, GetType(String), 32)
        End With
    next
end if

For Each dt1 As DataTable In DataTables
if dt1.name <> "test1"
    Dim dr2 As DataRow = DataTables("test1").DataRows(n1)
    Dim dr3 As DataRow = DataTables("test1").DataRows(n1+1)
    For Each dc As DataCol In dt1.DataCols
        tt = dc.name
        dr2(Tables("test1").Cols(n2+3).name)=tt
        tt = dc.caption
        dr3(Tables("test1").Cols(n2+3).name)=tt
        n2=n2+1
    Next
    n2=0
    n1=n1+2
end if
Next
Syscmd.Table.ChangeAlterBackColor(color.Beige)

上面代码可以把项目中所有表/列的名称和标题横向列出来,知道感觉不够精简, 那位高手帮忙精简一下就好了,谢谢

migold : 是否可行???

[此贴子已经被作者于2009-8-13 18:22:12编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/8/13 18:31:00 [显示全部帖子]

这是我测试的结果:  (借了狐友的例子)  有些表没有 表标题 或列标题

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

有个问题就是 表的顺序 和 列顺序 不是自己排列好的~    可能是初始的顺序·····
[此贴子已经被作者于2009-8-13 18:34:45编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/8/14 13:52:00 [显示全部帖子]

以下是引用yangming在2009-8-14 13:00:00的发言:

如列数不够需增列时会报错?我还没查出是哪儿的问题

这段代码就是增加列数的:  我没有测出错误啊,提示什么呢?
if n-datatables("test1").datacols.count > 0 then     ‘n是前面代码获得的最多列的表的列的数量
    for i as integer = 0 to 3+n-datatables("test1").datacols.count-1     ‘是否要加个条件:n要大于8列?
        With DataTables("test1")
            .DataCols.Add("列" & 9+i, GetType(String), 32)
        End With
    next
end if

其他for......next 中都排除了本表(test1),应该不会错吧~
你的其他表是否都小于8列?

[此贴子已经被作者于2009-8-14 13:58:59编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/8/14 16:15:00 [显示全部帖子]

以下是引用yangming在2009-8-14 14:42:00的发言:
我想还是dt.datacols.count 的问题,有N多张表,如果判断最大列的表

 20楼代码中,第一断 for.......next 里的:
       if dt.datacols.count > n then
            n=dt.datacols.count  '保留个表列数最多的一个值
        end if

[此贴子已经被作者于2009-8-14 16:15:34编辑过]

 回到顶部
总数 14 1 2 下一页