Foxtable(狐表)用户栏目专家坐堂 → 关于动态增加表的问题


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

主题:关于动态增加表的问题

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
关于动态增加表的问题  发帖心情 Post By:2010/8/25 15:07:00 [只看该作者]

用ADOXBuilder可以动态增加外部表,那么增加的外部表能不能同时加载到项目中来

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/25 15:11:00 [只看该作者]

可以参考:

 

OuterTableBuilder

QueryBuilder


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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2010/8/25 15:36:00 [只看该作者]

我试了以下就是不成功,老大,写一段指导一下

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2010/8/25 15:39:00 [只看该作者]

 

'创建外部数据表

Tables("项目表管理").Filter = ""

Tables("项目表管理").Filter = "[数据库名] = '" & e.Form.Controls("数据库名").Value & "' And [表名] = '" & e.Form.Controls("新建表名").Value & "'"

 

Dim s As String =e.Form.Controls("数据库名").Value

Dim s1 As String =e.Form.Controls("新建表名").Value

'判断创建数据表的环境

If s="" Then

    MessageBox.Show("数据库名不能为空!")

    Return

End If

If s1 = "" Then

    MessageBox.Show("表名不能为空!")

    Return

End If

If GetTableNamesFromConnection("" & e.Form.Controls("数据库名").Value & "").Contains(s1)

    MessageBox.Show(s1 & " 外部表已经存在,不能创建!")

    Return

End If

For Each dt As datatable In DataTables

    If dt.Name.Contains(s1) Then

        MessageBox.Show(s1 & " 内部表已经存在,不能创建!")

        Return

    End If

Next

'创建外部表

Dim Builder1 As New ADOXBuilder(s)

Builder1.Open()

Dim tbl2 As ADOXTable = Builder1.NewTable(s1)

For Each dr As DataRow In DataTables("项目表管理").DataRows

    If dr("表名") = s1 Then

        With tbl2

            Select Case dr("列类型")

                Case "字符型"

                    .AddColumn(dr("列名") ,ADOXType.String, dr("字符长度"))

                Case "日期型"

                    .AddColumn(dr("列名") ,ADOXType.DateTime)

                Case "整数型"

                    .AddColumn(dr("列名") ,ADOXType.Integer)

                Case "短整数型"

                    .AddColumn(dr("列名") ,ADOXType.Short)

                Case "微整数型"

                    .AddColumn(dr("列名") ,ADOXType.Byte)

                Case "单精度小数型"

                    .AddColumn(dr("列名") ,ADOXType.Single)

                Case "双精度小数型"

                    .AddColumn(dr("列名") ,ADOXType.Double)

                Case "高精度小数型"

                    .AddColumn(dr("列名") ,ADOXType.Decimal)

                Case "逻辑型"

                    .AddColumn(dr("列名") ,ADOXType.Boolean)

                Case "备注型"

                    .AddColumn(dr("列名") ,ADOXType.Text)

            End Select

        End With

    End If

Next

Builder1.AddTable(tbl2, True, True)

Builder1.Close()

'创建查询表

Dim q As new OuterTableBuilder
q.TableName = s1
q.ConnectionName =s
q.SelectString = "Select * From [s1] "
q.Build

 

 

'重新打开项目,加载新增数据表

syscmd.Project.Open(ProjectFile)

MainTable = Tables(s1)

'数据表创建完成.


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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2010/8/25 15:40:00 [只看该作者]

请老大看看,就是不能自动加载到项目,不知为什么

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/25 15:48:00 [只看该作者]

你的表名不是“s1”,而是变量s1中存储的值,所以:

 

q.SelectString = "Select * From [s1] "

 

错了,应该:

q.SelectString = "Select * From [" & s1 & "] "

 

 

[此贴子已经被作者于2010-8-25 15:48:02编辑过]

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2010/8/25 16:14:00 [只看该作者]

老大,这样创建的表,重新打开项目后,就会消失,有没有办法能够让她保留下来

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/25 16:23:00 [只看该作者]

在AfterOpenProject设置代码,用OuterTableBuilder加载

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2010/8/25 16:51:00 [只看该作者]

根据我前面提供的代码,该如何设置,能指点一下吗
[此贴子已经被作者于2010-8-25 16:52:20编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/25 17:00:00 [只看该作者]

你动态增加一个外部表后,就在某个内部表中写入动态增加的表名,以及其数据源名称,在AfterOpenProject事件中逐行读取此内部表的数据,逐个增加外部表。

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