2009-10-22 73 views
0

我正在开发使用Access数据库(MDB格式)的Delphi 7应用程序。它可以在我的电脑和其他一些PC上正常工作。但是在有些机器上,有时试图访问数据库时会出现错误,比如说“未知数据库格式(mdb)”。另外我注意到一件事情:当您使用Office在Ms Access中打开该数据库时,出于某种原因它以“只读”模式打开。任何人都可以帮忙吗?这个问题的原因是什么?从Delphi 7打开Access数据库的问题

+0

您使用的是DAO还是ADO? – 2009-10-24 19:04:29

回答

1

我认为你最可能的问题是使用MDAC,使用注册表来检查每台机器上的版本,看看有没有工作和不工作的不同之处。

+0

请试试,谢谢:) – 2009-10-24 18:32:28

2

自从我在Delphi上编程已经很长时间了,但是我记得我在安装不同版本的MDAC时遇到了问题。比较电脑的工作和那些不工作的版本。

+0

检查mdac版本的简单方法是打开regedit并检查HKEY_CLASSES_ROOT以获取MDACVer.Version。*标记 – 2009-10-22 13:03:24

+0

,并且因为检测到MDAC版本是如此的痛苦,请在此处http://support.microsoft.com/kb/301202寻求帮助和工具。 – fvu 2009-10-22 13:04:22

+0

如果MDACVer.Version.2.81不存在:[升级] [1] [1]:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=78cac895-efc2-4f8e -a9e0-3a1afbd5922e – 2009-10-22 13:04:51

1

如果数据库文件(mdb文件)实际设置为只读(例如,如果它已从CD中复制),我以前会得到该错误消息。检查Windows资源管理器中的文件属性,并确保该文件不是只读的。

而且,你尝试过内访问做一个紧凑&修复,如Access数据库经常损坏,此选项往往可以帮助引起的问题的所有方式。

+1

Jet/ACE数据库不会*经常损坏,除非您不恰当地使用Jet/ACE,并且没有以适当的方式使用Jet/ACE。 -1 – 2009-10-23 01:25:37

+0

我不同意。我们使用Access作为我们的软件数据库近10年,并且经常损坏,直到我们必须将我们自己的“修复”选项引入到软件中。 我很欣赏你的观点,并且知道你在Access方面也有很多经验,但这并不是虐待,只是一个事实,当它被大量使用时。 – 2009-10-23 07:50:33

+0

“它经常损坏,直到我们必须将我们自己的”修复“选项引入到软件中” - 在那里:) – onedaywhen 2009-10-23 09:29:42

1

什么版本的Access是MDB格式化的?你使用DAO或ADO来访问数据库。 MDB在2003年还是2007年?我怀疑它是A2007格式,而您遇到麻烦的机器安装了A2003或者没有Access版本。而工作的机器上安装有A2007。但这只是一个猜测。

您还需要跟踪只读问题。

+0

您不需要安装MSAccess以将.mdb文件用作数据库,只需安装MDAC并使用ADO进行连接即可。 – 2009-10-24 07:09:49

+0

Toby:或者您可以使用DAO,因为它带有Windows 2000,XP,Vista和7操作系统。 (我认为德尔福也支持DAO。) – 2009-10-24 18:59:24

-1

你说:“它在我的PC和其他一些PC上运行良好。”

然后它听起来像你的程序可能没有任何问题。可能的是,它始终无法工作的PC没有安装Microsoft Office或至少Microsoft Access。他们需要安装ADO才能工作。

如果没有进一步的线索,机器上的“有时”问题很难诊断。

恐怕我不知道“只读”问题可能是什么。

+0

我有Access 2007,但该文件是Access 2000文件(我选择了最旧的可能文件格式)。有这个问题的计算机也安装了Access(与我的版本不一样)。 – 2009-10-23 06:12:58

+0

您是否在有问题的PC上检查了mdb文件的只读状态? – 2009-10-23 07:51:51

+0

对不起,这只是错误的,你不需要安装Access使用MDB文件,你只需要MDAC(从微软免费下载)。很少有机器可以安装。 – 2009-10-24 07:10:56