Khi bạn đã có asp.net với một số logic nghiệp vụ, bạn có thể mở nó để truy cập dưới dạng dịch vụ web (tệp asmx). Google cho Bộ công cụ Dịch vụ Web của Microsoft Office cho phiên bản truy cập của bạn (xp/2003, v.v.) và điều này sẽ viết các lớp proxy vba để bạn gọi dịch vụ web. Bạn có thể liên kết dữ liệu dịch vụ web với các biểu mẫu thông qua mã (vba để đọc và ghi vào điều khiển) hoặc tạo các bảng tạm thời cục bộ với dữ liệu từ dịch vụ web và sử dụng ràng buộc truy cập thông thường.
Tùy thuộc vào những gì bạn cảm thấy thoải mái nhất (mã/tsql) bạn có thể đặt logic trong các thủ tục được lưu trữ hoặc trong một lớp logic nghiệp vụ hoặc lai (cả hai). Tôi thấy việc kiểm tra mã dễ dàng hơn các thủ tục được lưu trữ và không bị ràng buộc với máy chủ sql cho logic nghiệp vụ tức là nếu bạn muốn thay đổi cơ sở dữ liệu hoặc muốn phát triển/kiểm tra thành phần ngoại tuyến mà không có cơ sở dữ liệu. Các tính năng mới .net như LINQ có hiệu suất khá tốt nên bạn không phải dựa vào các thủ tục lưu sẵn cho các hoạt động cơ sở dữ liệu.
Giữ giao diện người dùng giao diện người dùng truy cập cho đến khi bạn đã tái cấu trúc tất cả truy cập dữ liệu/logic doanh nghiệp của mình vào dịch vụ web. Sau đó, bạn có thể tạo một ứng dụng asp.net tiêu thụ các dịch vụ web hoặc ứng dụng winform nếu bạn muốn. (Tránh xa những WPF, như một giao diện người dùng, trong thời gian này vì nó là một đường cong học tập dốc và chưa có một DataGrid có thể so sánh với quan điểm truy cập bảng dữ liệu.)
Báo cáo
Các báo cáo truy cập có thể được upsized cho các dịch vụ báo cáo máy chủ sql (vba trong các báo cáo không upsize và nó là tốt hơn để viết một số tsql trong thủ tục được lưu trữ). Nếu bạn không có sản phẩm máy chủ sql đầy đủ, bạn vẫn có thể sử dụng kiểm soát reportviewer để viết báo cáo cho bạn (xem http://www.gotreportviewer.com/) trong asp.net (hoặc winform với phiên bản tiêu chuẩn hoặc lên Visual Studio) liên kết với bộ dữ liệu ado.net.
Các tùy chọn khác: Bạn có thể ghi .net dll và sử dụng liên kết. Cách tiếp cận này cho phép bạn bắt đầu viết chức năng dần dần. Không sử dụng .net ui e.g. một winform vì nó sẽ không chơi độc đáo với truy cập ui. Bạn có thể viết logic nghiệp vụ hoặc logic truy cập dữ liệu và sau đó gọi các lớp này từ vba. Sau đó, bạn có thể chuyển mã này sang asp.net hoặc các dịch vụ web nếu cần.
Những điều cần loại trừ:
tôi không thích cách tiếp cận của việc viết một ứng dụng mới có cạnh phiên bản phụ. Là một nhà phát triển duy nhất bạn có đủ để lo lắng về. Có thể bạn sẽ kết thúc việc thêm các tính năng trong cả hai phiên bản và gỡ lỗi hai phiên bản thay vì một phiên bản.
Hình thức vb6 interop không hoạt động để truy cập.
ADP như đã nêu là khá chết. (Tôi không bao giờ thích chúng vì tôi thường sử dụng các bảng cục bộ để tối ưu hóa hiệu suất và chúng chỉ có thể được gọi qua mã và không được liên kết)
Bạn có thể chuyển đổi mô đun vba và mô-đun lớp thành vb.net bằng Visual Basic Nâng cấp Wizard (trong studio trực quan) nhưng nó không upsize tất cả mọi thứ (ví dụ như dao/mã ado để ado.net mã) và không tạo mã được tối ưu hóa cho. Net và có thể không dễ dàng để viết các bài kiểm tra đơn vị tùy thuộc vào thiết kế mã vba. Tôi khuyên bạn nên viết lại mã (thử Test Driven Development nếu bạn nghiêm túc về việc kiểm tra xem bạn có thích nó không).
YE, tôi chỉ sử dụng Phát triển theo hướng thử nghiệm (từ từ đưa trang web spaghetti của chúng tôi được kiểm soát). Tôi vui mừng khi biết về báo cáo chuyển đổi và tôi thích ý tưởng interop com để ít nhất có được bit phức tạp dưới sự kiểm soát. – Gilligan