Поскольку у вас уже есть asp.net с некоторой бизнес-логикой, вы можете открыть его для доступа в качестве веб-службы (файлы asmx). Google для Microsoft Office Web Services Toolkit для вашей версии доступа (XP / 2003 и т. Д.), И это будет писать прокси-классы VBA для вас, чтобы вызвать веб-службы. Вы можете связать данные веб-службы с формами с помощью кода (vba для чтения и записи в элементы управления) или создать локальные временные таблицы с данными из веб-службы и использовать регулярное связывание доступа.
В зависимости от того, с чем вам удобнее всего (code / tsql), вы можете поместить логику в хранимые процедуры или в слой бизнес-логики или в гибрид (оба). Я считаю, что тестировать код легче, чем хранимые процедуры, и, например, не привязываться к серверу SQL для бизнес-логики, т. Е. Если вы хотите изменить базу данных или хотите разрабатывать / тестировать компоненты в автономном режиме без базы данных. Новые функции .net, такие как LINQ, имеют довольно хорошую производительность, поэтому вам не нужно полагаться на хранимые процедуры для операций с базой данных.
Сохраняйте пользовательский интерфейс доступа до тех пор, пока вы не реорганизуете всю свою бизнес-логику / доступ к данным к веб-службам. Затем вы можете создать приложение asp.net, которое использует веб-сервисы или приложение winform, если хотите. (Пока что держитесь подальше от wpf как пользовательского интерфейса, поскольку это крутая кривая обучения, и у него еще нет сетки данных, которую можно сравнить с представлением таблицы доступа.)
Отчеты
Отчеты о доступе могут быть увеличены до служб отчетов SQL Server (vba в отчетах не увеличивается, и лучше написать некоторые tsql в хранимых процедурах). Если у вас нет полноценного продукта SQL Server, вы все равно можете использовать элемент управления reportviewer для написания отчетов (см. http://www.gotreportviewer.com/) в asp.net (или winform со стандартной версией Visual Studio или выше), связывающих ado .net наборы данных.
Другие опции:
Вы можете написать .net dll и использовать com interop. Такой подход позволяет постепенно начать писать функциональность. Не используйте .net UI, например. Winform, так как он не будет хорошо играть с UI доступа. Вы можете написать бизнес-логику или логику доступа к данным, а затем вызывать эти классы из vba. Затем вы можете переместить этот код на asp.net или веб-службы, если это необходимо.
Что следует исключить:
Мне не нравится подход написания нового приложения с параллельными версиями. Как один разработчик, вам есть о чем беспокоиться. Вы, вероятно, в конечном итоге добавите функции в обеих версиях и отладите две версии, а не одну.
Взаимодействие форм vb6 не работает для доступа.
ADP, как указано, довольно мертв. (Мне они никогда не нравились, так как я часто использую локальные таблицы для оптимизации производительности, и их можно вызывать только через код, а не связывать)
Вы можете преобразовать свои модули vba и модули классов в vb.net с помощью мастера обновления Visual Basic (в Visual Studio), но он не увеличивает все размеры (например, код dao / ado в код ado.net) и не создает код, оптимизированный для .net, и может быть нелегко писать модульные тесты в зависимости от дизайна кода vba. Я рекомендую переписать код (попробуйте Test Driven Development, если вы серьезно относитесь к тестированию, чтобы увидеть, нравится ли вам это).