德语   法语   荷兰语   葡萄牙语 - 伊伯利亚   西班牙语   英语(美国)   中文 - 简体  

Home





如何拆分复制的Access 97数据库

文: Jeffrey Streutker, MCSE

那些对Access数据库无经验的开发人员,他们常常不知道改变复制为对象设计,而不是数据表,那样会引起一些问题。这是令人失望的,首先, 因为复制似乎是分布完整的Access应用程序的最好途径,毕竟,Microsoft是支持它的。

问题是,Jet的复制是设计有数据表的。这是因为Jet复制主要是用于Visual Basic应用程序的,在那里,只有数据可以被存储在*.mdb文件里。这是它被测试最多的地方。对于Access 97来说,它总是被理解为,一个优秀的开发人员在将其转换成副本之前总是要拆分数据库,这样,只有表才能使被复制。关于拆分Access 数据库的概念,请参阅“在Microsoft Access 97中创建应用程序”的 第15章,第3节, 这些文档在Access 97光盘中都有。

复制之前没有拆分数据库,你会发现你的副本的大小会“膨胀”。这是因为,你做的每一个到格式或模块的改变,如,被放在隐藏表中,这样就变成了需要被复制的信息。想象一下,你努力30次正确地去做某个模块的代码工作。这些改变(除最后一个不必要外)都被发送到所有的副本,开发人员在复制前不能拆分就会碰到一个恼人的问题:复制工作正确进行一会儿后(也许甚至几个月),模块会突然不能工作,或表单不能打开。

所以,你怎么能拆分已经被复制的数据库?我在这儿建议你根据以下的步骤去做。

  1. 不要使用拆分数据库向导。这是因为,它正好用了错误的方式来拆分数据库,这样,你的数据表就不能再复制了---它把表移到新的文件中去了,并把对象的剩余部分放到了副本里,而我们要做的,是要把数据表放在副本里,并把其他的对象移到新的未复制的数据库文件中。那样的话,后端的剩余部分是可以复制的,作为当前副本设置的一部分,前端现在则是独立数据库,只能被拷贝到每一个应用程序用户。
  2. 要确保你的副本都要同步,你就要知道,万一你损坏了设计主,而你已经更新了数据。
  3. 创建新的Access数据库文件,该文件会在前端。根据Microsoft例子,你可以添加"_fe"到初始数据库名,虽然它确实对你要调用的并无关紧要。
  4. 把这个新的文件打开,从设计主输入所有的查询,表单,报表,宏以及模块。如果你把开关板置于适当的你可以使用开关管理器控制的位置,那么,你也需要输入开关板项目表。
  5. 如果你已执行了数据库安全,那么,你会丢失在第4和第5步骤中输入或连接的所有对象中的容许设置。所以,打开设计主,将这些容许设置拷贝到新的文件(即,前端)。
  6. 现在,你需要添加代码到前端,该前端更新了连接到用户的本地副本。在开发人员解决方案数据库中,你会发现做这些工作的帮助。它随Access 97作为样本数据库出现。从“使用多数据库”分类中选择“启动连接表”。
  7. 分布前端到你的所有用户。记住,该文件不应再被复制。你只须为需要的人拷贝即可。叫你的用户切换到使用前端。当你确定他们现在在使用前端时,你就可以继续下去,把设计主转换成后端(下两个步骤),便于他们同步下次时间,他们的副本也将变成后端。
  8. 打开设计主,删除你在第4步骤中输入的所有对象。
  9. 两次紧致设计主,然后使其与你的其他副本同步。
注意:如果你想继续Microsoft在其拆分数据库向导中使用的准确的命名约定,那么,你就不得不通过添加"_be"到其文件名来重新命名你的后端副本。最安全的办法是在复制管理器里,用移动副本命令来做。

Jeffrey Streutker 是多伦多地区HVAC(加热,通风和空调)控制公司的信息技术管理员。他是一个电子学技术专家,他也在加拿大沃特卢大学研究计算机科学和数学,自1985年,他就定期地用许多不同的语言做程序设计的工作。他目前的项目是把扩展的Lotus Notes---基本数据库系统转换到Access 97,包括复制,便于支持在服务—跟踪和订单生成数据库领域的技术人员。并掌握传真客户/服务器支持的地址簿。

返回到资源