2010-10-24 21 views
6

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.

  1. 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
  2. 4 tháng cung cấp một tính năng chính mới
  3. 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ệp RDLC 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ệp RDLC 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?

+1

Đâ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 đề? –

+0

@ 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. –

+0

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? –

Trả lời

6

Vâng, ok, không ai khác nhảy vào, tôi cho phép điều này.

Khá thú vị về cách bạn nói về một người viết báo cáo từ 15 tuổi trở lên. Quay lại sau đó, người viết báo cáo truy cập vượt quá trạng thái của nghệ thuật. Đó là một quốc gia dặm trước mọi thứ khác trong ngành. Thậm chí ngày nay rất nhiều nhà văn báo cáo cạnh tranh không có khái niệm về các báo cáo phụ cho phép mô hình hóa dữ liệu quan hệ mà không cần phải sử dụng mã hoặc thậm chí SQL. Sau đó, ném vào VBA lập trình, sau đó kết quả là một cái gì đó rất độc đáo và mạnh mẽ.

Để truy cập 2007, người viết báo cáo nhận được một số nâng cấp tốt đẹp hơn về điều khiển bố cục nhưng điều đó sẽ giúp ích rất ít ở đây.

Và, trong năm 2010, giờ đây chúng tôi có thể hiển thị báo cáo trong điều khiển biểu mẫu con. Tính năng này được thêm vào để tạo thuận lợi cho việc sử dụng điều khiển truy cập mới. Access 2010 có một điều khiển trình duyệt web mới (hoạt động trong biểu mẫu hoặc báo cáo), và cũng có một điều khiển điều hướng mới. Bài viết của bạn gợi ý rằng điều khiển điều hướng mới và điều khiển web bằng cách nào đó liên quan đến nhau nhưng chúng hoàn toàn khác nhau.

Cả điều khiển trình duyệt web mới và điều khiển điều hướng đều có thể được sử dụng trong cả ứng dụng web hoặc ứng dụng khách 100%.Điều khiển điều hướng là tốt đẹp vì bạn có thể xây dựng nav contorl đó bằng cách kéo và thả các báo cáo vào điều khiển nav để xây dựng một danh sách các báo cáo để lựa chọn (nó trơn và dễ dàng và đẹp). Và với điều khiển điều hướng này, chúng tôi thực sự có thể xây dựng một số loại giao diện tốt đẹp cho các báo cáo.

Như bạn đã lưu ý khi truy cập 2010, chúng tôi hiện đã xuất bản các báo cáo truy cập web và tính năng này dựa trên các dịch vụ báo cáo máy chủ SQL (chúng là các báo cáo RDL). Tuy nhiên, hai vấn đề quan trọng ở đây là không có VBA được cho phép bên trong các báo cáo web. Và, tôi cũng chỉ ra rằng không có tiện ích chuyển đổi tự động nào được tích hợp vào quyền truy cập sẽ chuyển đổi các báo cáo hiện có thành các báo cáo dựa trên web. Vì vậy, để xây dựng báo cáo sẽ được chỉ định và xuất bản lên web, bạn phải chọn cụ thể để tạo báo cáo web để thực hiện mục tiêu này. Vì vậy, điều này trả lời và xóa một câu hỏi của bạn của điều này sẽ giúp bạn chuyển đổi các báo cáo hiện có cho máy chủ SQL, và câu trả lời là không. Vì vậy, Access sẽ không giúp bạn chuyển đổi các báo cáo hiện có sang báo cáo RDL dựa trên web (Như đã lưu ý, Access sử dụng báo cáo RDL và sql cho các báo cáo web đó - những báo cáo đó cũng hiển thị ở phía máy khách truy cập mà không cần chuyển đổi).

Truy cập có đường dẫn tuyệt vời cho báo cáo dựa trên web qua SharePoint và cũng có thể truy cập Web đến Office 365. Tuy nhiên, hãy nhớ rằng khả năng này sẽ không giúp ích nhiều với các báo cáo hiện có mà bạn có.

Thực tế, một trong những điều tôi sẽ xem xét nếu bạn định sử dụng trình xem báo cáo winforms là sự thay đổi nơi mã báo cáo VBA hiện tại sẽ được chuyển đến? Bạn không thực sự đề cập đến vấn đề này. Như đã nói, một đặc điểm thú vị và tuyệt vời của các báo cáo đó là mã VBA được nhúng. Thường thì VBA sẽ được sử dụng bởi vì SQL và một cái gì đó giống như RDL sẽ KHÔNG làm việc vì không có ngôn ngữ nào (sql và RDL) là mã thủ tục.

