设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[Access本身] 链接表的问题

[复制链接]
跳转到指定楼层
1#
发表于 2013-1-23 11:19:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
A机和B机由RJ45双绞线直联,后台数据库(mdb)在A机的一共享文件夹中。
A、B两机上各有前台程序(mde),都采用链接后台数据库的表的方式,但只要A机打开了其前台程序,B机的前台程序执行就极慢。
请问:什么原因?如何解决?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2013-1-24 11:29:20 | 只看该作者
本帖最后由 roych 于 2013-1-24 11:31 编辑

这个网络连接方式没试过,我们用域管理用户似乎并没有什么大问题 ,恕我帮不到什么忙,这里给个建议吧。不妨建立一个数据较少的表(例如10W条以下)先测试下,如果也是同样,可能是联网方式存在问题,否则可能是数据太大或者查询尚未优化等原因导致读取较慢。
3#
 楼主| 发表于 2013-1-24 14:55:51 | 只看该作者
roych 发表于 2013-1-24 11:29
这个网络连接方式没试过,我们用域管理用户似乎并没有什么大问题 ,恕我帮不到什么忙,这里给个建议吧。不妨 ...

问题是:A机打开其上的管理程序后,它只是链接着后台的表,在不对任一表进行操作的时候,B机上运行马上就慢得出奇。
4#
 楼主| 发表于 2013-1-24 15:30:59 | 只看该作者
roych 发表于 2013-1-24 11:29
这个网络连接方式没试过,我们用域管理用户似乎并没有什么大问题 ,恕我帮不到什么忙,这里给个建议吧。不妨 ...

两机改为都通过无线路由联接的局域网,情况仍无改善。是否是后台数据库名.ldb锁定造成的?可这个文件的出现在Access中又是无法避免的。
5#
发表于 2013-1-25 01:02:24 | 只看该作者
应该跟ldb文件没关系的。我们公司同时登录的用户十几个都没问题。你不妨试试A机先不开,只用B机访问,看看读取速度有没有改善。
由于条件所限,暂无法帮你测试,请见谅。
6#
 楼主| 发表于 2013-1-25 09:00:55 | 只看该作者
roych 发表于 2013-1-25 01:02
应该跟ldb文件没关系的。我们公司同时登录的用户十几个都没问题。你不妨试试A机先不开,只用B机访问,看看读 ...

A机只要不打开其管理程序,B机的执行速度就很快。请帮助分析一下,在A机的mde管理程序中,都有哪些情况会造成这种现象?谢谢
7#
发表于 2013-1-25 11:49:34 | 只看该作者
koutx 发表于 2013-1-25 09:00
A机只要不打开其管理程序,B机的执行速度就很快。请帮助分析一下,在A机的mde管理程序中,都有哪些情况会造 ...

有两个问题我想了解下:
1、后台是直接链接读取,还是通过ADO(或者DAO)进行数据读取?如果是后者,可能会因为游标类型和锁定类型对数据的锁定有一定的影响。
2、A机开启或不开启,对于B机打开登录窗体的速度有没有影响?如果不开启时也读取较慢,可以用以下代码测试下。此外,还可以考虑建壳,然后通过shell函数来处理(论坛里有江羽的例子)。
  1. Dim appAccess As Access.Application
  2. Dim db As Database
  3. Public Sub OpenDB()
  4. 'run the main program main.mdb
  5. '运行主程序
  6.     Dim strDB As String
  7.     strDB = CurrentProject.Path & "\A机前台.mde"
  8.     Set appAccess = CreateObject("Access.Application")
  9.     Set db = appAccess.DBEngine.OpenDatabase(strDB, False, False, ";PWD=")
  10.     appAccess.OpenCurrentDatabase strDB
  11.     If Val(SysCmd(acSysCmdAccessVer)) = 9 Then
  12.         appAccess.Visible = True
  13.     End If
  14.     DoCmd.Quit
  15. End Sub
复制代码
3、如果仍然有问题,则可能跟网络连接或者硬件配置(我们用的是伺服器,跟PC是有些许区别的)有关系。
8#
 楼主| 发表于 2013-1-26 11:01:06 | 只看该作者
后台是直接链接读取,窗体数据源一般都来自对链接表的查询,但窗体中某些Insert、Update等操作多是ADO对链接表进行,格式为,CurrentProject.Connection, adOpenStatic, adLockReadOnly。
A机的mde不启动时B机的mde执行速度很快。

点击这里给我发消息

9#
发表于 2013-1-26 12:05:00 | 只看该作者
可能是mde中某个子程序或者窗体、报表的记录集对链接表的进行了锁定所致。

多用户数据库,必须要考虑数据锁定的问题,呵呵。
10#
 楼主| 发表于 2013-1-27 10:03:30 | 只看该作者
zhuyiwen 发表于 2013-1-26 12:05
可能是mde中某个子程序或者窗体、报表的记录集对链接表的进行了锁定所致。

多用户数据库,必须要考虑数据 ...

谢谢二位,问题已解决,虽不能确定两种原因中哪个是主要的,但以下这两者就是造成这种现象的元凶:
一、调用后台表数据的ADODB.Recordset打开后未及时关闭。
二、建立的DAO Connection未及时关闭。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-29 15:45 , Processed in 0.117796 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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