设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2425|回复: 6
打印 上一主题 下一主题

[Access本身] 关于局域网数据库的更新问题

[复制链接]
跳转到指定楼层
1#
发表于 2011-6-15 20:08:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    我在公司做了一个数据库,用的是链接表,将MDE文件分发给每个用户,后台MDB文件放在一个共享文件夹中,请教如何实现数据库的同步,即当我每次要更改数据库程序时必须要求每台电脑复制新的MDE文件才能用,有没有办法让这个同步?因为如果将MDE文件也放在共享文件中,如果所有电脑都去开启同一个数据库的话会很慢很慢,求助如何实现

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享分享 分享淘帖1 订阅订阅
2#
发表于 2011-6-15 20:15:37 | 只看该作者
我用了一个批处理:copy V:\PMC\IE生产管理系统\IE管理系统.mdE/D:\IE生产管理系统(Y),放到客户端启动,每次客户端开机后自动运行,可达到自动更新目的。
3#
 楼主| 发表于 2011-6-15 20:23:04 | 只看该作者
回复 fine88888888 的帖子

这个方法我也用过,但是如果客户端不重启电脑就不行了,总不会每次要求用户去点击BAT文件吧,有没有别的办法,比如说用VB做个外壳之类的,或者用MDE自动开启时检测是否为最新版本,如何不是最新版本则复制新版本的MDE文件,而不是每次都去复制MDE文件
4#
发表于 2011-6-15 20:27:58 | 只看该作者
哦,,我每次更改后都会把版本号更改一次,如V7,用户登陆时就会与后台数据库的版本号对比,不等於就提示:版本太低,请升级!
5#
发表于 2011-6-15 21:00:23 | 只看该作者
这里给一段在线升级的代码:
建立模块1:
  1. Public Function GetVersion(FileName As String, strPWS As String) As String
  2.     Dim rst As ADODB.Recordset
  3.     strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & FileName & ";jet oledb:database password='" & strPWS & "'"
  4.     strSQL = "select * from tblversion"
  5.     Set rst = New ADODB.Recordset
  6.     rst.CursorLocation = adUseClient
  7.     rst.Open strSQL, strConn
  8.     rst.MoveFirst
  9.     GetVersion = rst!Version
  10.     rst.Close
  11.     Set rst = Nothing
  12. End Function
复制代码
主控界面升级代码:
  1. Dim appAccess As Access.Application
  2. Dim db As Database
  3. Public Sub OpenDB()
  4.     Dim strDB As String
  5.     strDB = CurrentProject.Path & "\EmpInfSys.mdb"
  6.     Set appAccess = CreateObject("Access.Application")
  7.     Set db = appAccess.DBEngine.OpenDatabase(strDB, False, False, ";PWD=")
  8.     appAccess.OpenCurrentDatabase strDB
  9.     If Val(SysCmd(acSysCmdAccessVer)) = 9 Then
  10.         appAccess.Visible = True
  11.     End If
  12.     DoCmd.Quit
  13. End Sub


  14. Private Sub Form_Load()
  15.     DoCmd.RunCommand acCmdAppMinimize
  16.    
  17.   Dim strFileName As String
  18.   strFileName = "\\szas3k01\CNCoats\SCTTC\Special Folder\EmplnfSys\network\networkTest.mdb"
  19.   If Dir(strFileName, vbDirectory) = "" Then
  20.   MsgBox "系统检测到网络不通,不能启动系统.可能是本机网络不通或是管理员在维护后台数据,请稍后再试或联系东东跟进!", vbOKOnly, "辅助系统络网检测提示"
  21.   DoCmd.Quit
  22.   End If
  23.    
  24.    
  25.    
  26.     Dim SourceFile As String
  27.     Dim SourceFile1 As String
  28.     Dim DestinationFile As String
  29.     Dim DestinationFile1 As String
  30.     Dim localVision As String
  31.     Dim serverVision As String
  32. '后台版本和前台版本文件
  33.     SourceFile = "\\szas3k01\CNCoats\SCTTC\Special Folder\EmplnfSys\NewVersion\EmpInfSys\Version.mdb"
  34.     DestinationFile = CurrentProject.Path + "\Version.mdb"
  35.     '后台数据库和前台数据库文件
  36.     SourceFile1 = "\\szas3k01\CNCoats\SCTTC\Special Folder\EmplnfSys\NewVersion\EmpInfSys\后台数据库.mdb"
  37.     DestinationFile1 = CurrentProject.Path + "\后台数据库.mdb"
  38.     '检测路径(修改路径后未登录的用户将因此而无法登录)。
  39.     If Dir(SourceFile) = "" Then
  40.         MsgBox SourceFile & vbCrLf & "网路不通或文件不存在!", vbCritical, "提示"
  41.         Exit Sub
  42.     End If
  43.     localVision = GetVersion(DestinationFile, "")
  44.     serverVision = GetVersion(SourceFile, "")
  45.     If localVision = serverVision Then
  46.         OpenDB
  47.     Else
  48.         MsgBox "检测有新版本系统发布,现在开始在线升级系统! 请等候提示......", vbInformation, "提示"
  49.         FileCopy SourceFile, DestinationFile
  50.         FileCopy SourceFile1, DestinationFile1
  51.         MsgBox "版本升级结束,欢迎登陆系统, 感谢关注和支持罗伊软件工作室作品!", vbInformation, "提示"
  52.         OpenDB
  53.     End If
  54. End Sub

  55. Private Sub Form_Open(Cancel As Integer)
  56. DoCmd.RunCommand acCmdAppMinimize
  57. End Sub
复制代码
请把必要的地址改为相应的数据。
6#
 楼主| 发表于 2011-6-15 21:27:24 | 只看该作者
感谢roych版主!
7#
发表于 2011-6-21 16:28:25 | 只看该作者
学习了,感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-28 01:02 , Processed in 0.091744 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表