Tôi không thể nhấn mạnh tầm quan trọng của khái niệm này. Vì vậy, điều này khá nhiều có nghĩa là bất kỳ thay thế nhà văn báo cáo có nghĩa là mã bây giờ sẽ phải được bên ngoài của các báo cáo và di chuyển vào ứng dụng của bạn. Vì vậy, hãy ghi nhớ vấn đề này ngay bây giờ khi bạn phát hành báo cáo mới, bạn cũng đang phát hành mã thủ tục mới KHÔNG được chứa trong các báo cáo đó. Mã này sẽ phải trở thành một phần của ứng dụng của bạn (do đó, để phát hành các báo cáo mới, do đó bạn cũng sẽ sử dụng phiên bản phần mềm mới của mình).

Bạn không có khả năng tìm thấy nhiều thứ cho phép mã thủ tục được nhúng vào bên trong báo cáo giống như bạn có thể truy cập. Vì vậy, mã báo cáo và logic đó bây giờ sẽ phải được xây dựng và duy trì trong ứng dụng chính của bạn và bên ngoài các báo cáo.

Vào cuối ngày, tôi nên chỉ ra câu ngạn ngữ cũ nếu nó không bị hỏng, sau đó không thay đổi nó. Truy cập được khoảng một thời gian rất dài, nhưng chúng tôi đã thấy những khoản đầu tư đáng kể từ những người ở Redmond vào sản phẩm này trong vài năm qua, vì vậy nó không có dấu hiệu sắp chết bất cứ lúc nào.

Vì vậy, một đề xuất có thể là giữ nguyên trạng thái và tiếp tục hoạt động ngay bây giờ. Tôi có nghĩa là bạn nói rằng bạn phải tiếp tục hỗ trợ JET cho điều này anyway, do đó bạn không nhận được từ việc phải sử dụng một phần lớn của Access anyway. Vì vậy, bạn tiếp tục phải sử dụng động cơ JET anyway. Vì vậy, bạn chỉ cần bán phá giá báo cáo và bạn vẫn sử dụng công cụ dữ liệu JET.

Tuy nhiên, giả sử quyết định này được đưa ra, tôi thực sự không thể đề xuất người viết báo cáo nào bạn nên thay thế người truy cập báo cáo. Rõ ràng những cân nhắc cho người viết báo cáo tiếp theo nên có một đường dẫn liền mạch tới trang web ngay cả khi họ đang BÂY GIỜ sẽ được hiển thị trên màn hình nền. Nó không có ý nghĩa để thực hiện một đầu tư lớn ngày hôm nay mà không cần cân nhắc web trong một số thời trang.

Tôi nghĩ dịch vụ báo cáo máy chủ SQL là một lựa chọn tốt do khả năng web.Và, với tư cách là nhà phát triển truy cập, chúng tôi cũng có tùy chọn tạo báo cáo dựa trên web nhưng chúng cũng hiển thị hoàn hảo trong ứng dụng khách truy cập ở phía máy tính để bàn (và điều này hoạt động khi bạn không có máy chủ và không có vấn đề chuyển đổi nào tồn tại khi xuất bản các báo cáo này lên web hoặc sử dụng chúng cục bộ trên máy khách). Vì vậy, ngay cả khi bạn không sử dụng quyền truy cập, hãy chọn thứ gì đó cho phép báo cáo hiển thị cả máy tính để bàn và web giống như quyền truy cập 2010 cho phép.

Tôi sẽ xem xét việc xây dựng hệ thống báo cáo xung quanh một số công cụ .net. Điều này có thể sẽ không phát tốt như hệ thống báo cáo được nhúng bên trong ứng dụng hiện có của bạn, nhưng nó sẽ cho phép bạn phát hành báo cáo mới và bạn sẽ không phải chạm vào cơ sở mã hiện tại của mình cho mỗi báo cáo mới được phát hành. Việc phát hành các báo cáo mới có mã thủ tục cần được giải quyết. Bây giờ, bạn có thể phát hành các báo cáo mới mà không phải sửa đổi ứng dụng chính vì các báo cáo đó có thể chứa mã bên trong. Tôi sẽ tìm cách sử dụng một cái gì đó mà sẽ cho phép các báo cáo mới được xây dựng và ban hành nhưng bạn không phải phát hành phiên bản mới của phần mềm chính của bạn. Bạn có thể không bắt buộc mã trong các báo cáo nữa, nhưng bạn cần phải nhét nó ở đâu đó, và hy vọng bên ngoài ứng dụng chính của bạn.

