(VBA学习心得)平台自动升级的批处理文件方法.
时 间:2011-12-30 14:44:17
作 者:何必见戴 ID:13894 城市:厦门
摘 要:实现的步骤,和竹笛老大的获取版本号对比差异来进行升级的思路基本一致.主要是想实现通过版本号的变化实现软件所有文件的覆盖升级.但是由于单位服务器密码在外网登陆的时候没有办法自动获取,因此我选取了我们部门肯定可以访问得到的域共享文件夹作为升级文件的存放位置.看此文照搬代码的必要条件就一个:你在access开发平台上进行开发。如果不是,可借鉴其中的实现机制。
正 文:
首先,向竹笛老师请教了很多Access开发平台的问题,十分感谢!
好的一步一步来吧
1、我们知道access开发平台的版本号储存在sys_tblParameter表的Version字段里,那么这个字段是数据库后台表,如果更新的话是同步更新的,不存在对比差异问题。所以我们需要在前台建立一个新表来储存“旧的”版本号
2、我们在usysfrmOption_child窗体的txtVer更新后事件中写入以下代码.
'把版本号和更新时间保存到登陆框
DoCmd.SetWarnings False
DoCmd.RunSQL "Update 登陆窗体Version set LoginVersion='" & Me.txtVer & "',UpdateTime='" & Format(Now, "yyyy年m月d日h时m分") & "' where LoginName='当前版本号'"
DoCmd.SetWarnings True
再在usysfrmlogin窗体中添加版本号和更新时间两个控件,便可在登录时看到更新后的版本号和更新时间了.如下图:
3.在你的当前软件路径下创建一个bat文件,(即文本文件后缀改成bat).命名为"自动升级.bat"写入以下代码.
@echo off
color 9F
title [自动升级程序]
:star
SET wait=ping -n 2 127.0.0.1 ^>^nul
for /l %%n in (10,-1,0) do (
rem cls
echo **************************************
echo.
echo %%n秒后开始自动更新,请耐心等待...
echo.
echo **************************************
%wait%
cls
)
Xcopy "\\219.229.62.31\教务处\数据库文件\升级文件" "d:\教务处工作流程管理系统" /S /E /V /Y
)
REGSVR32.EXE /s MSCOMCTL.OCX
REGSVR32.EXE /s MSCOMCT2.OCX
REGSVR32.EXE /s TEECHART7.ocx
start "" "D:\教务处工作流程管理系统\accdev.mde"
P.S:这是一个10秒倒计时自动复制所要更新文件夹和子目录所有文件,注册相关控件,并在更新后打开平台的代码.路径为我自己的固定路径,有需要的同志可根据自己的需要修改.
4.在usysfrmmain窗体的load事件中写入以下代码:
'实现自动升级的版本号对比功能
'=======================================================================
'=======================================================================
'=======================================================================
Dim rst As Object
Dim rst1 As Object
Set rst = CurrentDb.OpenRecordset("Select * FROM 登陆窗体Version Where LoginName='当前版本号'", dbOpenDynaset, dbSeeChanges)
rst.MoveFirst
Set rst1 = CurrentDb.OpenRecordset("Select * FROM sys_tblParameter Where version='" & rst!LoginVersion & "'", 2, 512)
If rst1.RecordCount = 0 Then
MsgBox "您的软件不是最新版本,现在将更新您的软件", vbOKOnly, "重要提示"
DoCmd.Close
Shell CurrentProject.Path & "\点此升级.bat ", vbNormalFocus
'把登陆窗体的标记值改为1,如果为0的话会启动自定义的退出对话框
Forms!usysfrmlogin.Label15.Tag = 1
DoCmd.Quit acQuitSaveAll
'打开升级文件
Exit Sub
End If
Set rst = Nothing
Set rst1 = Nothing
'=======================================================================
'=======================================================================
'=======================================================================
P.S: 这段代码依次实现了版本的对比,平台的关闭和批处理文件"自动升级.bat"的打开.
这里要注意的是,因为 Forms!usysfrmlogin.Label15.Tag 在初始化的时候为0,如果不改为其他值的话,平台的自定义退出窗口会弹出,所以把此值改掉即可.当然啦,升级后仍然会恢复成平台的自定义退出窗口.
5.经过这样一系列的设置,可以运行一下看看了,假定你现在的软件版本号和系统的版本号不一致,那么应该会出现如下画面
(1)、登录后:
(2)、按确定后:
结束后会显示复制了多少个文件等等
(3)、升级成功后
到此,告一段落~
Access快速开发平台QQ群 (群号:321554481) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)