请教大虾:vb中如何实现数据库的备份和恢复功能,数据库用access2000(紧急任务-30分)

b_jack 2004-10-27 08:59:01
请教大虾:我用vb做了一个图书管理系统,有删除功能,需要在上面加备份和恢复功能,请大虾指教,
最好有源代码!!!!
...全文
259 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2004-10-28
  • 打赏
  • 举报
回复
运行VB,在“工程-引用”菜单下引用 Microsoft Jet and Replication Objects 2.1 library
huzhishan 2004-10-28
  • 打赏
  • 举报
回复
Private Sub bak_Click()
On Error GoTo errmsg
Dim fso As New FileSystemObject
Dim strdbname As String


CommonDialog1.Filter = "Access Database (*.mdb)|*.mdb"
CommonDialog1.ShowSave
If Len(main_MDIform.CommonDialog1.FileName) > 0 Then
strdbname = main_MDIform.CommonDialog1.FileName
If InStr(strdbname, ".") = 0 Then
strdbname = strdbname & ".mdb"
End If
If Dir(strdbname) <> vbNullString Then
If MsgBox(strdbname & "已经存在,要替换该文件吗?", vbQuestion + vbYesNo, "提示") = vbYes Then
Kill strdbname
Else
Exit Sub
End If
End If
Else
Exit Sub
End If
If Len(strdbname) = 0 Then Exit Sub


fso.CopyFile App.Path & "\db.mdb", strdbname




MsgBox "数据库已经成功备份", 48, "提示"
Exit Sub
errmsg:
If Err.Number = 424 Then Exit Sub
MsgBox Err.Description, , " 提示"
End Sub


Private Sub rest_Click()
On Error GoTo errmsg

Dim fso As New FileSystemObject
Dim strdbname As String


CommonDialog1.Filter = "Access Database (*.mdb)|*.mdb"
CommonDialog1.ShowOpen
If Len(main_MDIform.CommonDialog1.FileName) > 0 Then
strdbname = main_MDIform.CommonDialog1.FileName
End If

If Len(strdbname) = 0 Then Exit Sub

If Not MsgBox("真的要恢复备份吗?最好在恢复前保存现有数据", vbQuestion + vbYesNo, "提示") = vbYes Then
Exit Sub
End If
DataEnvironment1.Connection1.Close
fso.CopyFile strdbname, App.Path & "\db.mdb"




MsgBox "数据已经成功恢复,系统自动退出后,请重新启动系统", 48, "提示"
End
Exit Sub
errmsg:
If Err.Number = 424 Then Exit Sub
MsgBox Err.Description, , " 提示"
End Sub




vbcrack 2004-10-28
  • 打赏
  • 举报
回复
Dim miJRO As JRO.JetEngine
Set miJRO = New JRO.JetEngine


请问该引用什么???
Blackstarhh 2004-10-28
  • 打赏
  • 举报
回复
就用FSO控件吧。

b_jack 2004-10-28
  • 打赏
  • 举报
回复
哦,我已经定义了Commondialog1,可是运行时出错了
提示: 实时错误“91”
对象变量或with块变量未定义
谢谢!!! 请问这是怎么回事?
b_jack 2004-10-28
  • 打赏
  • 举报
回复
出错提示:变量未定义,出错块停在Commondialog1上,烦请vbman2003指教?
在线等,我今天必须把他作完,谢谢了!!
vbman2003 2004-10-28
  • 打赏
  • 举报
回复

Option Explicit

Sub BackupMdb(StrBack As String)
Dim miJRO As JRO.JetEngine
Set miJRO = New JRO.JetEngine
miJRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & App.Path & "\Stipend.mdb;" _
& "Jet OLEDB:Database Password=123", _
"Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & StrBack & ";" _
& "Jet OLEDB:Database Password=123"
End Sub

'备份按键
Private Sub cmdBackup_Click()
Dim Str As String
CommonDialog1.Filter = "数据库文件(*.mdb)|*.mdb"
CommonDialog1.FilterIndex = 2
CommonDialog1.DialogTitle = "选择备份文件名称"
CommonDialog1.ShowOpen
Str = CommonDialog1.Filename
'检查目标文件名称是否存在,存在则要先删除
If Dir(Str) <> "" Then
Kill Str
End If
Call BackupMdb(Str)  '引用备份过程
MsgBox "数据备份完成!为了你的数据安全,请经常备份数据库。", _
vbOKOnly + vbExclamation, "提示"
End Sub

