0

我的任务是获取一个依赖于 ODBC 连接的 Access 2007 应用程序,并与具有相同 ODBC 连接的其他机构共享它。如果我没有很好地传达这一点,请原谅我。我不是开发人员,但自从我完成这个项目以来,我一直负责这个项目。我敢肯定,以前从未发生过……

首先,我将给出我们结构的布局:

  • 我在一所大学工作,该大学通过 ODBC 与其他 31 所学校共享数据库。
  • 维护所有校园数据库的系统办公室只允许我们通过公共接入点服务器 (CAP) 的 VPN 访问只读数据,然后通过 ODBC 连接
  • CAP 服务器(唯一可以链接到 ODBC 的位置)具有 Microsoft Office,并且无法访问 Internet。
  • 每个校区都有一个唯一的 ODBC 连接,当 accdb 放置在其 CAP 服务器上时,需要重新链接表。
  • 每次启动 Access 时,用户还必须登录到 ODBC 连接。
  • CAP 服务器可以在网络驱动器上读写,但反之则不行。
  • 我们可以放心地假设 CAP 服务器上不能安装其他软件,但可以放置文件(这就是我们可以分发 accdb 文件的原因)

Access 应用程序从 ODBC 中提取学生课程活动,并应用逻辑来确定学生是否/何时停止参加所有课程。此时,这个逻辑是一系列与宏绑定的查询。然后数据库生成学生的报告(包含来自 ODBC 的更多信息)。有一个活动的跟踪过程,因此可以从报告中清除记录,除非发生更改,这将导致记录与更改一起重新出现。这也需要在本地存储数据,因为 ODBC 是只读的。VBA 也支持各种形式和报告。

目标是打包软件并分发到所有其他校区。到目前为止,我们通过简单地向他们发送 accdb 文件并拥有一个启动链接表管理器的按钮来完成小型分发。初始分发后,我将继续开发软件并分发更新,必须保留本地存储在 accdb 中的数据。

问题是我只有 Access 方面的经验和足够的 VBA 知识,以便能够在解决方案出现时单独使用谷歌搜索。

我的问题可能很简单,也可能很复杂,我不确定。基本上我想知道除了我一直在做的事情之外是否有更合适的方法:发送 accdb 并且用户复制并粘贴唯一需要结转的表。

澄清

将 accdb 转换为每个分发版本的可执行文件是否可行?当 ODBC 需要重新连接并且 ODBC 在校园之间是唯一的时,这是否可能?

4

2 回答 2

1

您可以添加一个重新链接按钮,该按钮循环浏览数据库中的表并重新连接它们

dim tdf as tabledef
dim db as database
db = currentdb
db.tabledefs.refresh
for each tdf in db.tabledefs
    with tdf
        if len(.connect)>0 then ' this is a table that has a connect string
           if left$(.connect)="ODBC" then  ' this is an ODBC connection
                .connect = newconnectstring
                .refreshlink
           end if
        end if
    end with
next
于 2012-06-14T01:41:20.660 回答
1

每次升级都要求最终用户将存储本地数据的表从一个 accdb 文件复制并粘贴到另一个文件中,最终会导致数据丢失——有人会在升级过程中忘记这一步。

更可靠的方法是创建第二个 accdb 数据库。将其命名为“YourAppName_data.accdb”或类似的名称,并将其放置在与前端客户端相同的目录中或名为“Data”的子目录中。将“数据”accdb 文件中的表链接到前端客户端。

您可以将启动代码添加到可以尝试通过在已知位置查找数据 accdb 文件来自动重新链接这些表的前端客户端。如果程序找不到它,您可以提示用户为您找到它。顺便说一句,您也应该能够对 ODBC 表执行类似的操作。您可以使用类似于 ChrisPadgham 在此步骤的答案中所写的代码。

您此时所做的是将应用程序的数据(只读数据和每个学校需要能够自己维护的数据)与应用程序前端(表单、查询、逻辑和报告)。

这将使向前端客户端分发更新变得更加容易。最终用户只需将前端客户端复制到正确的目录,覆盖目录中的现有文件并运行程序即可。

这将起作用,但它仍然不如它可能的强大,因为任何有权访问 CAP 服务器的人都可能会从服务器上删除数据文件。(希望每个学校都定期备份这台机器,以防止数据丢失。)

正如 HansUp 建议的那样,最终可能通过将存储在 Access accdb 文件中的数据移动到每个位置的 SQL Server 数据库来为您提供更好的服务,这将更好地控制谁可以访问信息,并且在保护方面会更好一些当服务器运行时,SQL Server 数据库文件在机器上“锁定”后的数据。(这将防止有人意外删除文件)。SQL Server 的缺点是有一个学习曲线,它需要在每所学校安装在 CAP 服务器或 CAP 服务器可以在网络上访问的其他机器上。一旦您有更好的信息可供使用,这可能会随着时间的推移而努力。

于 2012-06-14T12:30:51.657 回答