以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  表结构  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=52240)

--  作者:shanmao
--  发布时间:2014/6/11 17:29:00
--  表结构
在表A中,有两个列,第一列名为“表”,用来存储所有表的名称,第二列名为“结构”,用于存储所有表的结构(列名和列宽)。用width方法来做。怎么写呢?
--  作者:有点甜
--  发布时间:2014/6/11 17:31:00
--  

 什么意思?


--  作者:shanmao
--  发布时间:2014/6/11 21:14:00
--  
看截图

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
表结构里的结构列都是前面表里的列名和列宽,用width方法,不用GetColVisibleWidth。

--  作者:有点甜
--  发布时间:2014/6/11 21:17:00
--  
 那你想问什么?如何获取各个表的列名和列宽?
--  作者:shanmao
--  发布时间:2014/6/11 21:19:00
--  
是的。在命令窗口里,我目前只能取出各个表中的一列,不能取得所有列。如果用GetColVisibleWidth方法我会,但是用width不知道怎么写。
--  作者:shanmao
--  发布时间:2014/6/11 21:23:00
--  
下面这个代码,你看一下怎么样才能完善达到那种效果。
Dim dr As Row
For Each tb As Table In Tables
    If tb.name <> "表结构" Then
        Dim a As DataRow = DataTables("表结构").Find("表 = \'" & tb.name & "\'")
        If a IsNot Nothing Then
            For Each co As Col In Tables(a("表")).Cols
                Dim na As String = co.Name
                Dim jg As String = co.Width
                
                a("结构") = na &"|"& jg
                a.save
            Next
        Else
            dr = Tables("表结构").AddNew
            dr("表") = tb.name
            For Each co As Col In Tables(dr("表")).Cols
                Dim na As String = co.Name
                Dim jg As String = co.Width
                dr("结构") = na &"|"& jg
                dr.save
            Next
        End If
    End If
Next


--  作者:有点甜
--  发布时间:2014/6/11 21:23:00
--  

如下

 

Dim str As String = ""
For Each c As Col In Tables("表A").Cols
    str &= c.Name & "|" & iif(c.Width = -1, 20, c.Width) & "|"
Next
msgbox(str.TrimEnd("|"))


--  作者:有点甜
--  发布时间:2014/6/11 21:27:00
--  

 如下

 

For Each t As Table In Tables
    Dim fdr As DataRow = DataTables("表结构").Find("表 = \'" & t.Name & "\'")
    If fdr Is Nothing Then
        fdr = DataTables("表结构").AddNew
        fdr("表") = t.Name
    End If
    Dim str As String = ""
    For Each c As Col In Tables("表A").Cols
        str &= c.Name & "|" & iif(c.Width = -1, 20, c.Width) & "|"
    Next
    fdr("结构") = str.TrimEnd("|")
Next


--  作者:shanmao
--  发布时间:2014/6/11 21:36:00
--  
谢谢!