以文本方式查看主题

-  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=20410)

--  作者:jianjingmaoyi
--  发布时间:2012/6/7 21:27:00
--  一键定向

  开发版发布后是不能重新定向的,虽说数据源已经放开,但是定向功能不能放开也是一个遗憾,以下的代码可以将外部数据源的表重新定向到新数据源:

 

 

外部到外部的,我重新给.这个是正确的代码. 

 

Dim Builder As New ADOXBuilder("BB") \'要指定数据源名称
Dim tbl As ADOXTable
Builder.Open()
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim lst As List(Of String)
lst = Connections("AA").GetTableNames
For Each nm As String In lst
    cmd.CommandText = "SELECT * From {" & nm & " } Where [_Identify] Is Null"
    cmd.C
    dt = cmd.ExecuteReader()
    tbl = Builder.NewTable(nm) \'创建表
    For Each dc As DataCol In dt.DataCols
        With tbl
            Select Case dc.DataType.Name
                Case  "String"
                    .AddColumn(dc.Name ,ADOXType.String,100)
                Case  "DateTime"
                    .AddColumn(dc.Name ,ADOXType.DateTime)
                Case  "Boolean"
                    .AddColumn(dc.Name ,ADOXType.Boolean)
                Case  "Double"
                    .AddColumn(dc.Name ,ADOXType.Double)
                Case  "Text"
                    .AddColumn(dc.Name ,ADOXType.Text)
                Case  "Integer"
                    .AddColumn(dc.Name ,ADOXType.Integer)
                Case  "Short"
                    .AddColumn(dc.Name ,ADOXType.Short)
                Case  "Byte"
                    .AddColumn(dc.Name ,ADOXType.Byte)
                Case  "Single"
                    .AddColumn(dc.Name ,ADOXType.Single)
                Case  "Decimal"
                    .AddColumn(dc.Name ,ADOXType.Decimal)
            End Select
        End With
    Next
    Builder.AddTable(tbl,True,True) \'增加表
Next
Builder.Close()
Syscmd.Project.Open(ProjectFile)

[此贴子已经被作者于2012-6-8 13:41:50编辑过]

--  作者:blackzhu
--  发布时间:2012/6/8 7:36:00
--  
值得给个精华!
--  作者:lihe60
--  发布时间:2012/6/8 7:57:00
--  

执行行了一下代码,没有什么反应。

 


--  作者:lihe60
--  发布时间:2012/6/8 7:58:00
--  
我还真的希望有个一键重定向和解除重定向的功能。
--  作者:blackzhu
--  发布时间:2012/6/8 8:28:00
--  
不可能的,测试过了,后台直接可以定向的.前台看不见的.你要做两个数据源  A和B  A是原数据源  B是一个新的数据源,没有任何东西的.
--  作者:lihe60
--  发布时间:2012/6/8 8:33:00
--  
我误解了,我是把内部表定向到外部表。
--  作者:blackzhu
--  发布时间:2012/6/8 8:59:00
--  

再发一个内部表定向到外部表的代码:

 

  Dim Builder As New ADOXBuilder("服务器") \'要指定数据源名称
Dim tbl As ADOXTable
Builder.Open()
For Each dt As DataTable In DataTables
    tbl = Builder.NewTable(dt.Name) 创建表
    For Each dc As DataCol In DataTables(dt.Name).DataCols
        With tbl
            Select Case dc.DataType.Name
                Case  "String"
                    .AddColumn(dc.Name ,ADOXType.String,100)
                Case  "DateTime"
                    .AddColumn(dc.Name ,ADOXType.DateTime)
                Case  "Boolean"
                    .AddColumn(dc.Name ,ADOXType.Boolean)
                Case  "Double"
                    .AddColumn(dc.Name ,ADOXType.Double)
                Case  "Text"
                    .AddColumn(dc.Name ,ADOXType.Text)
                Case  "Integer"
                    .AddColumn(dc.Name ,ADOXType.Integer)
                Case  "Short"
                    .AddColumn(dc.Name ,ADOXType.Short)
                Case  "Byte"
                    .AddColumn(dc.Name ,ADOXType.Byte)
                Case  "Single"
                    .AddColumn(dc.Name ,ADOXType.Single)
                Case  "Decimal"
                    .AddColumn(dc.Name ,ADOXType.Decimal)
            End Select
        End With
    Next
    Builder.AddTable(tbl,True,True) \'增加表
Next
Builder.Close()
Syscmd.Project.Open(ProjectFile)


--  作者:blackzhu
--  发布时间:2012/6/8 10:53:00
--  

老大,外部表转内部表:

 

Dim Builder As New ADOXBuilder
Dim tbl As ADOXTable
Builder.Open()
Dim lst As List(Of String)
lst = Connections("BB").GetTableNames
For Each nm As String In lst
    tbl = Builder.NewTable(nm)
    For Each dc As DataCol In DataTables(nm).DataCols

 

这儿的nm是字符串,不是表,这个地方应该怎么改才行?


--  作者:blackzhu
--  发布时间:2012/6/8 13:09:00
--  

哈哈,外部表转入内部的一键定向的代码也做出来了:

 

Dim Builder As New ADOXBuilder
Dim tbl As ADOXTable
Builder.Open()
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim lst As List(Of String)
lst = Connections("BB").GetTableNames
For Each nm As String In lst
    cmd.CommandText = "SELECT * From {" & nm & " } Where [_Identify] Is Null"
    cmd.C
    dt = cmd.ExecuteReader()
    tbl = Builder.NewTable(nm) \'创建表
    For Each dc As DataCol In dt.DataCols
        With tbl
            Select Case dc.DataType.Name
                Case  "String"
                    .AddColumn(dc.Name ,ADOXType.String,100)
                Case  "DateTime"
                    .AddColumn(dc.Name ,ADOXType.DateTime)
                Case  "Boolean"
                    .AddColumn(dc.Name ,ADOXType.Boolean)
                Case  "Double"
                    .AddColumn(dc.Name ,ADOXType.Double)
                Case  "Text"
                    .AddColumn(dc.Name ,ADOXType.Text)
                Case  "Integer"
                    .AddColumn(dc.Name ,ADOXType.Integer)
                Case  "Short"
                    .AddColumn(dc.Name ,ADOXType.Short)
                Case  "Byte"
                    .AddColumn(dc.Name ,ADOXType.Byte)
                Case  "Single"
                    .AddColumn(dc.Name ,ADOXType.Single)
                Case  "Decimal"
                    .AddColumn(dc.Name ,ADOXType.Decimal)
            End Select
        End With
    Next
    Builder.AddTable(tbl,True,True) \'增加表
Next
Builder.Close()
Syscmd.Project.Open(ProjectFile)


 


--  作者:狐来狐去
--  发布时间:2012/6/8 13:25:00
--  
师傅厉害~~~~~~~~~~