I had an exciting time fighting with this particular error message today when trying to print in Reporting Service 2005. As far as I can tell, it gets thrown when you have the Reporting Service 2000 client printing Active-X control on your system, and then try to print from Reporting Services 2005. Here is how I fixed it:
1. Closed all instance of Internet Explorer.
2. Opened Windows Explorer and went to C:\Windows\Downloaded Program Files\
3. Right clicked on RSClientPrintClass and chose "Remove"
4. Went to my Reporting Services report and tried to print
5. Said "Install" when prompted to install the Reporting Services Print Control
6. Printing commenced!
OK, I'm by no means a complete expert on the subject, but I think I know enough to be able to shed some light on Adlai Maschiach's XHTML in VS2005 post.
He describes some trouble he had porting an ASP.NET 1.1 application to
ASP.NET 2.0 and tables with 100% height not rendering as
expected. He recommends switching the doctype to HTML 4.0
transitional and removing the link to the dtd from the doctype
declaration. Now this will work, but it is important to
understand what's happening in the background.
IE and Firefox (and perhaps other browsers) have at least two
different rendering modes. Standards Mode and Quirks Mode. In Standards
mode, the browsers render the html in their most standards-compliant
manner and generally behave like the W3C (World Wide Web Consortium -
the people who develop the standards for HTML, CSS etc) would want them
to. In Quirks mode, IE and Firefox throw the standards out the window
for the most part, and emulate little quirks and bad behaviors that the
earlier version of Netscape and IE exhibited and which many web sites
still rely on. One of those little quirks, is the concept of a table
with a height. Neither HTML 4.0 nor XHTML allow a height attribute on the table element. The only way a height on a table will render is if the browser is in Quirks mode.
The main indicator that IE and Firefox look for when determining
which mode to use is the presence of a valid doctype at the top of the
page. A valid doctype must include a link to the DTD, like so:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
Because the doctype that Adlai is using is invalid (missing the link
to the dtd), IE and Firefox switch to Quirks mode and the invalid
height attribute is obeyed. The switch from XHTML to HTML 4.0 in the
doctype doesn't really have much of an effect.
Now I'm not saying you shouldn't put out a website that forces the
browser into Quirks mode, though I don't believe you should develop any
NEW applications that force the browser into Quirks mode. It is
important either way, however, to know what is happening in the browser
because it will affect the way many html tags are rendered.
About a year ago, I was planning out an application to track all of the
piddly little stupid stuff in my life - Frequent Flyer Numbers, Lock
Combinations, Recipes, etc. Ideally, I was hoping to put together
something that would run on the Desktop, on my PocketPC and on the web
so I could get to it from anywhere. I started looking around for
a database solution to do that sort of thing and ran across
VistaDB. I couldn't find enough information to decide if it was
the right choice, and I didn't want to pay money to find out for
sure. Eventually after beating my head against the wall working
with SQL Server CE, I settled for a desktop application to do the
tracking. Now, apparently, a new version VistaDB is out and in
return for spreading the word, they're handing out free versions to
bloggers. I'm still interested in doing a fully-syncable app for
this stuff, and it would be a good first project for VS 2005, so here's
their announcement. I'll give my free version a whirl and let you
know what I think.
VistaDB 2.1 database for .NET has been released
This 2.1 update includes over 60 improvements, including new support for .NET 2.0 and Visual Studio .NET
2005. VistaDB is a small-footprint, embedded SQL database alternative to
Jet/Access, MSDE and SQL Server Express 2005 that enables developers to build
.NET 1.1 and .NET 2.0 applications. Features SQL-92 support, small 500KB
embedded footprint, free 2-User VistaDB Server for remote TCP/IP data access,
royalty free distribution for both embedded and server, Copy 'n Go! deployment,
managed ADO.NET Provider, data management and data migration tools. Free trial
is available for download.
- Learn more about VistaDB
- Repost this to your blog and receive a FREE copy of VistaDB 2.1!
Personally, I found
this post by Larry Osterman on 'layering violations'
to be incredibly interesting. In it, he describes the
"Architectural Layering Initiative" at Microsoft and how they have used
Static Code Analysis to create a map of run-time and build-time
dependencies between Windows Components and how they are attempting to
refactor Windows to ensure that low-level components don't depend on
higher-level components and also put "Quality Gates" in place to ensure
that no more of these "Layering Violations" occur. Interesting
stuff, in my opinion. I suggest you check it out.
Did I miss the party or has the blogosphere largely missed the
announcement
that Microsoft has teamed up with the folks at the Web Standards
Project to ensure standards compliance in ASP.NET and Visual
Studio? Sounds like great news to me!
Imagine you're doing a report of Employee sales figures. You put
together a quick Matrix report in Reporting Services, throwing Employee
on the left and Fiscal Quarter across the top, with Sale amount in the
data area. Fabulous, you've just created a useful report in no
time. But now your boss says, "I want the same sort of report showing sales by employee and quater,
but for the subtotals on the bottom and the right I want to see how many employees
missed their quota each quarter and how many times a particular
employee has missed their quota. Now what do you do?
Reporting Services handy automatic subtotaling isn't going to work.
I discovered this week that the
InScope function comes to the
rescue! You see the subtotals at the bottom of the matrix aren't
in the scope of your row group(s) and the subtotals on the right edge
of the matrix aren't in the scope of your column group(s) so you can
use an expression like this in your datacell to get sales amount summed
in the data cells and missed quotas summed in the subtotals:
=IIF(InScope('employee') And InScope('quarter'),
SUM(Fields!sales_amount.Value), SUM(IIF(SUM(Fields!sales_amount.Value)
< Fields!sales_quota.Value, 1, 0)))
Assuming you have 2 groups named 'employee' and 'quarter', this
expression says if I'm in the scope of 'employee' and in the scope of
'quarter' (aka I'm in a data cell) then spit out the sum of
sales_amount for my groups. If I'm not (aka I'm in a subtotal)
then instead sum up the # of cells where the quota wasn't met.
I hope you've enjoyed my first blog post, it should at least be more useful than "Hello World"!
Copyright 2005 - 2006 (c) DevAuthority.Com. All content is the sole property of it's author.