I'm looking to build a reporting portal on top of our database which is SQL Server 2008 R2.
It's been suggested that I use SSRS, and I've played around with it for a few hours. I found it very easy to point it to a table and have it generate a table/graphs for you. It could all be done in a few minutes, and that's great.
I had a hard time customizing the report to make it look nice. I thought it was like using Word to design a website, the customization was pretty limited. I have experience in web development using ASP.NET with jQuery, and I'm currently thinking that I could make the portal much faster if I could use my experience with those technologies.
I'd like to get advice on which path is best for my project.
Queries to the db are fairly simple, but not trivial. I have no problem building the data and business layers myself by using Linq-to-Sql.
I do not need print support
I need an emailing system that sends out reports every day, which I can also build myself (it doesn't need to let users subscribe to reports)
Don't need the flexibility of having users create their own reports. This is only for 2-3 different reports.
I enjoy the development experience using web technologies and feel comfortable building a pleasant user experience with jQuery and plugins. I fear that using SSRS, I would be limited to something ugly and not "fun" to use.
I want this project to be up in 2-3 weeks. I can't afford to re-invent the wheel for everything, but I also don't want to spend most of my time asking questions like "how do I make a fade-in effect in ssrs?"
How easy is it to customize the UI? Are there good examples online of what can be achieved? Does SSRS have some advantage that I could hardly get by writing my custom solution? I'm thinking in terms of application performance and overall functionality.
Thanks for your input.
I have built custom web interface to a suite of SSRS reports. You can easily do this, and submit the gathered report parameters to Reporting Services, and have it render the generated report to a web page, all as if the user had used the SSRS interface to begin with.
Some comments i would make:
let SSRS handle the reporting side of things. It has all the power and features you could need. And its free. And tested. And extensible. And renders to multiple (printable) formats.
you could maybe look at buying a set of controls designed to be used with SSRS to get even nicer chart output
you can build your own (parameter gathering & report triggering) interface within three weeks, but the schedule will be tight
you can't use jQuery within the rendered reports. A lot of the HTML within the rendered report is hardcoded template type code (styles etc are embedded into the report rather than linking to an external file)
you don't need jQuery fade-in panels to make your reports pretty :)
So, as you know SSRS allows web and winforms output, printing, and all that. But your users will undoubtedly end up bugging your for PDF and Excel exporting, which is also built-in.
It's also a lot easier to edit the reports without having to alter your app and as you mentioned it has the emailing built in.
SSRS is quite powerful if you play around with the grouping and parameterization. The designer is a little clunky as you make more complicated reports, but I've always been able to design what I want. I've not used Crystal Reports but presumably it's even more powerful but it is another thing to learn and obtain.
I use 2 main reporting tools (Business Objects and SSRS) and also Microsoft Access. I can honestly say that I prefer SSRS for 95% of the work I do. The users really like all the drill through options you can do. For example lets say you have a chart showing widgets sold, you can click on that bar of the bar graph and have it drill to a report showing a breakdown of which widgets were sold.
This ability of going from a “high level” to low level detail is really powerful to the users. As for looks, I quite like the default controls that ship with report builder 3.0, they have come a long way and just look what is around the corner with project crescent
http://blogs.msdn.com/b/sqlrsteamblog/archive/2010/11/09/a-glimpse-at-project-crescent.aspx
I know it's probably not a WEB-BASED technology but I would definitely give Crystal Reports a try. Specially considering your time constraints...
Related
I am designing a reporting page using WinForms.ReportViewer and only process the data locally. It means we want to display some information from objects that we designed. For example, we have our own classes for date and time. However, in the report page this date and time information can not be displayed correctly (shows #ERROR). Is there any way to tell it how to show our information? Thanks!
With the newer ReportViewer versions, MS has introduced an error that disables the possibility for navigation within objecs.
They have corrected the error with the last service pack a little and if your objects support serialization, now navigation may work.
For my newer projects built with report viewer 2010, I have started to write a wrapper for each object/entity I have to render. I started with this during the time, no fix was available and now I'm very comfortable with this pattern. In the first moment, it gives a little more of work, but it has given me great flexibility and left my code clean. And if one day I dont have the patience to work further with report viewer anymore, it will make it easy to move my projects to another reporting engine.
I just saw nice little demo about Oracle ADF Rich components: http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/adffaces/adffaces.html.
Looks really cool, nice and easy but of course its just a demo :). I would like to ask if someone actually uses it for a production app, how they compare to popular open source alternatives like RichFaces or IceFaces etc.
How about a deployment to a different server than weblogic?
We use ADF Faces. It is quite good. They have all the basic components(input text, output text, input file, date pickers, tables, etc) and some advanced components(graphs, tree,tree tables, etc). The layout components are also good and will suffice for most use cases.
But as with any JSF component, ADF Faces Components are hard to modify. For instance, if you want to add, say, a placeholder text, on an input text then you need to resort to fragile hacks.
I would recommend ADF Faces for enterprise apps where the ability to alter and fine tune UI components is not as important as fast and low cost development.
Also, ADF Faces isn't just a component framework. It is a full ViewController framework. Check out their Task Flows and you will be amazed.
We also use ADF Framework for our current product where we migrate our existing form based product to the new framework.
The major benefit that I'd like to point out in ADF is the way they promote declarative programming. I have to admit being a strong java developer, I have the tendency to go and add my own programmatic handling, but for someone who is used to forms, they will find it easy to learn the basics.
A strong feature that I also like to point is the way they clearly defined the MVC architecture. Model = BC, Controller = TaskFlow, View = well this one is obvious. Kudos to ADF the way they designed the taskflows as you get to have a visual representation or better put, a story of your design as well as your logic.
I am not sure about using a different server as ADF along with JDeveloper gives quite a load of features which allows you to configure directly to your server and be able to test on your intergrated server as well, with this I mean more on the security side as well as authentication piece of it. So even if you are able to migrate all the libraries needed, you might still be missing out in some of the other technologies that can be easily integrated with a weblogic server. (such as webcenter, soa etc.)
Is it possible to embed the Visual Studio 2010 report designer functionality into my WPF application?
Initially I was considering the use of Report builder, but for providing ad-hoc reporting capability from within application, I need to teach users too many steps before they start creating a simple report. So I am now thinking of simplifying it by embedding the report Designer (if it is possible), and do all the basic steps programatically and show the design surface and Data objects on the left.
Any help is appreciated.
I have not found any good way so far and decided to use Report Builder instead. The approach I took is to build a report skeleton programtically with connection and query embedded in the RDL to expose object model instead of tables and views and launching the Report Builder to open this RDL. Yes.. there is lot of overhead that I need to build a query with lot of unnecessary fields and joins and the resulting performance is terrible. In a future version I will come up asking the users the fields they need to use int he report to improve performance.
Looks like Microsoft is going to make customers pay for SSRS from 2012 version. So this choice of use SSRS may even b ruled out.
Years ago (pre-web) I used to be a Fortran developer (yes it was a very long time ago!) but these days I run a small non-IT business. I would like to develop a database application for my clients to access via a browser (or maybe down the line via a mobile phone). I haven't done any programming for a while apart from some VB macros in Microsoft Excel. I would be grateful if anyone could suggest the best language/technology to learn to get me heading in the right direction.
As Neil said in his comments there are dozens of different, valid answers to this.
Usually I would suggest going with a language you already know, but neither Fortran or VBA are really suited for this task, as far as I know.
Personally I would suggest Django, which is a web framework written in Python. It simplifies many common tasks and it is very well documented.
But there are many more possible solutions.
Before I started with a framework I'd break the problem into pieces. If you've never done anything with a database before you'll find that challenging enough without piling web or mobile on top of it.
Model your problem and get a good object or data model in place. Test that thoroughly without thinking about UI. Once you have that, perhaps you can expose it as services that any UI can call.
You'll quickly become overwhelmed if you try to do it all at once.
Here's another thought: If these are paying customers, why not do yourself and them a favor and hire someone that knows how to do this? It's great that you used to write Fortran, but if you haven't kept up you won't be doing your business any good by putting out a bad first effort for customers to see.
Do it right - get a professional. Do your learning on your own time.
You can use ASP.NET and SQL Server to get something online that will allow users to edit a database table fairly easily. They've simplified it to the point where you can drag and drop the necessary controls (GridView and a SqlDataSource for instance) and define your datasource in a wizard for most simple table CRUD functionality. Basically give users the ability to edit a table without writing any code.
If you need to do something a little more difficult it's easy to write code that will add functionality to the original drag/drop stuff you did.
There are lots of good resources out there for asp.net and C# also, so it will help you get up to speed quickly.
Keep in mind that I work almost entirely with .NET/SQL Server so my opinion will be slanted towards them...
i have played around with dynamic data website. is there something similar for winforms.
if there isn't anything out there for doing the same with winforms than the question would be why not? we have a massive ERP application that we want to migrate from AS400 to .Net
Winform application. my initial thoughts were to have all the maintenances be as simple as Dynamic Data Website project.
I would think that WPF would be a better starting point then WinForms, as it has support for style to say how item of data are displayed.
Dynamic Data makes it easy to edit your DB on the web. For desktop (and web) apps take a look at the new Microsoft LightSwitch:
http://msdn.microsoft.com/en-us/lightswitch/gg441300
LightSwitch doesn't use Windows Forms. Rather it creates a Silverlight App that can run both on the desktop and the web. Pretty cool.
Dynamic data is using the routing functionality of the MVC framework. In Windows forms we don't have this approach of fetching data with URLs from a server.
I am not sure how this model could fit into Windows forms.
I think it's pretty hard to create something like dynamic data for Windows Forms.
My biggest concern is here, once you created that Framework, how do you configure it? I mean if you want to change 1 form to be a bit different than the others :-)
I think its better to generate Forms for the various tables in the Database context, using a powerful Grid control from one of the big vendors. And then you can configure those.
Remember this is a different approach then the dynamic data one, where no code is generated before compile time
I think the reason you don't see something like this in winform applications is because it's much easier to store a HTML page inside a database and then display it on the screen formatted properly when using a web application because your browser knows how to format the HTML.
You would have to, stored in the database, know where each label and field would go on the form in some sort of co-ordinates fashion (or you could use a layout 3rd party control) but the amount of work that would take might be tedious to do properly.
The dynamic data website I worked on did not take input from the user. It only displayed different web pages to the user and allowed the admin person to easily make changes to the content. If you wanted a user to beable to save data then that would even be more complex because you have to worry about validation, required fields, etc.
If you have lots of users that need to see different information based on their access level then I would just suggest having a table in the database that tells the system whether or not they should see the field on the form. Then use a 3rd party layout panel to format the visible fields.
my 2 cents
As much as Dynamic Data looks simple and cheap enough to access a database it wouldn't work for an ERP system anyways. Business systems are more than moving data between database and the user interface, they require business rule actions when saving data and while retrieving the may require some massaging to ensure meaningful presentation of storage optimized data.
If you still like to pursue this option it would be very easy to create an application that is build on top of Entity Framework.
I'm not aware of a Dynamic-Data-alike, but (having written one before, years ago, for ASP) I don't actually think it would be that hard, particularly with WPF and its templating support.
Actually if you were really clever you could probably 'borrow' the backend from Dynamic Data, and just reimplement the UI as WPF.
Would make a fun little project actually.
Alternative answer: Use Microsoft Access. No really.
Alternative answer #2: So why not just use Dynamic Data then?