+0

Hi Albert, cảm ơn bạn đã bình luận của bạn. Bạn thực hiện một điểm tốt về VBA đằng sau các báo cáo. Hầu hết VBA chúng tôi sử dụng là định dạng báo cáo hoặc làm những việc như đưa vào chi tiết doanh nghiệp dưới dạng chuỗi chúng tôi có thể đưa vào tiêu đề trang. Nhưng các báo cáo SQL Server có các biểu thức điều kiện để định dạng, và theo tôi biết cách _correct_ để xử lý một cái gì đó giống như tiêu đề nghiệp vụ tiêu chuẩn trong bất kỳ hệ thống báo cáo nào là có một subreport và (nếu cần) liên kết nó thông qua các tham số. _BUT_ Tôi nghĩ rằng chúng tôi có một cái gì đó giống như 10K dòng VBA đá xung quanh, một số của nó nontrivial. –

+0

Và liên quan đến "nếu nó không bị hỏng, không khắc phục được", hiện tại việc triển khai Truy cập của chúng tôi bị hỏng theo thiết kế. Ứng dụng của chúng tôi không phải là một ứng dụng Access, nó không phải là Microsoft Access. Chúng tôi bắt đầu Truy cập và đặt lại vị trí trên màn hình giống như đang chạy trong ứng dụng của chúng tôi. Ngoại trừ nếu người dùng nhấp vào thanh tiêu đề, họ có thể kéo nó ra khỏi ứng dụng của chúng tôi. Nó không phải là một thực hiện rất phù hợp, và không có cách nào được hỗ trợ để nhúng Microsoft Access vì vậy chúng tôi đang tìm kiếm ở nơi khác. Chúng tôi đang cố gắng tìm ra nơi công việc sẽ thay đổi nền tảng báo cáo. Chúng tôi muốn làm điều đó một lần và làm điều đó đúng. –

+0

một ý kiến ​​nâng cao và thứ hai là ý kiến ​​để bắt đầu bằng cách nâng cấp các phần truy cập lên phiên bản truy cập mới nhất. Nếu bạn muốn, bạn có thể đưa chúng ra từng cái một. Hãy nhớ rằng khi nói đến các báo cáo, tất cả các công cụ định hướng đối tượng ưa thích và các mẫu thiết kế đều có ROI nhỏ hơn nhiều so với logic chính. Giữ càng nhiều càng tốt và tiếp tục truy cập nếu bạn có thể (đặc biệt thông qua sức mạnh HTML của nó). sau đó nếu bạn gặp khó khăn, bạn có thể bắt đầu tái cấu trúc các báo cáo từng cái một. Nhưng kết quả sẽ chỉ hơi kém đẹp hơn (và chỉ vì bạn đã quen thuộc với chúng!) – FastAl

1

Ồ, đây là một câu hỏi hay và Albert đã cho bạn một câu trả lời tuyệt vời.

Thật không may, tôi không tin có bất kỳ đạn ma thuật nào để giải quyết vấn đề của bạn. Tôi đã sử dụng Microsoft Access vì nó là phiên bản đầu tiên và luôn cảm thấy tính năng mạnh nhất của nó là một trình tạo báo cáo, đặc biệt khi được sử dụng với SQL Server. Như bạn chắc chắn biết, một trong những thường có thể có vấn đề với cơ sở dữ liệu Access bị hỏng trong một môi trường đa người dùng và địa chỉ SQL Server phát hành rất độc đáo.

Theo cách của tôi, vấn đề lớn nhất với Access là Microsoft đã đưa ra mã được quản lý (.Net) mười năm trước nhưng Access vẫn là ứng dụng gốc. Trong một thế giới lý tưởng, Microsoft sẽ viết lại Access trong C# bằng cách sử dụng tất cả các tính năng mới nhất như hỗ trợ cải tiến cho nhiều bộ vi xử lý, vv Thật không may tôi không mong đợi điều này xảy ra bất cứ lúc nào. Visual Basic for Applications (VBA) chắc chắn đã trở thành "nhà nước của nghệ thuật" khi nó được giới thiệu, nhưng hôm nay tôi tin rằng hầu hết đều đồng ý rằng việc viết mã VB.Net với Visual Studio hiệu quả hơn nhiều so với việc tiếp tục phát triển trong VBA.

