2012-12-19 34 views
10

Chúng tôi đã phát triển một ứng dụng truy cập ms khá nặng, với khoảng 300 biểu mẫu (có!). Khi mã này khởi tạo các biểu mẫu này (và không chỉ 'mở' chúng), chúng ta có thể có nhiều phiên bản của cùng một biểu mẫu được hiển thị trên màn hình.Làm thế nào để nhúng các biểu mẫu truy cập MS trong mô-đun C#?

Để bỏ qua những hạn chế của VBA, và thực hiện kém của một số khái niệm hướng đối tượng như thừa kế, giao diện, đóng gói, vv, mã đang quản lý:

  • một bộ sưu tập các cửa sổ làm bằng tất cả các sự các trường hợp hoạt động của biểu mẫu của chúng tôi.
  • đối tượng 'cửa sổ ma', chứa tất cả thuộc tính và phương thức bổ sung cần thiết cho mã của chúng tôi.

Vì vậy, như một ví dụ, khi tôi muốn tiếp cận tài sản tiêu chuẩn của một trong những trường hợp của tôi, tôi có thể viết:

MyWindows.accessWindow(hWnd).name 

đâu hWnd là handle do Windows, và đặt tên tiêu chuẩn hình thức() tên thuộc tính

Nhưng nếu tôi muốn tiếp cận một tài sản cụ thể của một trong những trường hợp của tôi, tôi có thể viết:.

MyWindows.ghostWindow(hWnd).originalRecordset 

đâu nguồn gốc alRecordset 'giữ ADODB.recordset ban đầu đã được nạp khi biểu mẫu được instanciated đầu tiên (có nghĩa là trước khi bất kỳ thay đổi nào được thực hiện bởi người dùng ... có thể thú vị!)

Nó hoạt động rất tốt, nhưng mã hóa nó có thể là một PITA thực , đặc biệt khi người ta biết làm thế nào starighforward nó có thể được để làm một cái gì đó tương tự trong C#, miễn là người ta có thể đóng gói các MS-Access hình thức đối tượng vào một đối tượng C# chung chung hơn. Vì vậy, đây là câu hỏi: một người có thể nhúng biểu mẫu MS-Access vào một đĩa CD C# tự tạo không? Có khả thi không?

Tôi không mong đợi câu trả lời hoàn chỉnh, nhưng tôi đang mong đợi một số trợ giúp để đi đúng hướng. Bất kỳ ý tưởng pals?

+2

Về mặt kỹ thuật ấn tượng, nhưng một bãi mìn thương mại và bảo trì? Gợi ý bạn bắt đầu một gia tăng tái ghi. Viết lại các phần của ứng dụng của bạn vào các ngành dọc dựa trên miền với các phân định rõ ràng đã làm việc cho tôi trong quá khứ. Kết quả là bạn nhận được nhiều C#. –

Trả lời

3

Điều này có thể thực hiện được thông qua Tự động hóa Office.

Tóm lại, bạn sử dụng C# để khởi chạy ứng dụng truy cập của mình và sau đó lấy mô hình đối tượng thích hợp cho biểu mẫu của bạn, giống như cách bạn có sẵn trong vba.

Đây có lẽ là bước đầu tiên nếu bạn muốn sử dụng nhiều hơn C# (tốt) và ít vba (meh) để dần dần cải thiện/tái cấu trúc ứng dụng truy cập của bạn.

Xem thêm chi tiết trong bài viết MS KB "How to automate Microsoft Access by using Visual C#"

+1

Cảm ơn bạn đã liên kết. Có thể có điều thú vị ở đó –

Các vấn đề liên quan