Foxtable(狐表)用户栏目专家坐堂 → 自动更新数据库


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

主题:自动更新数据库

帅哥哟,离线,有人找我吗?
大红袍
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/28 17:51:00 [只看该作者]

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:同步表结构_例子3.table

[此贴子已经被作者于2016/4/28 19:39:10编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/4/28 18:14:00 [只看该作者]

存在相同名字的表,但是目标数据库的表没有原数据表的列,想增加同名同类型的,我在例子中添加了相关代码,一直提示错误,问题在那里,该怎么修改呀?


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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/4/28 18:16:00 [只看该作者]

 Else
                If DataTables.Contains(tname) Then DataTables.Unload(tname)
                Dim Builder As New ADOXBuilder("temp")
                Builder.Open() '打开ADOXBuilder
                msgbox(tname)
                Dim tbl2 As ADOXTable = Builder.Tables(tname)
                'For Each dc As DataCol In DataTables(tname).DataCols
                'Dim DcDatatype As object
                'If dc.IsBoolean Then
                'DcDatatype = ADOXType. Boolean
                'tbl2.AddColumn(dc.name,DcDatatype)
                'ElseIf dc.IsDate Then
                'DcDatatype = ADOXType. DateTime
                'tbl2.AddColumn(dc.name,DcDatatype)
                'ElseIf dc.IsNumeric Then
                'If dc.datatype.Name = "Double" Then
                'DcDatatype = ADOXType.Double
                'ElseIf dc.datatype.Name = "Decimal"
                'DcDatatype = ADOXType.Decimal
                'End If
                'tbl2.AddColumn(dc.name,DcDatatype)
                'ElseIf dc.IsString Then
                'DcDatatype = ADOXType.String
                'tbl2.AddColumn(dc.name,DcDatatype,dc.MaxLength)
                'End If
                'Next
                'Builder.Close()

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/4/28 18:39:00 [只看该作者]

以上代码在执行到For Each dc As DataCol In DataTables(tname).DataCols时发生错误

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/4/28 19:13:00 [只看该作者]

更新数据库表的代码如下:

Dim dlg As new OpenFileDialog
dlg.InitialDirectory = ProjectPath
dlg.Filter = "Access文件|*.mdb"
If dlg.ShowDialog = DialogResult.OK Then
    msgbox("本例子只处理一种情况->没有的表动态新增")
    '默认同步项目目录下的 test03 test05 两个数据库
    Dim mdbs() As String = {"tea01.mdb","tea02.mdb","tea04.mdb"}
    If Connections.Contains("test") Then Connections.Delete("test")
    Connections.Add("test", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dlg.FileName & ";Persist Security Info=False")
    For Each mdb As String In mdbs
        If Connections.Contains("temp") Then Connections.Delete("temp")
        Connections.Add("temp", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ProjectPath & mdb & ";Persist Security Info=False")
        Dim tnames As List(Of String) = Connections("temp").GetTableNames
        For Each tname As String In Connections("test").GetTableNames
            msgbox(tname)
            If tnames.Contains(tname) = True Then '如果此表没有,就动态新增
msgbox(tnames.Contains(tname))
                If DataTables.Contains(tname) Then DataTables.Unload(tname)
                'Dim q As new OuterTableBuilder
                'q.TableName = tname
                'q.C
                'q.SelectString = "Select * Fr om {" & tname & "} Where 1=2"
                'q.Build
                Dim Builder As New ADOXBuilder("temp") '要指定数据源名称
                Dim tbl As ADOXTable
                Builder.Open()
                tbl = Builder.Tables(tname) '创建表
msgbox(1)
                For Each dc As DataCol In DataTables(tname).DataCols
                    Dim DcDatatype As object
                    If dc.IsBoolean Then
                        DcDatatype = ADOXType. Boolean
                        tbl.AddColumn(dc.name,DcDatatype)
                    ElseIf dc.IsDate Then
                        DcDatatype = ADOXType. DateTime
                        tbl.AddColumn(dc.name,DcDatatype)
                    ElseIf dc.IsNumeric Then
                        If dc.datatype.Name = "Double" Then
                            DcDatatype = ADOXType.Double
                        ElseIf dc.datatype.Name = "Decimal"
                            DcDatatype = ADOXType.Decimal
                        End If
                        tbl.AddColumn(dc.name,DcDatatype)
                    ElseIf dc.IsString Then
                        DcDatatype = ADOXType.String
                        tbl.AddColumn(dc.name,DcDatatype,dc.MaxLength)
                    End If
                Next
                Builder.AddTable(tbl, True, True) '增加表
                Builder.Close()
                msgbox(mdb & "新增【" & tname & "】表成功")
            End If
        Next
    Next
End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/28 19:25:00 [只看该作者]

自己看懂代码啊,我测试没问题啊。

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/4/28 19:34:00 [只看该作者]

你的代码是增加表,我的代码是想在表存在的情况下,如果没有相应的列则增加相应的列

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/28 19:37:00 [只看该作者]

 看21楼啊。

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15278 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/4/28 19:37:00 [只看该作者]

比如test01、test02都有表A,但是test01表中有姓名列、test02没有姓名列,想通过代码让test02也按test01的格式增加姓名列?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/28 19:40:00 [只看该作者]

哦,上传错了项目

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:同步表结构_例子3.table


 回到顶部
总数 39 上一页 1 2 3 4 下一页