25

背景

我为一个拥有数千个 MS Access 应用程序的大型组织工作。这些都不是我写的——事实上,大多数原作者早已离开公司——但有时另一个 Access 应用程序会出现在我的办公桌上寻求支持。我很想不同的解决方案替换访问。

要求

我知道 MS Access(Jet 数据库)的数据库部分有几个不错的替代方案,例如 SQLite、MySQL、VistaDB 等。

我想知道的是:有什么东西可以取代 MS Access 的前端部分吗?

即可以用来构建表单、编写简单脚本和查询等的东西?

为什么?

@BracC 问“为什么要替换访问权限?” - 确实是一个公平的问题。
我想摆脱访问权限,因为:

  • 它隐藏了逻辑,导致难以支持的应用程序。逻辑可以在很多不同的地方,没有一个提供或鼓励任何结构:
    • 模块
    • 查询
    • 形式
  • 它的本质鼓励用户创建“小”应用程序,这些应用程序成为“不那么小的应用程序”。然后用户离开,我必须支持一堆意大利面。我知道访问权限不是唯一的罪魁祸首,但它是我组织中的领导者,我很想完全摆脱它。

额外学分

真正想找到的是可以在 MDB 文件中读取并输出类似 C# 的东西来复制功能的东西。(或任何语言 - 不挑剔)。

我希望这一切都清楚了。如果没有,请发表评论,我将重新编写/添加详细信息。

更新

@GuinnessFan 提出了一些我觉得很有趣的观点。我添加了我的评论来讨论这些观点。

自从我提出这个问题以来,我们做了什么:

  • 让用户向我们提供他们使用和需要的访问应用程序的明确列表。(理解是任何不在列表中的 MDB 文件都可以删除 - 万岁!)。
  • 分析了名单上的MDB,得出以下结论:
    • 大多数“应用程序”由单个硬编码查询或单个链接表组成。
    • 许多是带有日期参数或类似参数的少量查询。
    • 很少(如果有的话)有任何真正复杂的逻辑。
  • 我们现在正在处理该列表,将大多数应用程序转换为 SSRS(SQL Server Reporting Services)包。
  • 任何无法使用 SSRS 复制的东西都将成为手工制作的 Web 应用程序。然而,这些并不多。

非常感谢所有给我有用的答案的人。

4

11 回答 11

6

几年前,我将一个应用程序的后端从 MSacces 切换到了 MSSQL。保留前端,因为它运行良好,而且我没有发现任何易于使用/修改的东西。

我从未见过 MSAccess -> C# 翻译器。但是,您可能能够找到一个 MSAccess 到 VB6 的翻译器(它们的语法大致相似),并且从那里有 VB6->VB.Net 翻译器(甚至是 VB.Net ->C# 翻译器)

于 2008-10-21T14:12:36.930 回答
5

您可以查看Oracle 的 Application Express。它是免费的,面向 Access 开发人员。

它还有一个迁移助手,您可以通过它运行您的 Access 数据库,它处理数据和表单,将所有内容迁移到 Oracle 数据库(这适用于免费数据库 Oracle XE,并且默认安装)并构建 Web 表单为您的 Access 数据库。

因此,最终您将拥有 Web 上的 Access 数据库、Oracle 中的数据以及用于扩展它们的一些不错的 Web 前端。

就 Oracle 而言,该工具还不错。你可以在这里注册一个免费的实例来玩。

这是解释如何迁移 Access 数据库的文档。

于 2008-10-21T14:21:17.677 回答
5

那么,除了个人厌恶之外,为什么要更换 Access 前端呢?对于某些(简单)数据库来说可能很容易做到,但现实世界中的大多数 Access 应用程序都非常复杂。

当然,升级后端的原因有很多(可扩展性、性能、数据库损坏、用户锁定)。Access 甚至有一个内置的“升级向导”工具,允许您从数据中拆分表单和逻辑,并将数据升级到 MS SQL 服务器。如果需要,可以使用此向导将后端升级到 SQL Express,然后手动迁移到另一个数据库平台。

希望这不会离题太远,但有时您需要使用 Access 做的就是:

  1. 升级后端(正如我们已经讨论过的)

  2. 始终确保前端已锁定(只读)

  3. 如有必要,为不同的用户角色创建不同的前端(作为一种安全形式)。

  4. 如果可能,出于性能原因,在每个工作站上本地复制前端。您可能需要一个网络脚本来检查前端的新版本。

我没有任何直接经验,但我确实在http://www.microtools.us/找到了一个名为“Access Whiz”的访问 ASP.Net 转换器工具

于 2008-10-21T14:54:27.657 回答
5

