Cập nhật: Albert D. Kallal đã bắt đầu thảo luận và nhận thêm một số ý kiến tôi đang thêm tiền thưởng.Đường dẫn nâng cấp cho báo cáo cũ (Truy cập "nhúng" 2003)?
Đây là câu hỏi không cần thiết về việc duy trì một ứng dụng cũ và hai nhà phát triển khác hỗ trợ. Chúng tôi không phải là nhà phát triển ban đầu và cơ sở mã là 300.000 dòng MFC và logic kinh doanh được kết hợp chặt chẽ với nhau. Chúng tôi không biết từng dòng mã 100%.
Chúng tôi biết mã đằng sau các thành phần chính và chúng tôi biết rằng mã đó được viết kém. Mục tiêu của chúng tôi là tái cấu trúc ứng dụng từ năm 1995 đến năm 2010. Giữa ba chúng tôi có (tổng hợp) đủ kinh nghiệm trong kiến trúc phần mềm và thiết kế cơ sở dữ liệu để chúng tôi sửa các thành phần được cấu trúc kém trong mã hoặc mô hình không chính xác trong cơ sở dữ liệu, nhưng chúng tôi không có nhiều kinh nghiệm với các hệ thống báo cáo hiện đại. Vì vậy, câu hỏi của tôi (một khi bạn nhận được để kết thúc nó ...) là về hệ thống báo cáo.
Đối với bất kỳ ai đọc toàn bộ bài đăng này, tôi đánh giá cao về thời gian của bạn. Đối với bất kỳ ai đọc bài đăng này và trả lời bằng các giải pháp, kinh nghiệm (hoặc sự thông cảm!), Tôi đều cảm kích và biết ơn.
Tại nơi làm việc tôi đã thừa hưởng việc duy trì một cơ sở dữ liệu Access 2003 có chứa khoảng 250 báo cáo (và hàng ngàn hỗ trợ các truy vấn) đóng vai trò như một công cụ báo cáo cho ứng dụng của chúng tôi.
Tất cả các báo cáo đều có Vath của chúng để định dạng cụ thể hoặc kéo thêm thông tin vào báo cáo. Vì lý do này, chúng ta hoàn toàn bị khóa vào nền tảng Access, chúng ta không thể sử dụng các công cụ như BIDS để nhập các đối tượng báo cáo Access mà không làm rối tung xung quanh để làm cho báo cáo hiển thị giống nhau mà không có VBA.
Vì vậy, để thoát khỏi giải pháp Truy cập này, chúng tôi cần dành chút thời gian để xem xét từng báo cáo. Điều này có nghĩa là chúng tôi đang tìm cách chọn giải pháp dài hạn tốt nhất, vì chúng tôi sẽ phải phát triển lại mọi báo cáo bất kể nền tảng chúng tôi chọn.
Hơn nữa, khách hàng của chúng tôi có lựa chọn Microsoft Access hoặc SQL Server làm cơ sở dữ liệu của họ. Điều này có nghĩa rằng tất cả các câu lệnh SQL của chúng ta phải được viết với mẫu số chung thấp nhất trong tâm trí - JET SQL. Chúng tôi đã có một số phòng lung lay để thả hỗ trợ cho Microsoft Access, nhưng chúng tôi cần phải xây dựng một trường hợp cho nó. Nếu hệ thống báo cáo tốt nhất chúng tôi có thể xác định có hỗ trợ mạnh mẽ cho SQL Server nhưng ít hoặc không có hỗ trợ cho Microsoft Access này sẽ đẩy nhanh chúng tôi giảm hỗ trợ cho Microsoft Access như một cơ sở dữ liệu.
Việc triển khai tổng thể hệ thống báo cáo khá tầm thường, khi chúng tôi muốn hiển thị báo cáo trong ứng dụng, chúng tôi bắt đầu quy trình Microsoft Access, tìm cửa sổ và sửa lại ứng dụng, xóa phong cách cửa sổ và sử dụng Access.Application
Giao diện COM để gọi một số VBA tạo bảng được liên kết tới cơ sở dữ liệu (hoặc Microsoft Access MDB hoặc cơ sở dữ liệu SQL Server) và sau đó mở báo cáo mà chúng tôi muốn. Có lẽ phần hỗ trợ duy nhất của quá trình này là sử dụng giao diện COM công khai, phần còn lại là một hack xấu xí. Các thành phần khác trong ứng dụng cũng không kém phần hấp dẫn.
Để "sửa" ứng dụng của chúng tôi, chúng tôi đã có một kế hoạch phát triển mới, với việc phát triển ứng dụng của chúng tôi chia thành (khoảng) ba phần mỗi năm.
- 4 tháng nâng cấp ứng dụng của chúng tôi để hỗ trợ pháp luật chính phủ mới nhất trong ngành công nghiệp của chúng tôi
- 4 tháng cung cấp một tính năng chính mới
- 4 tháng "củng cố" (sửa chữa những gì bị phá vỡ)
Hiện tại chúng tôi đang ở vị trí # 3 (cho năm nay) và chúng tôi thực sự muốn tận dụng thời gian ngừng hoạt động để sửa lỗi ứng dụng, tái cấu trúc các thành phần chính. Chúng tôi có ba nhà phát triển và muốn AppName phiên bản 5.0 ra vào cuối năm 2012 (hiện tại AppName v4.12). Điều này cho chúng ta 36 tháng nỗ lực phát triển để phê duyệt giữa một số thành phần (giao diện người dùng, cấu trúc cơ sở dữ liệu cơ bản, báo cáo, vv) trong ba giai đoạn hợp nhất mà chúng ta sẽ có trước đó. Tổng các thành phần mà chúng tôi sửa sẽ cung cấp cho chúng tôi phiên bản 5.0.
Chúng tôi đã tìm ra những gì chúng tôi muốn thực hiện với hầu hết các thành phần ngoại trừ công cụ báo cáo của chúng tôi và tôi đăng trên SO với hy vọng nhận được một số ý tưởng hay ít nhất là công việc đó là bắt buộc.
Tôi có hai ý tưởng để cải thiện hệ thống báo cáo của mình. Cả hai đều liên quan đến một lượng công việc vừa phải, và có một cân nhắc rằng cả hai giải pháp đều không hoàn toàn: ngoài các báo cáo mà chúng tôi phát triển, khách hàng của chúng tôi cũng có cơ hội yêu cầu phát triển báo cáo riêng biệt. Họ là khách hàng cụ thể, chúng tôi lấy cơ sở dữ liệu Access của họ, tăng thêm nó với báo cáo của họ và đưa nó trở lại cho khách hàng. Có hàng trăm báo cáo duy nhất hiện có - không sử dụng được nếu chúng tôi tắt hệ thống cũ. (Và cuối cùng chúng ta phải tắt hệ thống cũ - chúng ta không biết chúng ta sẽ có thể làm rối tung xung quanh với cửa sổ Microsoft Access lâu hơn để làm cho nó trông giống như một báo cáo được nhúng. Chúng ta đã có hai mã riêng biệt đường dẫn cho Access 2003 và 2007. Điều gì sẽ xảy ra nếu chúng tôi không thể hack đường dẫn mã cho Access 2010 và tất cả khách hàng của chúng tôi phải sử dụng Access 2007?)
Cho cả hai ý tưởng, ý định là ngừng hỗ trợ hệ thống báo cáo hiện tại của chúng tôi và để cho nó chạy miễn là nó sẽ không bảo trì. Có lẽ chúng tôi có thể hack trong Access 2010 và Access 2014 hỗ trợ, và các báo cáo khách hàng đã được phát triển tiếp tục đưa thêm 5 năm nữa. Theo thời gian, chúng tôi sẽ di chuyển các báo cáo được sử dụng phổ biến nhất từ cơ sở dữ liệu Access cũ sang định dạng mới của chúng.
Idea 1: Microsoft.Reporting.WinForms.ReportViewer
Ý tưởng đầu tiên là viết một wrapper xung quanh việc kiểm soát
ReportViewer
như một công cụ báo cáo thay thế.Chúng tôi cần di chuyển dự án sang C++/CLI (đã có trên thẻ) và thay vì phải khởi chạy toàn bộ quy trình mỗi khi chúng tôi cần xem báo cáo, chúng tôi có thể đơn giản hóa việc kiểm soát này. Một tiền thưởng cho rằng các tập tin
RDLC
chứa các báo cáo dễ kiểm soát phiên bản trong Subversion hơn so với cơ sở dữ liệu Access 2003 hiện có (chúng tôi sử dụng Visual SourceSafe vì các công cụ tích hợp SVN với Access không hoạt động tốt với kích thước của cơ sở dữ liệu Access của chúng tôi). Trình thiết kế trực quan cho các tệpRDLC
cũng được tích hợp độc đáo vào Visual Studio.Đây là một thay đổi tiến hóa hơn là cách mạng theo cách chúng tôi thực hiện báo cáo, điều khiển
ReportViewer
sẽ có tệpRDLC
có bố cục báo cáo và ứng dụng của chúng tôi sẽ xử lý dữ liệu. Bởi vì cơ sở dữ liệu của chúng tôi có thể là SQL Server hoặc Microsoft Access, chúng tôi vẫn phải viết SQL JET đơn giản. Chúng tôi đang đạt được báo cáo tốt hơn (xem chi tiết có vẻ đẹp), các công cụ authoring mạnh hơn và kiểm soát phiên bản dễ dàng hơn, nhưng điều này có đáng để thử không?
Idea 2: SQL Reporting Server Dịch vụ và SharePoint 2010 với Access Services
Ý tưởng thứ hai là để giết truy cập như một nền tảng cơ sở dữ liệu và di chuyển tất cả các khách hàng của chúng tôi để SQL Server (chúng tôi đã tổ chức trường hợp ứng dụng của chúng tôi cho những khách hàng không có kỹ năng được thiết lập để thiết lập các phiên bản SQL Server riêng của họ). Khi chúng được di chuyển, chúng tôi sẽ sử dụng SQL Server Reporting Services làm công cụ báo cáo, với điều khiển
ReportViewer
ở chế độ hiển thị máy chủ.Ngoài dịch vụ báo cáo SQL Server, tôi tò mò muốn xem liệu SharePoint 2010 with Access Services có thể được sử dụng để di chuyển nhanh các báo cáo Truy cập hiện tại sang định dạng dễ quản lý hơn hay không. Chúng tôi sẽ lấy báo cáo Truy cập mà khách hàng sử dụng, chuyển đổi nó thành Báo cáo Web Truy cập rồi làm cho nó có sẵn cho họ trên trang SharePoint. Điều này sẽ chỉ dành cho khách hàng được lưu trữ của chúng tôi, nhưng nếu chúng tôi tìm cách giải quyết nhanh chóng VBA trong báo cáo khách hàng, chúng tôi có thể thông qua hàng trăm báo cáo tùy chỉnh mà khách hàng của chúng tôi có.
Tôi cũng quan tâm đến khả năng sử dụng Biểu mẫu điều hướng web truy cập để hoạt động như một cổng thông tin cho tất cả các báo cáo của chúng tôi. Chúng tôi sẽ lưu trữ một điều khiển trình duyệt web bên trong ứng dụng của chúng tôi, điều này sẽ cung cấp cho khách hàng quyền truy cập vào các báo cáo của riêng họ và với bộ tiêu chuẩn của chúng tôi.
Chúng tôi sẽ nhận được tất cả lợi ích của Idea # 1 cộng với khả năng viết toàn bộ SQL Giao dịch, cổng báo cáo và (hy vọng) đường dẫn nâng cấp hợp lý cho báo cáo độc quyền của khách hàng.
Vì vậy, câu hỏi của tôi là: tôi có đi đúng hướng không? Những giải pháp này có khả thi cho các hệ thống báo cáo hiện đại hay không? Chúng tôi có sở thích mạnh mẽ khi sử dụng điều khiển ReportViewer
trong chế độ hiển thị của khách hàng nơi ứng dụng của chúng tôi xử lý dữ liệu hoặc trong chế độ kết xuất máy chủ kết hợp với SQL Server - nhưng có hệ thống báo cáo như Crystal Reports cung cấp báo cáo tốt hơn và đường dẫn di chuyển tốt hơn truy cập báo cáo cũ của chúng tôi?
Nếu bạn có tối đa 36 tháng thời gian của nhà phát triển, bạn sẽ làm như thế nào?
Đây là trên lớp lương của tôi, nhưng nó có vẻ với tôi như các báo cáo trong Access không được thực hiện đúng cách ở nơi đầu tiên. Nó sẽ không phải là trường hợp mà sửa chữa mà có thể đi một chặng đường dài hướng tới sửa chữa vấn đề? –
@ David-W-Fenton - Xin chào David, cảm ơn phản hồi của bạn. Có, các báo cáo và các truy vấn không được thực hiện đặc biệt tốt, đó là * một * vấn đề. Vấn đề lớn hơn là cách chúng tôi sử dụng các báo cáo, (theo mô tả của tôi ở trên). Chúng tôi có một số mã được viết kém để xử lý Access giống như một giải pháp báo cáo * được nhúng *, khi nó thực sự không. Vì vậy, chúng tôi có thể dành một chút thời gian để sửa tất cả các báo cáo và vẫn có triển khai xấu này. Thay vào đó, chúng tôi muốn dành thời gian di chuyển tất cả các báo cáo sang một hệ thống báo cáo thích hợp, được thiết kế để tích hợp vào một ứng dụng dành cho máy tính để bàn. –
Có cách nào để tránh việc triển khai xấu việc coi Access là "giải pháp báo cáo được nhúng" không? Điều đó có vẻ như là nguồn gốc của vấn đề, phải không? –