以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 如何初始化外部access数据库 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=28856) |
-- 作者:410109296 -- 发布时间:2013/2/20 15:56:00 -- 如何初始化外部access数据库 我做了个小财务软件,第二年需要另建数据库,我的思路是复制老的数据库,然后清空 代码如下: 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 -- 发布时间:2013/2/20 16:09:00 -- 楼主,你说的清空是指数据,还是只表结构? 如果是表结构的话,就没有这种必要了。如果是数据的话,直接用sql语句清空就行了。 如果,你想删除原来的表,重新建立各个表? |
-- 作者:lin_hailun -- 发布时间: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 -- 发布时间: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 -- 发布时间:2013/2/20 19:04:00 -- 谢谢,豁然开朗, 你真厉害 lin_hailun
|
-- 作者:410109296 -- 发布时间:2013/2/20 20:30:00 -- 呵呵,少了一句 cmd.C delete from 找不到具体数据源 在此补上,防止其他人走弯路
|
-- 作者:410109296 -- 发布时间:2013/2/20 20:31:00 -- cmd.ConnectionName = val |