我们使用基于 MS Access 的内部应用程序作为 MySQL 数据库的前端。我们遇到了很多问题,最终在CodeGear Delphi 2007 for Win32中重写了整个应用程序。这是一个巨大的成功,尽管迁移确实花费了很多精力(培训/雇用了几个 Delphi 程序员,购买了一些第三方工具)。不过,我可以全心全意地推荐 Delphi。而且 AFAIK,与 MS Access 后端集成当然是可能的 --- 我曾经写过一个 Delphi 应用程序,它就是这样做的,只花了我几天时间就得到了一个功能完整的版本!

我意识到这是一个完整的编程解决方案,所以你肯定会失去一些用于构建前端的 MS Access 的易用性。再说一次,您可以在 10 分钟内用 Delphi 组装一个数据库应用程序,而无需编写太多代码 --- 不开玩笑!自 2009 年发布以来,该语言再次慢慢成为主流......

于 2008-10-21T20:04:13.803 回答
4

@布拉德C

我不推荐 MicroTools。我曾在一家公司工作过一段时间,我们遇到了同样的问题。除非 MicroTools 对其产品进行了重大改进,否则我上次检查时它会吐出垃圾。

我们发现几乎任何升级路径都需要大量的编码更改。所有这些工具的好处是维护与原始应用程序类似的 GUI。他们的代码没有对象结构,只有一堆实用函数,它们被转储在每个页面上,以模拟 Access 提供记录导航的方式。如果您有大量表单,则提取他们的解决方案并实施您自己的解决方案需要一些工作和大量的查找和替换操作。

我们对 MicroTools 的性能非常失望,于是开始编写自己的转换器。经过一周的编码,我们得到了更好的 ASP.NET 表单。

于 2008-10-21T15:01:22.310 回答
3

您不会找到同时附带桌面界面设计工具的服务器级引擎。大型服务器引擎都希望您使用 C++、C#、Java 或 PHP 之类的东西来构建您的界面。

我也很想看到一个访问升级工具,它会输出一些基本的 C# 表单并与等效的 SQL Server 数据库对话。对于微软来说,这似乎是一个大赚钱的工具,因为他们可以用它作为向客户追加销售完整 SQL Server 的一种方式。

IIRC,可能有一种方法可以告诉 Access 前端与 SQL Server 对话,或者将 Access 前端使用的表更改为真正链接到 SQL Server 的表,或类似的东西,但我从来没有必须自己使用该功能。

于 2008-10-21T14:12:06.353 回答
3

我有不同的观点供你考虑。您的主要问题是它隐藏了逻辑,并且数据和应用程序分散在组织中。

不幸的是,我不知道有一个 RAD(快速应用程序开发)工具可以像 Access 一样简单地创建功能表单。

但是,我建议您更多地关注集中数据和逻辑的可能性,并且仍然允许 Access 作为前端。我支持一个名为 Advantage Database Server 的数据库产品,它支持 RI(引用完整性)规则、存储过程、触发器等,这些都可以在中央服务器上进行管理,从而为您提供所有逻辑。然后,这些 Access 前端可以使用 ODBC 或 OLEDB 链接到数据后端。如果您切换到这样的解决方案,那么稍后您将可以灵活地编写其他应用程序,例如 .NET、PHP、JDBC 等,这些应用程序与相同的数据相关联,同时逐步淘汰 Access 前端。

一个好的开始是停止新的 Access 开发,除非他们使用这种数据后端。

于 2008-10-21T19:52:20.723 回答
3

在 1000 个 Access 文件中,有多少是您被要求支持的?我猜不到 100 个。为什么要重建一个 A) 没有人使用 B) 可以正常工作的应用程序?

您需要制定一个策略,让大型组织在稳健、可扩展、可靠的 yadda yadda yadda 环境中开发自定义应用程序是一种可接受的做法。确定您认为很重要或已经过时的 Access 应用程序,然后在这些应用程序上工作。

准备好应对快速周转获得快速而肮脏的小型应用程序的期望。您必须向他们展示您的新应用程序的好处。

I think you just need to be a resident expert and teach these users how to improve their application or get your input from the beginning to start them off right. The requirements to convert all of these files would otherwise be overwhelming.

于 2009-11-03T03:53:39.557 回答
1

Microtools 提供 Access Whiz,一套 Access 转换工具。它由 Access to ASP .NET (VB/C#) 转换器、Access to VB6 转换器、Access to WinForms (VB .NET/C#) 转换器和 Access to Crystal Reports 转换器组成。更多信息和试用演示可以在http://www.microtools.us找到。

于 2008-12-19T08:28:40.797 回答
1

你也可以看看火鸟

这是迁移的方式(你需要Delphi)

我也找到了这个MDB2FDB

于 2009-04-23T21:24:14.057 回答
0

有什么东西可以取代 MS Access 的前端部分吗?

也许可喜

于 2008-10-21T14:13:59.907 回答