July 2006 - Posts
Shyam Pather, development lead on the ADO.NET team, has put together two interesting web casts about the future of ADO.NET and its relation to LINQ.
They are recommended watching ff you are interested in the future of ADO.NET.
One of the common misconceptions is that SQL Server 2005 Reporting Services is a free product. Not really surprising maybe because Reporting Services is part of SQL Server 2005 Express Edition with Advanced Services. Now that version is free bit that doesn't mean the Reporting Services is completely free product, just that one of its SKU's is free.
Reporting Services has a number of different features and, just like the different versions of SQL Server have different options, depending on the version you can do more or less with it.
The free version has quite a few limitations as compared to the more complete, and expensive, versions. Amongst the most important are the fact that the Express version of Reporting Services only allows for reporting over the data on the local server, no remote connections are allowed. Another few restrictions are the output rendering formats, security and subscriptions.
|
Data Source(s)
| Express 1, 2
| Workgroup 1, 2
|
|
| SE and EE support all data sources (OLAP and Relational)
|
Rendering
| Excel, PDF, Image (RGDI, Print), DHTML
| Excel, PDF, Image (RGDI, Print), DHTML
|
|
| Standard and Enterprise editions support all output formats
|
Management
| Report Manager
|
|
|
| Workgroup, Standard, and Enterprise editions support SQL Server Management Studio and Report Manager
|
Caching
|
|
|
|
|
|
History
|
|
|
|
|
|
Delivery
|
|
|
|
|
|
Scheduling
|
|
|
|
|
|
Extensibility
|
|
|
|
| Can add/remove renderers, data sources, and delivery
|
Custom Authentication
|
|
|
|
|
|
SharePoint Integration
|
|
|
|
|
|
Scale-out Report Servers
|
|
|
|
|
|
Subscription
|
|
|
|
|
|
Data Driven Subscription
|
|
|
|
|
|
Role Based Security
| Fixed Roles
| Fixed Roles
|
|
| Standard and Enterprise editions can add roles
|
Report Builder
|
|
|
|
|
|
Report Builder Data Sources
|
| Workgroup 1, 2
|
|
|
|
Model Level Security
|
|
|
|
|
|
Infinite Clickthrough
|
|
|
|
|
|
Reporting Services features are not yet available in SQL Server 2005 Express Edition.
Notes: 1 = Local Server Only; 2 = Relational Only
Regulazy? WTF might that be?
Well I haven't actually tried it yet but it looks like one amazing way to build regular expression without going insane over the syntax. Sure regular expression are extremely powerful but the syntax is straight out of a horror movie and unless you do it a lot you need to lookup even the basic syntax every time, not a pleasant experience.
Now Roy Osherove has released a tool that makes it all far easier, just point and click and the designer will generated the required regular expression syntax for the job. Sure looks impressive and promising to me.
Recently I have been working with SQL Server 2005 Reporting Services on a WinForms project. Now SQL Server 2005 Reporting Services is a really nice and impressive product and I like it a lot but some things I just don't get. The problem I am having at the moment is with exporting the data. If I use the web service ReportExecutionService classto render the report I get a list of 10 possible render formats when I use the ListRenderingExtensions() function. These are:
- XML
- NULL
- CSV
- IMAGE
- PDF
- RGDI
- HTML4.0
- HTML3.2
- MHTML
- EXCEL
Great, lots of options. The one I wanted most of all was XML so I can export the data with the same grouping as in the report.
Now we also have the WinForm local reporting using an RDLC report instead of an RDL one. Even though the extension is different this is pretty much the same thing with only a few differences. Now using the Microsoft.Reporting.WinForms.LocalReport type ListRenderingExtensions() function I try the same. Now I only get 3 possible render formats:
- Excel
- IMAGE
- PDF
So what gives, why only 3 different options?
In fact taking a quick look, using Reflector, inside Microsoft.ReportViewer.Common.dll shows a few more options that don't show in the list like HTML. No idea why they don’t show up. But the one I want, namely XML, isn't there :-(
So why the difference in rendering options between client side and server side reporting? I don't have a clue so if you know please let me know.
One frequent problem in database application is displaying values from a lookup table, for example the description of a customer type instead of the code itself.
One easy way to do this is through a DataColumn Expression and a relation between two DataTables.
The following code shows a quick and easy way to do this:
Module Module1
Sub Main()
Dim ds AsNew DataSet
Dim dtCustomers AsNew DataTable
Dim dtLookup AsNew DataTable
' Create a lookup table
dtLookup.Columns.Add("Type", GetType(Integer))
dtLookup.Columns.Add("Description", GetType(String))
dtLookup.Rows.Add(NewObject() {1, "Een"})
dtLookup.Rows.Add(NewObject() {2, "Twee"})
' Create a customers tab;e
dtCustomers.Columns.Add("Name", GetType(String))
dtCustomers.Columns.Add("Type", GetType(Integer))
dtCustomers.Rows.Add(NewObject() {"Customer 1 A", 1})
dtCustomers.Rows.Add(NewObject() {"Customer 1 B", 1})
dtCustomers.Rows.Add(NewObject() {"Customer 2 A", 2})
dtCustomers.Rows.Add(NewObject() {"Customer 2 B", 2})
dtCustomers.Rows.Add(NewObject() {"Customer 1 C", 1})
ds.Tables.Add(dtCustomers)
ds.Tables.Add(dtLookup)
' And create the lookup column
ds.Relations.Add("Rel1", dtLookup.Columns("Type"), dtCustomers.Columns("Type"))
dtCustomers.Columns.Add("Description", GetType(String), "Parent(Rel1).Description")
ForEach row As DataRow In dtCustomers.Rows
Console.WriteLine("Naam: {0}, Soort: {1} = {2}", row("Name"), row("Type"), row("Description"))
Next
Console.ReadKey()
EndSub
EndModule
The two lines that matter are:
ds.Relations.Add("Rel1", dtLookup.Columns("Type"), dtCustomers.Columns("Type"))
dtCustomers.Columns.Add("Description", GetType(String), "Parent(Rel1).Description")
The first relates the two tables and the second creates a calculated column using the expression.
Enjoy!
Bill McCarthy has just released the Exception helper 2.0 addin for Visual Studio 2005. The Exception helper is a great little addin that check for all possible exceptions that a piece of code, including all code that is called, can throw and add the relevant Catch handler.
Recently Steve Lasker put together a few demonstration videos to show what SQL Server Everywhere is all about.
Enjoy!
I almost to forget to plug my own article in my own blog :-( But here it is :-)
A lot of articles have been written about database concurrency conflict detection and the various ways of handling them. Unfortunately most of these articles, and accompanying solutions, have one major flaw in that they focus on the technical issues and database implementation instead of real-world data and how people use the data. In this article, I will try to show the difference between focusing on the database implementation and on the real-world data. I will show some possible approaches on how to solve these concurrency issues.
If you are in the planning stages for a new .NET project I strongly suggest taking a look at Windows Workflow Foundation. Of course it isn't released quite yet but it's in beta 2 so anything out there isn't going to change a whole lot.
So why is Windows Workflow Foundation so interesting? Well most applications I work on, and I suspect the same is true for pretty much every other database application, contains workflows. Sometimes these workflows are only implemented through work practices and not really enforced in code. Most of the time however these workflows are implemented in the application code, so far nothing special. Now Windows Workflow Foundation changes things a bit. Previously both the workflow and the implementation of rules and activities would be developed in the same language making it hard to distinguish the flow from the implementation. Not anymore :-) The Windows Workflow Foundation designer gives a clear overview of the workflow without bothering you with the implementation details. On the same accord, you can now look at the implementation of a single action without being swamped by the complete workflow implementation.
And best of all, the workflow can be updated at runtime allowing for far greater flexibility. In fact you can even include the designer in your application.
To get started go to
http://wf.netfx3.com where you can find the download for Release Candidate 2 as well as a load of samples and documentation.
Developing VSTO applications can be fun and certainly very productive. But just like all other software development it isn't without its own share of problems.
To help solve some of these problems Microsoft PSS has released the VSTO 2005 Client TroubleShooter tool. Maybe not guaranteed to solve all your VSTO problems but another tool that gives you some more information.
I am happy that Microsoft had decided to award me with another year as an MVP :-)
So much to do and so little time but enjoying every minute of it!