由于您已经拥有带有一些业务逻辑的 asp.net,因此您可以将其打开以作为 Web 服务(asmx 文件)访问。Google for the Microsoft Office Web Services Toolkit for your version of access (xp/2003 etc.) 这将为您编写 vba 代理类来调用 Web 服务。您可以通过代码(vba 读取和写入控件)将 Web 服务数据绑定到表单,或者使用来自 Web 服务的数据创建本地临时表并使用常规访问绑定。
根据您最熟悉的内容(代码/tsql),您可以将逻辑放入存储过程或业务逻辑层或混合(两者)中。我发现测试代码比存储过程更容易,并且喜欢不绑定到 sql server 的业务逻辑,即如果你想更改数据库或想在没有数据库的情况下离线开发/测试组件。新的 .net 功能(如 LINQ)具有相当好的性能,因此您不必依赖存储过程来进行数据库活动。
保留访问前端用户界面,直到您重构了对 Web 服务的所有业务逻辑/数据访问。然后,您可以根据需要创建一个使用 Web 服务的 asp.net 应用程序或一个 winform 应用程序。(暂时不要使用 wpf,作为 ui,因为它是一个陡峭的学习曲线,并且还没有可以与访问数据表视图进行比较的数据网格。)
报告
访问报告可以升级为sql server 报告服务(报告中的vba不会升级,最好在存储过程中编写一些tsql)。如果您没有完整的 sql server 产品,您仍然可以使用 reportviewer 控件在 asp.net(或标准版本的 winform 或Visual Studio) 绑定到 ado.net 数据集。
其他选项:
您可以编写 .net dll 并使用 com 互操作。这种方法允许您逐渐开始编写功能。不要使用 .net ui,例如 winform,因为它不能很好地与 access ui 配合使用。您可以编写业务逻辑或数据访问逻辑,然后从 vba 调用这些类。然后,如果需要,您可以将此代码移至 asp.net 或 Web 服务。
要排除的事情:
我不喜欢使用并排版本编写新应用程序的方法。作为一个单一的开发人员,你有足够的担心。您最终可能会在两个版本中添加功能并调试两个版本而不是一个版本。
vb6 表单互操作不适用于访问。
如上所述的ADP已经死了。(我从不喜欢它们,因为我经常使用本地表来优化性能,它们只能通过代码调用而不是链接)
您可能能够使用 Visual Basic 升级向导(在 Visual Studio 中)将您的 vba 模块和类模块转换为 vb.net,但它不会放大所有内容(例如,dao/ado 代码到 ado.net 代码)并且不会创建针对 .net 优化的代码,并且可能不容易编写单元测试,具体取决于 vba 代码的设计。我建议重写代码(如果您对测试很认真,请尝试测试驱动开发,看看您是否喜欢它)。