Foxtable(狐表)用户栏目专家坐堂 → 如何初始化外部access数据库


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

主题:如何初始化外部access数据库

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


加好友 发短信
等级:幼狐 帖子:157 积分:2159 威望:0 精华:0 注册:2011/8/1 14:23:00
如何初始化外部access数据库  发帖心情 Post By:2013/2/20 15:56:00 [只看该作者]

我做了个小财务软件,第二年需要另建数据库,我的思路是复制老的数据库,然后清空
代码如下:
If MessageBox.Show("本系统是单机版,且没有新建年度数据库时,让系统自己新建,选择 是" & vblf & " 系统是其他情况时,比如已经新建完数据库,或者是网络数据库 选择 否","新建数据库",MessageBoxButtons.YesNo,MessageBoxIcon.Question)=DialogResult.Yes Then
    Dim Val As String
    If InputValue(Val, "自定义名称","请输入新的年度数据库名称:" & vblf & "建议数据库的名称和接下来的数据源配置名称为年度 ") Then
        If FileSys.FileExists(ProjectPath & "images\" & val & ".mdb") Then
            If Messagebox.Show("文件已经存在!  如果继续创建将丢失数据, 想覆盖么?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning) =DialogResult.OK Then
                FileSys.CopyFile(ProjectPath & "images\njcwt.mdb", ProjectPath & "images\" & val & ".mdb",True)
                MessageBox.Show("覆盖式创建年度数据库成功")
            Else
                Return
            End If
        Else
            FileSys.CopyFile(ProjectPath & "images\njcwt.mdb", ProjectPath & "images\" & val & ".mdb")
            Connections.Add(val,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ProjectPath & "images\" & val & ".mdb;Persist Security Info=False")
            Dim cn As Connection = Connections(val)
            Dim Builder As New ADOXBuilder(val) '数据源名称
            Builder.Open()
            For Each tbl As  ADOXTable In builder.Tables
                'tbl 清空代码如何写
            Next
            Builder.Close()
            MessageBox.Show("创建年度数据库成功")
        End If
    End If
Else
    Syscmd.Project.ModifyOuterDataSource()
End If

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/20 16:09:00 [只看该作者]

 楼主,你说的清空是指数据,还是只表结构?

 如果是表结构的话,就没有这种必要了。如果是数据的话,直接用sql语句清空就行了。

 如果,你想删除原来的表,重新建立各个表?


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/20 16:15:00 [只看该作者]

 方法一:

Dim cmd As New SQLCommand
For Each name As String In Connections("xxxxxx").GetTableNames
    cmd.CommandText = "delete from {" & name & "}"
    cmd.ExecuteNonQuery
Next

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/20 16:26:00 [只看该作者]

 方法二,复制表

Dim cmd As New SQLCommand
For Each name As String In Connections("xxxxxx").GetTableNames
    cmd.CommandText = "select * into 新表 from {" & name & "} where 1=2"
    cmd.ExecuteNonQuery
    cmd.CommandText = "drop table {" & name & "}"
    cmd.ExecuteNonQuery
    cmd.CommandText = "select * into " & name & " from {新表}"
    cmd.ExecuteNonQuery
    cmd.CommandText = "drop table {新表}"
    cmd.ExecuteNonQuery
Next

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


加好友 发短信
等级:幼狐 帖子:157 积分:2159 威望:0 精华:0 注册:2011/8/1 14:23:00
  发帖心情 Post By:2013/2/20 19:04:00 [只看该作者]

谢谢,豁然开朗,  你真厉害帅哥,在线噢!
lin_hailun

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


加好友 发短信
等级:幼狐 帖子:157 积分:2159 威望:0 精华:0 注册:2011/8/1 14:23:00
  发帖心情 Post By:2013/2/20 20:30:00 [只看该作者]

呵呵,少了一句  cmd.C
delete from 找不到具体数据源

在此补上,防止其他人走弯路

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


加好友 发短信
等级:幼狐 帖子:157 积分:2159 威望:0 精华:0 注册:2011/8/1 14:23:00
  发帖心情 Post By:2013/2/20 20:31:00 [只看该作者]

 cmd.ConnectionName = val

 回到顶部