'恢复按键
Private Sub cmdRevert_Click()
Dim StrBack As String
Dim StrRevert As String
Dim X As String
CommonDialog1.Filter = "数据库文件(*.mdb)|*.mdb"
CommonDialog1.FilterIndex = 2
CommonDialog1.DialogTitle = "选择还原文件名称"
CommonDialog1.ShowOpen
StrBack = CommonDialog1.Filename
X = MsgBox("数据还原将用备份的数据库覆盖现有数据库," _
& "请做好现有数据库的备份。确认本次还原数据的操作吗?", _
vbOKCancel + vbExclamation, "提示")
If X = vbCancel Then Exit Sub
StrRevert = "" & App.Path & "\Stipend.mdb"
FileCopy StrBack, StrRevert
MsgBox "数据还原成功!", vbOKOnly + vbExclamation, "提示"
End Sub
of123 2004-10-28
  • 打赏
  • 举报
回复
以下是我 “备份"按钮 和 "恢复"按钮 功能,但是不可以执行,我在下面标注了一些问题,请大虾们指教,不胜感激,(在线等!!!!)小弟急用!!!!

备份子程序
********************************
Sub BackupMdb(StrBack As String) '备份子程序,请问备份文件目的路径和名称是什么意思??
'StrBack是备份文件目的路径和名称: 所生成的备份文件保存的位置和文件名
Dim miJRO As JRO.JetEngine
Set miJRO = New JRO.JetEngine
miJRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & App.Path & "\资源管理.mdb;" _ '这是我的源文件路径和名称,请看是否有错不????:最好用相对路径。否则程序安装到目标机会找不到文件。
& "Jet OLEDB:Database Password=abc", _
"Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & StrBack & ";" _
& "Jet OLEDB:Database Password=abc"
End Sub


下面是备份按钮的功能:
******************************
Private Sub command6_Click()

Dim Str As String
commondialog1.Filter = "数据库文件(*.mdb)|*.mdb" '在此行出错提示:对象变量或with块变量未设置,实时错误91,请问怎么改????:工程—部件菜单,添加 commondialog 控件,并拖一个到窗体上。
commondialog1.FilterIndex = 2
commondialog1.DialogTitle = "选择备份文件名称"
commondialog1.ShowOpen
Str = commondialog1.FileName
'检查目标文件名称是否存在,存在则要先删除
If Dir(Str) <> "" Then
Kill Str
End If
Call BackupMdb(Str)
MsgBox "数据备份完成!为了你的数据安全,请经常备份数据库。", _
vbOKOnly + vbExclamation, "提示"

End Sub



下面是恢复按钮的功能:我是不是要在通用过程中这样定义:Dim commondialog1 as Commondialog ??:不需要按上面的添加控件就ok.
**********************
Private Sub Command7_Click()

Dim StrBack As String
Dim StrRevert As String
Dim X As String
commondialog1.Filter = "数据库文件(*.db)|*.db"
commondialog1.FilterIndex = 2
commondialog1.DialogTitle = "选择还原文件名称"
commondialog1.ShowOpen
StrBack = commondialog1.FileName
X = MsgBox("数据还原将用备份的数据库覆盖现有数据库," _
& "请做好现有数据库的备份。确认本次还原数据的操作吗?", _
vbOKCancel + vbExclamation, "提示")
If X = vbCancel Then Exit Sub
StrRevert = "" & App.Path & "\Stipend.mdb"
FileCopy StrBack, StrRevert
MsgBox "数据还原成功!", vbOKOnly + vbExclamation, "提示"

End Sub
b_jack 2004-10-28
  • 打赏
  • 举报
回复
以下是我 “备份"按钮 和 "恢复"按钮 功能,但是不可以执行,我在下面标注了一些问题,请大虾们指教,不胜感激,(在线等!!!!)小弟急用!!!!

备份子程序
********************************
Sub BackupMdb(StrBack As String) '备份子程序,请问备份文件目的路径和名称是什么意思??
'StrBack是备份文件目的路径和名称
Dim miJRO As JRO.JetEngine
Set miJRO = New JRO.JetEngine
miJRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & App.Path & "C:\Documents and Settings\Administrator\My Documents\vb\资源管理.mdb;" _ '这是我的源文件路径和名称,请看是否有错不????
& "Jet OLEDB:Database Password=abc", _
"Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & StrBack & ";" _
& "Jet OLEDB:Database Password=abc"
End Sub


下面是备份按钮的功能:
******************************
Private Sub command6_Click()