Trong khi lựa chọn trình tạo báo cáo mới là điều bạn cần phải sống trong vài năm, có lẽ sẽ hữu ích khi xem xét trình tạo báo cáo "lý tưởng" trong mười năm tới sẽ như thế nào?

Cá nhân tôi muốn:

1) Tất cả đồ họa tuyệt vời và dễ dàng tạo skinning và thương hiệu mà Silverlight cung cấp.

2) Hỗ trợ đa bộ xử lý tuyệt vời (bạn phải nhận thấy cách chuỗi giao diện người dùng trong Access thường xuất hiện "không phản hồi" khi chạy truy vấn hoặc báo cáo dài).

3) Hỗ trợ cho rất nhiều thiết bị như điện thoại di động, iPad, vv Trong khi ngày nay máy tính để bàn và web thống trị, chúng đang trở nên ngày càng quan trọng (trừ một số lý do cụ thể chúng không quan trọng đối với khách hàng của bạn).

4) Hỗ trợ cho thực hành lập trình hiện đại như kiểm tra định hướng phát triển, dependency injection, vv

hãy làm cho chúng tôi biết những gì bạn quyết định.

+0

Cảm ơn bạn đã cho điểm số 3, nó không phải là một cái gì đó chúng tôi đã xem xét đến nay. Đơn giản vì ứng dụng của chúng tôi chạy trên máy tính để bàn, nhưng trong 10 năm tới, chúng tôi sẽ có rất nhiều thiết bị khác nhau mà chúng tôi có thể cần để chạy ứng dụng của mình. –

0

Bạn có thể xem ActiveReports bằng Data Dynamics. Chúng tôi sử dụng nó trong các ứng dụng của chúng tôi cho các báo cáo loại giấy tờ (ví dụ, hóa đơn) và nó cực kỳ linh hoạt, nhiều hơn so với những gì bạn có thể đạt được với các công cụ báo cáo MS.Đối với các báo cáo là báo cáo chính hãng hơn là thủ tục giấy tờ, chúng tôi sử dụng dịch vụ báo cáo. Đã một thời gian kể từ khi tôi phải chuyển một báo cáo truy cập đến các báo cáo hoạt động, nhưng có rất ít hoặc không có gì bạn có thể làm trong truy cập mà bạn không thể thực hiện trong các báo cáo hoạt động. Tôi cũng khá chắc chắn rằng nó có một công cụ phong nha cho các báo cáo truy cập nhập khẩu. Có một phiên bản đánh giá đầy đủ chức năng có sẵn để tải xuống, trong đó, trừ khi họ đã thay đổi mọi thứ, chỉ cần in một hình mờ trong chân trang báo cáo thay vì hết hạn sau một thời gian đánh giá cố định. Rất đáng xem, tôi muốn nói - Here's a link to their site

+0

Xin chào Kevin, tôi sẽ xem xét sản phẩm đó. Nó có vẻ khá tốt. –

1

Đây là một cảnh quay dài nhưng có khả năng sử dụng Access để tạo PDF đã lưu và hiển thị trong ứng dụng của bạn trong điều khiển xem PDF là một phần của ứng dụng của bạn, thay vì bên ngoài? Hoặc xuất sang XML hoặc một thứ gì đó (tôi chưa biết đầu ra các tùy chọn xuất XML nào cho các báo cáo trong các phiên bản Access gần đây, nếu có)?

Vấn đề là bạn không phải viết lại logic báo cáo Access, nhưng bạn đã loại bỏ việc nhúng giả mạo và thay thế nó bằng một thứ thực sự được nhúng trong ứng dụng của bạn.

Điều bạn muốn từ bỏ là có lẽ các tùy chọn mà giao diện người dùng truy cập cung cấp cho người dùng, nhưng tôi không chắc chắn mức độ hữu ích (tôi có xu hướng không phải muốn các tùy chọn đó có sẵn!).

Ngoài ra, bạn sẽ kiên trì báo cáo cho đĩa, nhưng tôi không chắc đây là vấn đề quan trọng nào, nhưng hoàn toàn phụ thuộc vào ngữ cảnh (tôi giả sử bạn không có Báo cáo 1000 trang với đồ họa nặng, v.v.).

