北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
'作者:张志(竹笛)
'单位:艾盟威软件有限公司
'技术站点:http://www.accessoft.com
'公司站点:http://www.umvsoft.com
'说明:为祝贺本人获得2007年度微软最有价值专家(MVP)特分享本程序,您可以免费使用本程序,但请保留作者信息,如果您有更好的建议,请与我联系
'修订历史:2007-7-10
(Q)如何在局域网上实现自动升级?
(A)
1.建一个启动程序log_on.mdb
2.判断本地主程序与服务器端主程序的版本是否一致
采用GetVersion函数来获得版本号
Public Function GetVersion(FileName As String, strPWS As String) As String
Dim rst As ADODB.Recordset
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & FileName & ";jet oledb:database password='" & strPWS & "'"
strSQL = "select * from tblversion"
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open strSQL, strConn
rst.MoveFirst
GetVersion = rst!Version
rst.Close
Set rst = Nothing
End Function
3.将服务器端的主程序替换本地主程序
Dim SourceFile As String
Dim DestinationFile As String
Dim localVision As String
Dim serverVision As String
' 指定服务器上的文件名。
' SourceFile = "\\172.16.172.6\server\main.mdb"
SourceFile = CurrentProject.Path + "\server\main.mdb"
' 指定本地文件名。
DestinationFile = CurrentProject.Path + "\main.mdb"
If Dir(SourceFile) = "" Then
MsgBox SourceFile & vbCrLf & "网路不通或文件不存在!", vbCritical, "提示"
Exit Sub
End If
'获得本地主程序的版本号
localVision = GetVersion(DestinationFile, "")
'获得服务器端升级文件的版本号
serverVision = GetVersion(SourceFile, "")
If localVision = serverVision Then
'运行主程序
OpenDB
Else
MsgBox "版本不同,现在开始升级!", vbInformation, "提示"
FileCopy SourceFile, DestinationFile
MsgBox "版本升级结束!", vbInformation, "提示"
'运行主程序
OpenDB
End If
4.替换结束后运行主程序
Public Sub OpenDB()
Dim strDB As String
strDB = CurrentProject.Path & "\main.mdb"
Set appAccess = CreateObject("Access.Application")
Set db = appAccess.DBEngine.OpenDatabase(strDB, False, False, ";PWD=")
appAccess.OpenCurrentDatabase strDB
If Val(SysCmd(acSysCmdAccessVer)) = 9 Then
appAccess.Visible = True
End If
DoCmd.Quit
End Sub
///////////////////////////////////
上面代码运行到最后 DoCmd.Quit的时候,没能打开更新的新文件,而是两个数据库都关闭了
另外如果这个功能不好弄,旧平台的自动更新是不是有什么快速的方法可以解决,麻烦指定,谢谢