Dim Str As String
commondialog1.Filter = "数据库文件(*.mdb)|*.mdb" '在此行出错提示:对象变量或with块变量未设置,实时错误91,请问怎么改????
commondialog1.FilterIndex = 2
commondialog1.DialogTitle = "选择备份文件名称"
commondialog1.ShowOpen
Str = commondialog1.FileName
'检查目标文件名称是否存在,存在则要先删除
If Dir(Str) <> "" Then
Kill Str
End If
Call BackupMdb(Str)
MsgBox "数据备份完成!为了你的数据安全,请经常备份数据库。", _
vbOKOnly + vbExclamation, "提示"

End Sub



下面是恢复按钮的功能:我是不是要在通用过程中这样定义:Dim commondialog1 as Commondialog ??
**********************
Private Sub Command7_Click()

Dim StrBack As String
Dim StrRevert As String
Dim X As String
commondialog1.Filter = "数据库文件(*.db)|*.db"
commondialog1.FilterIndex = 2
commondialog1.DialogTitle = "选择还原文件名称"
commondialog1.ShowOpen
StrBack = commondialog1.FileName
X = MsgBox("数据还原将用备份的数据库覆盖现有数据库," _
& "请做好现有数据库的备份。确认本次还原数据的操作吗?", _
vbOKCancel + vbExclamation, "提示")
If X = vbCancel Then Exit Sub
StrRevert = "" & App.Path & "\Stipend.mdb"
FileCopy StrBack, StrRevert
MsgBox "数据还原成功!", vbOKOnly + vbExclamation, "提示"

End Sub


b_jack 2004-10-27
  • 打赏
  • 举报
回复
出错提示"用户定义类型未定义"miJRO As jro.JetEngine请给出jro.JetEngine的定义类型
希望自由风快给回复 ,我急用!!谢谢!!

Free_Windy 2004-10-27
  • 打赏
  • 举报
回复
备份按钮
Private Sub Command1_Click()
Dim miJRO As jro.JetEngine
Set miJRO = New jro.JetEngine
miJRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & App.Path & "\DBName.mdb;" _
& "Jet OLEDB:Database Password=abc", _
"Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & strBack & ";" _
& "Jet OLEDB:Database Password=abc"

End Sub
********************************************
还原按钮
Private Sub Command2_Click()
Dim StrBack As String
Dim StrRevert As String
Dim X As String
CommonDialog1.Filter = "数据库文件(*.db)|*.db"
CommonDialog1.FilterIndex = 2
CommonDialog1.DialogTitle = "选择还原文件名称"
CommonDialog1.ShowOpen
StrBack = CommonDialog1.Filename
X = MsgBox("数据还原将用备份的数据库覆盖现有数据库," _
& "请做好现有数据库的备份。确认本次还原数据的操作吗?", _
vbOKCancel + vbExclamation, "提示")
If X = vbCancel Then Exit Sub
StrRevert = "" & App.Path & "\Stipend.mdb"
FileCopy StrBack, StrRevert
MsgBox "数据还原成功!", vbOKOnly + vbExclamation, "提示"


End Sub
b_jack 2004-10-27
  • 打赏
  • 举报
回复
谢谢vbman2003的指教 可是我还是有点不懂,界面上我应该有“备份”和“恢复”两个按钮,可以再详细一点吗,能把那些我自己需要个改动的地方给标出来吗? 我是新手,望多多指教不胜感激,谢谢!!
vbman2003 2004-10-27
  • 打赏
  • 举报
回复
用复制方法还原数据
Dim StrBack As String
Dim StrRevert As String
Dim X As String
CommonDialog1.Filter = "数据库文件(*.db)|*.db"
CommonDialog1.FilterIndex = 2
CommonDialog1.DialogTitle = "选择还原文件名称"
CommonDialog1.ShowOpen
StrBack = CommonDialog1.Filename
X = MsgBox("数据还原将用备份的数据库覆盖现有数据库," _
& "请做好现有数据库的备份。确认本次还原数据的操作吗?", _
vbOKCancel + vbExclamation, "提示")
If X = vbCancel Then Exit Sub
StrRevert = "" & App.Path & "\Stipend.mdb"
FileCopy StrBack, StrRevert
MsgBox "数据还原成功!", vbOKOnly + vbExclamation, "提示"
vbman2003 2004-10-27
  • 打赏
  • 举报
回复
Access数据库的修复、压缩、备份:

在工程中引用 Microsoft Jet and Replication Objects 2.1 library

Sub BackupMdb(strBack As String)
Dim miJRO As jro.JetEngine
Set miJRO = New jro.JetEngine
miJRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & App.Path & "\DBName.mdb;" _
& "Jet OLEDB:Database Password=abc", _
"Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & strBack & ";" _
& "Jet OLEDB:Database Password=abc"
End Sub
其中strBack是修复后数据库文件存放路径和名称字符串。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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