WIN98下,Access数据库恢复问题,提示“拒绝的权限”

jonason6 2003-09-21 02:47:43
我是直接把备份好的数据库改名为软件所用的文件名,在win2000中是可以的,但98下就出现了上述错误,代码如下:
Dim Bfile As String
Dim Fso As New FileSystemObject
Dim FsoDbRestore As File

CdlBackup.Filter = "Backup File(*.BAK)|*.BAK|All Files(*.*)|*.*"
CdlBackup.ShowOpen
Bfile = CdlBackup.Filename

Set FsoDbRestore = Fso.GetFile(Bfile)
FsoDbRestore.Copy (App.Path & "\sqinfo.mdb")
就是执行到最后一行报的错,可能是因为正在使用的缘故,怎样才能强行覆盖呢
...全文
113 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2003-09-21
  • 打赏
  • 举报
回复
首先要看你是打算备份全部数据,还是打算备份部分数据。
如果你打算备份全部数据,你可以使用VB的FileCopy命令进行文件拷贝,将源文件拷贝至目标磁盘。当然如果你的文件大小超过一张软盘的尺寸,你可以使用文件读写的办法将文件分成几部分保存在软盘上。如果文件非常大,可以使用WinZIP等软件压缩保存
如果你只打算备份部分数据,你可以使用SQL的Insert into命令,如下:
Set dbs = OpenDatabase("Northwind.mdb")
dbs.Execute " INSERT INTO Customers IN 'C:\TEMP.MDB'" _
& "SELECT * " _
& "FROM [New Customers];"
dbs.Close
rainstormmaster 2003-09-21
  • 打赏
  • 举报
回复
一个比较完整的备份函数,供参考
'以下是对该函数的详细解释,其中有些函数要靠自己编

Public Function CBNBackupDatabase() As Boolean
Dim sFile As String
Dim sSQL As String
Dim lTimeOut As Long
Dim adoTempRS As ADODB.Recordset

On Error GoTo ErrLabel

With gDBRecordConn '本连接为ADODB.Recordset类型的连接

'函数gclsInclude.MyGetFileName的功能是得到要备份的程序文件名称,会显示保存画面
sFile = gclsInclude.MyGetFileName(False, _
"数据库备份文件 (*.BAK)|*.bak", , _
gTAppLicInfo.FileDBRestore, _
"请选择存储的数据库备份文件 ")
If sFile <> "" Then '如果文件名称和路径合法的话,函数gclsInclude.MyGetFileName会返回一个非空的字符串
DoEvents '给鼠标足够的时间显示漏斗状态
Screen.MousePointer = vbHourglass '鼠标显示漏斗为忙的状态
DoEvents
gclsCommon.CBNSplashShow '本函数将出现一个画面,显示备份的进度
gclsCommon.CBNSplashSetMessage "正在备份数据库" '在进度上面显示“正在备份数据库……”的文字动画
DoEvents '给函数gclsCommon.CBNSplashShow足够的时间显示文字动画
sSQL = "USE master" '使用master数据库进行工作
.Execute sSQL '同上
'看一下当前有那些系统设备在使用 gTAppLicInfo.SoftSQLDBase 数据库,其中,gTAppLicInfo.SoftSQLDBase 数据库是被备份的SQL数据库名称
Set adoTempRS = gDBRecordConn.Execute("SELECT * FROM sysdevices WHERE name = '" & gTAppLicInfo.SoftSQLDBase & "'")
If adoTempRS.RecordCount = 0 Then '如果没有人在使用要备份的饿数据库,则建立一个类型为disk的设备,同时开辟一个备份文件名称
sSQL = "EXEC sp_addumpdevice 'disk', '" & gTAppLicInfo.SoftSQLDBase & "','" & sFile & "'"
.Execute sSQL
End If
'由于备份的时间比较长,因此要将ADO连接gDBRecordConn的命令超时延长,但要先将以前的超时使用变量lTimeOut保存下来
lTimeOut = gDBRecordConn.CommandTimeout
'根据需要将超时定为需要的值,这里是500
.CommandTimeout = 500
'开始备份数据库……
sSQL = "BACKUP DATABASE " & gTAppLicInfo.SoftSQLDBase & " TO " & gTAppLicInfo.SoftSQLDBase
.Execute sSQL
'备份完毕后将主ADO连接gDBRecordConn还原
sSQL = "USE " & gTAppLicInfo.SoftSQLDBase
.Execute sSQL
'将主ADO连接gDBRecordConn的超时设置还原
.CommandTimeout = lTimeOut
'如果没有任何错误,本函数将返回TRUE
CBNBackupDatabase = True
End If
End With
ErrLabel:
If Err Then
MsgBox Error, vbCritical '如果出错,将显示错误
End If
' Resume Next
gclsCommon.CBNSplashUnload '将显示备份进度的Splash窗口卸载
gDBRecordConn.CommandTimeout = lTimeOut '还原连接的超时
Screen.MousePointer = vbNormal '鼠标显示正常
End Function
jonason6 2003-09-21
  • 打赏
  • 举报
回复
我是直接把备份好的数据库改名为软件所用的文件名,替换原来的数据库文件,在win2000中是可以的,但98下就出现了“拒绝的权限”的错误,代码如下:
Dim Bfile As String
Dim Fso As New FileSystemObject
Dim FsoDbRestore As File

CdlBackup.Filter = "Backup File(*.BAK)|*.BAK|All Files(*.*)|*.*"
CdlBackup.ShowOpen
Bfile = CdlBackup.Filename

Set FsoDbRestore = Fso.GetFile(Bfile)
FsoDbRestore.Copy (App.Path & "\sqinfo.mdb")
就是执行到最后一行报的错,可能是因为mdb文件正在使用的缘故,可是win2000下就可以覆盖掉呀,98下怎样才能强行覆盖呢

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