我想在VB中用“备份”、“恢复”两个按钮对ACCESS数据库进行备份和修复,虽然看了网上很多例子,但是还不是很明白,比如:在备份时出现“...数据库被ADMIN以排它方式打开...”等,但关闭数据库又不能操作,还有如果已经在某个位置存在备份文件,若在同一位置放置备份文件该如何覆盖原来的备份文件,(能不能在备份还原的时候用户自己选择还原文件和备份文件的位置)如何把这些如何解决,有没有在数据库打开时可以备份的。还有一个问题:我在查询时用DATAGRID显示了一些数据(温度和其相关的值,但没有具体的函数关系式),我想用一个坐标图,当我按下“图形显示”按钮时动态的在坐标图上显示这些坐标点(温度和其相关的值),并用直线把这些点依次连起来,请各位给我这两个问题一个具体详细的源码。
我初学实在是不会弄,不知道把问题说清楚了没有,望各位鼎力帮助,小弟先谢谢了!!在线等
Set miJRO = New jro.JetEngine
miJRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & App.Path & "\youdb.mdb;" _
& "Jet OLEDB:Database Password=5966090", _
"Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source="& App.path &"\newdb.mdb;" _
& "Jet OLEDB:Database Password=abc"这样修复压缩备份一举三得,还原就用简装的复制方法就可以了
'参数:fullFileName 完整的文件名
'返回:成功1,失败0
Public Function BackupDB(fullFileName As String) As Integer
On Error GoTo err
If fullFileName <> "" Then
FileCopy sG_DBPath, fullFileName
BackupDB = 1
Else
BackupDB = 0
End If
Exit Function
err:
BackupDB = 0
End Function'功能:恢复数据库
'参数:sFullBakFileName 备份文件的完整路径及文件名
'返回:成功1,失败0
Public Function RestoreDB(sFullBakFileName As String) As Integer
On Error GoTo err
Kill sG_DBPath
FileCopy sFullBakFileName, sG_DBPath '此时文件不应该被打开
RestoreDB = 1
Exit Function
err:
RestoreDB = 0
End Function'功能:压缩数据库文件
'参数:无
'返回:成功1,失败0
Public Function CompactDB() As Integer
'压缩后数据库会更改记录位置,重新排序
'引用Microsoft Jet and Replication Object(msjro.dll)
Dim jro As New jro.JetEngine
Screen.MousePointer = 11
On Error GoTo err
jro.CompactDatabase sPro & sG_DBPath & sDBPWD, sPro & _
sG_AppPath & "tmp.mdb;" & _
"jet oledb:encrypt database=true;" & sDBPWD
FileCopy sG_AppPath & "tmp.mdb", sG_DBPath
Kill sG_AppPath & "tmp.mdb"
Set jro = Nothing
Screen.MousePointer = 0
CompactDB = 1
Exit Function
err:
Screen.MousePointer = 0
Set jro = Nothing
CompactDB = 0
End Function第二个用CHART控件
首先感谢能给我很详细的大回复!能不能麻烦你把“备份”、“按钮”下的详细代码给我,还有,如何断开数据库,我用adocon.close但是执行行说数据库对象关闭,不允许操作,怎么办?谢谢!期盼你的回复,谢谢!
备份子过程:
Sub BackupMdb(StrBack As String)
Dim jro As jro.JetEngine
Set jro = New jro.JetEngine
jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=g:ThermalDBase.mdb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:ThermalDBase.mdb;Jet OLEDB:Engine Type=5"
End Sub
窗体上备份按钮的代码:
Private Sub cmdCopy_Click()
On Error GoTo errcopy
Dim Str As String
CommonDialog1.Filter = "数据库文件(*.mdb)|*.mdb"
CommonDialog1.FilterIndex = 2
CommonDialog1.DialogTitle = "选择备份文件名称"
CommonDialog1.ShowOpen
Str = CommonDialog1.FileName
If adoCon.State <> adStateClosed Then
adoCon.Close
Set adoCon = Nothing
End If
'If adoCon.State = adStateOpen Then adoCon.Close: Set aodcon = Nothing
Call BackupMdb(Str) '引用备份过程
MsgBox "数据备份完成!为了你的数据安全,请经常备份数据库!", vbOKOnly + vbExclamation, "系统提示"
errcopy:
MsgBox Err.Description
End Sub
上面判断数据库关闭的条件语句没有作用,备份时总是出现“...数据库以排他方式打开....”,若在窗体载入的代码下用adocon.close,则出现“对象关闭,不允许操作”,实在不知道如何处理?麻烦大家帮忙一下,谢谢!急!
下线了......
还是出现“尝试打开的数据库已经被用户admin以排它方式打开...”,出错在备份子过程中的最后一行:
jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=g:\ThermalDBase.mdb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\ThermalDBase.mdb;Jet OLEDB:Engine Type=5"
再次感谢你的回复!