+0

+1! Đây là một ý tưởng thực sự tốt. Tôi đã có một mối quan tâm về cách chúng ta sẽ hiển thị các truy vấn (SQL chạy và trả về một bảng, chứ không phải báo cáo), nhưng tôi nghĩ chúng ta có thể làm một trường hợp đặc biệt cho chúng và viết một điều khiển bảng có các tùy chọn sắp xếp/lọc. Tải dữ liệu vào SQL Server Compact và chúng tôi để nó làm việc chăm chỉ cho chúng ta! Đây cũng không phải là số lượng công việc huuuuuuuge (ngoại trừ việc viết kiểm soát báo cáo bảng), chúng tôi đã có mã để chuyển báo cáo Access thành tệp PDF. –

+0

Đây có phải là câu trả lời hay nhất cho câu hỏi của bạn không? Nếu vậy, bạn sẽ để cho tiền thưởng hết hạn mà không đưa nó cho bất cứ ai? Bạn biết đấy, tôi hy vọng, rằng bạn mất điểm danh tiếng ngay cả khi tiền thưởng không được trao, phải không? –

+0

Bạn đang yêu cầu danh tiếng? Tôi nghĩ rằng đó là chống lại niềm tin của bạn;) – Fionnuala

0

Tôi sẽ không tham gia bất kỳ chi tiết cụ thể nào vì tôi không phải là nhà phát triển Microsoft, nhưng tôi có thể trả lời cách tích hợp sản phẩm cũ vào sản phẩm hiện tại hoặc sản phẩm mới. Đối với câu hỏi 36 tháng, hãy xem phần cuối của câu trả lời này.

  • Yêu cầu sử dụng - cách bạn dự định sử dụng mã cũ trong bối cảnh mã mới của bạn?
  • Xác định các trường hợp sử dụng - xem chi tiết cách sử dụng và tạo trường hợp sử dụng cho mỗi giao dịch giữa mã mới và mã cũ.
  • Xác định I/O - xem chi tiết từng trường hợp sử dụng và xác định yêu cầu I/O
  • Viết thử nghiệm - cho mỗi cặp I/O, viết kiểm tra để xác định cách tốt nhất để xử lý cặp I/O đó.
  • Sử dụng lại - sử dụng lại các thử nghiệm của bạn để tạo trình bao bọc/API cho mã cũ.
  • Tương lai - khi bạn thay thế mã cũ bằng mã mới, hãy để mã phù hợp với trình bao bọc/API của bạn để bạn có thể tiếp tục tái cấu trúc ở mức tối thiểu.

Nếu tôi có thời gian phát triển 36 tháng, tôi sẽ dành 3-6 tháng viết wrapper/API và sau đó thay thế từng cặp I/O thử nghiệm bằng mã mới mỗi 7-10 ngày sử dụng chạy nước rút (scrum/agile).

Đối với lưu trữ dữ liệu, tôi hoàn toàn sẽ chuyển từ Access sang một số sản phẩm máy chủ SQL và ưu tiên yêu cầu đó cho mã mới.

0

Tôi đã sử dụng Crystal, Access (2 - 2007), SQL Reporting và bây giờ DevExpress và tôi rất hài lòng với công cụ báo cáo của DevExpress. Nó là đặc trưng cho .net, nhưng có thể được sử dụng bởi Windows Forms, các trang Web ASP.net, WPF và Silverlight. Nếu bạn sẵn sàng sử dụng một số điều khiển .net, tôi rất khuyên bạn nên sử dụng nó. Nó có thể sử dụng bất cứ thứ gì như một nguồn dữ liệu và rất linh hoạt. Các dự án hiện tại của tôi không phức tạp như một số điều tôi đã làm trong quá khứ, nhưng tôi sẽ mạo hiểm nói rằng tôi muốn làm các báo cáo phức tạp hơn bằng cách sử dụng công cụ DX trên bất kỳ công cụ nào khác mà tôi đã sử dụng.

Họ có nhà thiết kế người dùng cuối bao gồm capabiliities kịch bản và DX đang tích cực thêm chức năng.

tôi sẽ khuyên bạn nên dùng một cái nhìn tại địa chỉ: http://devexpress.com/Products/Index/Reporting.xml

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