我们有一个已有12年历史的Ms Access应用程序,用于我们的核心库存、仓储和发票系统。它已经在SQL Server后端运行,但所有的“逻辑”、窗体和报表都在Access中。在经历了将库存事务从非时态转换为时态所需的大量维护工作后,我意识到有一天我需要将它转换为代码,这样我就可以在一个更可维护和可测试的环境中更好地管理逻辑。
有哪些技术可以让我以一种可管理且高效的方式将其转换为.Net应用程序?
一个想法是将查询转换为存储过程,然后将应用程序转换为Adp project.But我仍然不知道如何处理表单和报告。
此外,我是我的公司唯一的开发人员,如果这很重要。
发布于 2008-10-16 12:26:39
因为您已经有了带有一些业务逻辑的asp.net,所以您可以将其打开以作为web服务(asmx文件)访问。适用于您的access版本(xp/2003等)的Microsoft Office Web服务工具包的Google这将为您编写用于调用web服务的vba代理类。您可以通过代码将web服务数据绑定到窗体(使用vba对控件进行读写操作),或者使用来自web服务的数据创建本地临时表并使用常规访问绑定。
根据您最熟悉的(code/tsql),您可以将逻辑放在存储过程中,也可以放在业务逻辑层中,或者两者兼而有之。我发现测试代码比存储过程更容易,而且我喜欢不绑定到sql server的业务逻辑,例如,如果您想要更改数据库,或者想要在没有数据库的情况下离线开发/测试组件。新的.net特性,如LINQ,具有相当好的性能,因此您不必依赖于数据库活动的存储过程。
保留访问前端用户界面,直到您重构了对web服务的所有业务逻辑/数据访问。然后,您可以创建使用web服务的asp.net应用程序或winform应用程序(如果需要)。(暂时不要将wpf作为一种ui,因为它是一个陡峭的学习曲线,并且还没有可以与access数据表视图相比较的数据网格。)
Reports
可以将访问报告升迁到sql server报告服务(报告中的vba不升迁,最好在存储过程中编写一些tsql )。如果您没有完整的sql server产品,您仍然可以使用reportviewer控件在绑定到ado.net数据集的asp.net (或使用Visual Studio标准版或更高版本的winform )中编写报表(请参见http://www.gotreportviewer.com/)。
其他选项:您可以编写.net dll并使用com interop。这种方法允许您逐步开始编写功能。不要使用.net ui,例如winform,因为它不能很好地与access ui配合使用。您可以编写业务逻辑或数据访问逻辑,然后从vba调用这些类。然后,如果需要,您可以将此代码移动到asp.net或web服务。
要排除的事情:
我不喜欢用并列版本编写新应用程序的方法。作为一个单独的开发人员,你有足够的担心。您可能最终会在两个版本中都添加功能,并调试两个版本而不是一个版本。
vb6窗体互操作不适用于access。
正如所说的那样,ADP已经死了。(我从来不喜欢它们,因为我经常使用本地表来优化性能,并且它们只能通过代码调用,而不能链接)
您可能能够使用Visual Basic升级向导(在visual studio中)将您的vba模块和类模块转换为vb.net,但它不会将所有内容都升级(例如,将dao/ado代码转换为ado.net代码),并且不会创建针对.net进行优化的代码,并且可能不容易根据vba代码的设计编写单元测试。我建议重写代码(如果您对测试很认真,请尝试测试驱动开发,看看您是否喜欢它)。
发布于 2008-09-19 20:22:01
简而言之:迁移看起来不像是容易自动化的事情。
我的猜测是,最好的办法是一次重写(并安装)系统,即使(也许)这会迫使用户在一段时间内同时运行新旧版本以使用不同的功能。通过仔细考虑要迁移哪些功能以及迁移的顺序,您可以最大限度地减少这种麻烦。
例如,您可能有一个用户,其工作角色要求他或她每天只使用一个屏幕。如果您首先使用附带功能迁移屏幕,则该用户可以立即使用新系统,而不使用旧系统,从而减少维护负载。
因此,这些只是一些基于不太多信息的想法。不管怎样,我希望这对你有帮助。
发布于 2008-09-19 20:45:25
我会考虑看看Interop Forms Toolkit。据我所知,这个工具使得在VB6中使用.NET表单变得非常容易,所以也许它也可以在Microsoft Access中使用?如果是这样的话,它可以帮助您以增量的方式将应用程序迁移到.NET。通过快速搜索,我找不到任何关于在Microsoft Access中使用它的指南,所以如果这被证明是一条死胡同,我深表歉意。
https://stackoverflow.com/questions/105087
复制相似问题