以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  检测表名並列于表里  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=39258)

--  作者:realredred
--  发布时间:2013/8/20 1:04:00
--  检测表名並列于表里

想做的是,历遍所有表

然后把表名,列于系统库,名为"表名"的列里

 

我只想到这样做,看看有沒有更简洁的方法,

 

Dim dtn As String  \'集合表名数目
Dim dtr As Integer = 0 \'表行递增
Dim n As Integer = Tables("系统库").Rows.Count \'获得表的总行数
MessageBox.Show( " T1表行数 " & n )
For Each dt As DataTable In DataTables
    If dtn Is Nothing Then
        dtn = 0
    Else
        dtn = dtn + 1
    End If
   
Next
MessageBox.Show( "表数 : " & dtn)
If n < dtn Then
    Dim R As Integer
    R = dtn - n
    MessageBox.Show(R)
    DataTables("系统库").AddNew( R +1 )
    MessageBox.Show("加行完成")
   
End If

For Each dt As DataTable In DataTables
    Tables("系统库")( dtr,"表名") = dt.Name
    dtr = dtr + 1
Next

 

 

 

这样,如果系统库的行超出表的数目,都能自动加行.

求各老師指引出更好的方法

 

 


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

--  作者:菲舍尔
--  发布时间:2013/8/20 2:29:00
--  

系统库的结构不合理

 

建议使用,项目-值的方式来建表

 

这样的话,代码如下:

 

For Each dt As DataTable In DataTables
    Dim dr As DataRow =DataTables("系统库").find("项目=\'表名\' and 值 =\'" & dt.name & "\'")
    If dr Is Nothing Then
       dr = DataTables("系统库").addnew
       dr("项目")="表名"
       dr("值")=dt.name
    End If
Next
DataTables("系统库").save


--  作者:realredred
--  发布时间:2013/8/20 7:30:00
--  

好的,这个只是实习用的,我再建一个表來测试

因为想到很多情況都需要历遍然后列出

所以找了这个例子來做练习