<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel xmlns:atom="http://www.w3.org/2005/Atom"><title>SQL Reporting Services</title><link>http://reportingservices.blog.co.uk/</link><atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" href="http://reportingservices.blog.co.uk/feed/rss2/posts/"/><description></description><language>en-UK</language><generator>MokoFeed</generator><ttl>10</ttl><image><title>SQL Reporting Services</title><link>http://reportingservices.blog.co.uk/</link><url>http://data5.blog.de/design/preview/22/87799b2ec0fa9142d3662973f15181_160x200.jpg</url></image><item><title>Using a SELECT statement with a searched CASE expression</title><link>http://reportingservices.blog.co.uk/2009/07/07/using-a-select-statement-with-a-searched-case-expression-6464668/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2009-07-07:/2009/07/07/using-a-select-statement-with-a-searched-case-expression-6464668/</guid><pubDate>Tue, 07 Jul 2009 11:00:59 +0200</pubDate><description>	&lt;p&gt;&lt;strong&gt; Using a SELECT statement with a searched CASE expression &lt;/strong&gt;&lt;/p&gt;
	&lt;p&gt;SELECT   ProductNumber, Name, 'Price Range' =&lt;br&gt;
      CASE&lt;br&gt;
         WHEN ListPrice =  0 THEN 'Mfg item - not for resale'&lt;br&gt;
         WHEN ListPrice &lt;50 THEN 'Under $50'&lt;br&gt;
         WHEN ListPrice &gt;= 50 and ListPrice &lt;250 THEN 'Under $250'&lt;br&gt;
         WHEN ListPrice &gt;= 250 and ListPrice &lt; 1000 THEN 'Under $1000'&lt;br&gt;
         ELSE 'Over $1000'&lt;br&gt;
      END&lt;br&gt;
FROM Production.Product&lt;br&gt;
ORDER BY ProductNumber ;&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2009/07/07/using-a-select-statement-with-a-searched-case-expression-6464668/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2009/07/07/using-a-select-statement-with-a-searched-case-expression-6464668/#comments</comments></item><item><title>Reporting Services Tip</title><link>http://reportingservices.blog.co.uk/2009/03/27/reporting-services-tip-5842288/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2009-03-27:/2009/03/27/reporting-services-tip-5842288/</guid><pubDate>Fri, 27 Mar 2009 15:36:16 +0100</pubDate><description>	&lt;p&gt;Use UNION ALL rather than UNION wherever necessary. This will speed up the query exceution of the report
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2009/03/27/reporting-services-tip-5842288/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><category>union-reporting-services</category><comments>http://reportingservices.blog.co.uk/2009/03/27/reporting-services-tip-5842288/#comments</comments></item><item><title>Create row numbers based on the rows available in a table</title><link>http://reportingservices.blog.co.uk/2009/03/27/create-row-numbers-based-on-the-rows-available-in-a-table-5842255/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2009-03-27:/2009/03/27/create-row-numbers-based-on-the-rows-available-in-a-table-5842255/</guid><pubDate>Fri, 27 Mar 2009 15:30:32 +0100</pubDate><description>	&lt;p&gt;SELECT ROWID=IDENTITY(int,1,1) , EMPID, FNAME, LNAME&lt;br&gt;
INTO EMPLOYEE2 FROM EMPLOYEE ORDER BY EMPID&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2009/03/27/create-row-numbers-based-on-the-rows-available-in-a-table-5842255/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><category>rowid-rownumber-identity-rows</category><comments>http://reportingservices.blog.co.uk/2009/03/27/create-row-numbers-based-on-the-rows-available-in-a-table-5842255/#comments</comments></item><item><title>Parse Numbers from AlphaNumeric strings</title><link>http://reportingservices.blog.co.uk/2009/03/27/parse-numbers-from-alphanumeric-strings-5842105/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2009-03-27:/2009/03/27/parse-numbers-from-alphanumeric-strings-5842105/</guid><pubDate>Fri, 27 Mar 2009 15:04:55 +0100</pubDate><description>	&lt;p&gt;CREATE FUNCTION [dbo].[ParseNumbers]&lt;br&gt;
(&lt;br&gt;
@string VARCHAR(50)&lt;br&gt;
)&lt;br&gt;
RETURNS VARCHAR(50)&lt;br&gt;
AS&lt;br&gt;
BEGIN&lt;br&gt;
	DECLARE @IncorrectCharLoc SMALLINT&lt;br&gt;
	SET @IncorrectCharLoc = PATINDEX('%[^0-9]%', @string)&lt;br&gt;
		WHILE @IncorrectCharLoc &gt; 0&lt;br&gt;
		BEGIN&lt;br&gt;
			SET @string = STUFF(@string, @IncorrectCharLoc, 1, '')&lt;br&gt;
			SET @IncorrectCharLoc = PATINDEX('%[^0-9]%', @string)&lt;br&gt;
		END&lt;br&gt;
	SET @string = @string&lt;br&gt;
	RETURN @string&lt;br&gt;
END
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2009/03/27/parse-numbers-from-alphanumeric-strings-5842105/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2009/03/27/parse-numbers-from-alphanumeric-strings-5842105/#comments</comments></item><item><title>SQL Server: Convert to Proper case function</title><link>http://reportingservices.blog.co.uk/2009/02/17/create-function-propercase-text-as-varchar-8000-returns-varchar-5594420/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2009-02-17:/2009/02/17/create-function-propercase-text-as-varchar-8000-returns-varchar-5594420/</guid><pubDate>Tue, 17 Feb 2009 18:08:44 +0100</pubDate><description>	&lt;p&gt;create function ProperCase(@Text as varchar(8000))&lt;br&gt;
returns varchar(8000)&lt;br&gt;
as&lt;br&gt;
begin&lt;br&gt;
   declare @Reset bit;&lt;br&gt;
   declare @Ret varchar(8000);&lt;br&gt;
   declare @i int;&lt;br&gt;
   declare @c char(1);&lt;/p&gt;
	&lt;p&gt;   select @Reset = 1, @i=1, @Ret = '';&lt;/p&gt;
	&lt;p&gt;   while (@i &lt; = len(@Text))&lt;br&gt;
    select @c= substring(@Text,@i,1),&lt;br&gt;
               @Ret = @Ret + case when @Reset=1 then UPPER(@c) else LOWER(@c) end,&lt;br&gt;
               @Reset = case when @c like '[a-zA-Z]' then 0 else 1 end,&lt;br&gt;
               @i = @i +1&lt;br&gt;
   return @Ret&lt;br&gt;
end
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2009/02/17/create-function-propercase-text-as-varchar-8000-returns-varchar-5594420/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2009/02/17/create-function-propercase-text-as-varchar-8000-returns-varchar-5594420/#comments</comments></item><item><title>RS2005: Convert to Proper Case</title><link>http://reportingservices.blog.co.uk/2009/02/13/rs2005-convert-to-proper-case-5568799/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2009-02-13:/2009/02/13/rs2005-convert-to-proper-case-5568799/</guid><pubDate>Fri, 13 Feb 2009 21:14:02 +0100</pubDate><description>	&lt;p&gt;Public Shared Function ConvertToProperCase(ByVal s As String) As String&lt;br&gt;
If Not IsNothing(s) then&lt;br&gt;
Return UCase(Left(s,1)) &amp; LCase(Right(s,Len(s)-1))&lt;br&gt;
End If&lt;br&gt;
End Function
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2009/02/13/rs2005-convert-to-proper-case-5568799/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><category>rs2005-convert-proper-case</category><comments>http://reportingservices.blog.co.uk/2009/02/13/rs2005-convert-to-proper-case-5568799/#comments</comments></item><item><title>DatePicker control for SQL RS2005 SP2</title><link>http://reportingservices.blog.co.uk/2008/07/30/datepicker-control-for-sql-rs2005-sp2-4520864/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2008-07-30:/2008/07/30/datepicker-control-for-sql-rs2005-sp2-4520864/</guid><pubDate>Wed, 30 Jul 2008 16:34:14 +0200</pubDate><description>	&lt;p&gt;Dates in the Datetimepicker control appear in the incorrect format when you view a report of SQL Server 2005 Reporting Services with SP2 on a server that is set to a UK locale&lt;/p&gt;
	&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/938823/en-us"&gt;&lt;a href="http://support.microsoft.com/kb/938823/en-us"&gt;http://support.microsoft.com/kb/938823/en-us&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;In this scenario, the date appears in the mm/dd/yyyy format in the Datetimepicker control. However, you expect that the date appears in the dd/mm/yyyy format.
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2008/07/30/datepicker-control-for-sql-rs2005-sp2-4520864/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><category>datepicker-rs2005-reporting-services</category><comments>http://reportingservices.blog.co.uk/2008/07/30/datepicker-control-for-sql-rs2005-sp2-4520864/#comments</comments></item><item><title>Data migration in Oracle</title><link>http://reportingservices.blog.co.uk/2007/02/02/data_migration_in_oracle~1667559/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2007-02-02:/2007/02/02/data_migration_in_oracle~1667559/</guid><pubDate>Fri, 02 Feb 2007 12:13:00 +0100</pubDate><description>	&lt;p&gt;PROCEDURE procDeptMigration&lt;br&gt;
IS&lt;br&gt;
--&lt;br&gt;
-- Cursor to retrieve all the old dept data&lt;br&gt;
--&lt;br&gt;
CURSOR cu_dept IS&lt;br&gt;
SELECT * FROM dept;&lt;br&gt;
crec_dept cu_dept%ROWTYPE;&lt;/p&gt;
	&lt;p&gt;BEGIN &lt;/p&gt;
	&lt;p&gt;FOR crec_dept IN cu_dept&lt;br&gt;
LOOP&lt;/p&gt;
	&lt;p&gt;--insert in the new table&lt;br&gt;
INSERT INTO DEPARTMENT&lt;br&gt;
VALUES&lt;br&gt;
(crec_dept.deptno, crec_dept.dname, crec_dept.loc);&lt;/p&gt;
	&lt;p&gt;-- Display the entire able on screen&lt;br&gt;
DBMS_OUTPUT.PUT_LINE('DEPTNO : '||crec_dept.deptno );&lt;br&gt;
DBMS_OUTPUT.PUT_LINE('DNAME  : '||crec_dept.dname  );&lt;br&gt;
DBMS_OUTPUT.PUT_LINE('LOC    : '||crec_dept.loc    );&lt;/p&gt;
	&lt;p&gt;END LOOP;&lt;/p&gt;
	&lt;p&gt;EXCEPTION&lt;br&gt;
 WHEN OTHERS THEN&lt;br&gt;
 	  DBMS_OUTPUT.PUT_LINE(SQLCODE||' '||SQLERRM||' AddressCode '||crec_dept.deptno);&lt;/p&gt;
	&lt;p&gt;END procDeptMigration;
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2007/02/02/data_migration_in_oracle~1667559/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2007/02/02/data_migration_in_oracle~1667559/#comments</comments></item><item><title>Identify and delete duplicate rows in a table</title><link>http://reportingservices.blog.co.uk/2007/02/02/identify_and_delete_duplicate_rows_in_a_~1667490/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2007-02-02:/2007/02/02/identify_and_delete_duplicate_rows_in_a_~1667490/</guid><pubDate>Fri, 02 Feb 2007 11:59:07 +0100</pubDate><description>	&lt;p&gt;create table test (id int identity(1,1), code char(5))&lt;br&gt;
insert into test (code) values ('a')&lt;br&gt;
insert into test (code) values ('a')&lt;br&gt;
insert into test (code) values ('a')&lt;br&gt;
insert into test (code) values ('b')&lt;br&gt;
insert into test (code) values ('b')&lt;br&gt;
insert into test (code) values ('b')&lt;br&gt;
insert into test (code) values ('c')&lt;br&gt;
insert into test (code) values ('d')&lt;br&gt;
insert into test (code) values ('d')&lt;/p&gt;
	&lt;p&gt;--Identify the rows&lt;br&gt;
select code from test group by code having count(*) &gt; 1&lt;/p&gt;
	&lt;p&gt;--Remove the rows&lt;br&gt;
delete test&lt;br&gt;
where id &gt; (&lt;br&gt;
    select min(m.id)&lt;br&gt;
    from test m&lt;br&gt;
    where m.code = test.code&lt;br&gt;
)
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2007/02/02/identify_and_delete_duplicate_rows_in_a_~1667490/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2007/02/02/identify_and_delete_duplicate_rows_in_a_~1667490/#comments</comments></item><item><title>Group total summary</title><link>http://reportingservices.blog.co.uk/2007/01/15/group_total_summary~1557916/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2007-01-15:/2007/01/15/group_total_summary~1557916/</guid><pubDate>Mon, 15 Jan 2007 16:29:32 +0100</pubDate><description>	&lt;p&gt;To get grand total summary for individual group totals, add the group header or footer cells with the correct value,you may rename this cell as grpTotal.Then add a textbox in the Report Footer and use the expression =Sum(ReportItems!grpTotal.Value).This will sum the group totals.
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2007/01/15/group_total_summary~1557916/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2007/01/15/group_total_summary~1557916/#comments</comments></item><item><title>Export Data to Excel Using Template</title><link>http://reportingservices.blog.co.uk/2006/09/22/title~1150574/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2006-09-22:/2006/09/22/title~1150574/</guid><pubDate>Fri, 22 Sep 2006 15:14:17 +0200</pubDate><description>	&lt;p&gt;Create PROCEDURE SP_ExportDataUsingTemplate @File_Name as varchar(50) = ''&lt;br&gt;
AS&lt;br&gt;
BEGIN&lt;br&gt;
	SET NOCOUNT ON&lt;/p&gt;
	&lt;p&gt;	DECLARE @Cmd varchar(1000)&lt;br&gt;
	DECLARE @fn varchar(500)&lt;br&gt;
	DECLARE @provider varchar(100)&lt;br&gt;
	DECLARE @ExcelString varchar(100)&lt;/p&gt;
	&lt;p&gt;--	New File Name to be created&lt;br&gt;
	IF @File_Name = ''&lt;br&gt;
		Select @fn = 'D:\Test.xls'&lt;br&gt;
	ELSE&lt;br&gt;
		Select @fn = 'D:\' + @File_Name + '.xls'&lt;/p&gt;
	&lt;p&gt;--	FileCopy command string formation&lt;br&gt;
	SELECT @Cmd = 'Copy D:\Template.xls ' + @fn&lt;/p&gt;
	&lt;p&gt;--	FielCopy command execution through Shell Command&lt;br&gt;
	EXEC MASTER..XP_CMDSHELL @cmd, NO_OUTPUT&lt;/p&gt;
	&lt;p&gt;--	Mentioning the OLEDB Rpovider and excel destination filename&lt;br&gt;
	set @provider = 'Microsoft.Jet.OLEDB.4.0'&lt;br&gt;
	set @ExcelString = 'Excel 8.0; Database=' + @fn&lt;/p&gt;
	&lt;p&gt;--	Executing the OPENROWSET Command for copying the select contents to Excel sheet.&lt;br&gt;
	exec('insert into OPENrowset(''' + @provider + ''',''' + @ExcelString + ''',''SELECT FirstName,LastName,Phone,Address,City,State,Zip FROM [Sheet1$]'')&lt;br&gt;
	select au_fname as FirstName,au_lname as LastName,phone,address,city,State,Zip from authors')&lt;/p&gt;
	&lt;p&gt;	exec('insert into OPENrowset(''' + @provider + ''',''' + @ExcelString + ''',''SELECT StoreId, OrderNo, OrderDate, Quantity FROM [Sheet2$]'')&lt;br&gt;
	select stor_id as StoreId,Ord_Num as OrderNo,Ord_Date as OrderDate,qty as Quantity from sales')&lt;/p&gt;
	&lt;p&gt;	SET NOCOUNT OFF&lt;br&gt;
END&lt;/p&gt;
	&lt;p&gt;/*------------sample statements-------------&lt;/p&gt;
	&lt;p&gt;use pubs&lt;br&gt;
exec SP_ExportDataUsingTemplate 'AuthorsAndOrders'&lt;br&gt;
select * from sales (NOLOCK)&lt;br&gt;
select * from authors&lt;/p&gt;
	&lt;p&gt;*/-------------------------------------------
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2006/09/22/title~1150574/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2006/09/22/title~1150574/#comments</comments></item><item><title>Export Data from SQL Server to Excel</title><link>http://reportingservices.blog.co.uk/2006/09/22/export_data_from_sql_server_to_excel~1150564/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2006-09-22:/2006/09/22/export_data_from_sql_server_to_excel~1150564/</guid><pubDate>Fri, 22 Sep 2006 15:09:40 +0200</pubDate><description>	&lt;p&gt;CREATE procedure dbo.ExportData(@filePath as varchar(500))&lt;br&gt;
as&lt;br&gt;
begin&lt;/p&gt;
	&lt;p&gt;           DECLARE @Provider VARCHAR(200),@ExcelString VARCHAR(200),@SQLString VARCHAR(200)&lt;br&gt;
           DECLARE @Sql AS VARCHAR(800)&lt;/p&gt;
	&lt;p&gt;           SET @Provider = '''Microsoft.Jet.OLEDB.4.0'''&lt;br&gt;
           SET @ExcelString =  '''Excel 8.0; Database=' + @filePath + ';HDR=YES'''&lt;br&gt;
           SET @SQLString = '''SELECT FirstName, LastName, Telephone  FROM [Sheet1$]'''&lt;/p&gt;
	&lt;p&gt;           SET @SQL='insert into OPENROWSET('+ @Provider + ','+ @ExcelString + ',' + @SQLString + ') SELECT  au_fname as FirstName, au_lname as LastName, phone as Telephone from authors'&lt;/p&gt;
	&lt;p&gt;           Exec(@Sql)&lt;br&gt;
end&lt;br&gt;
GO
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2006/09/22/export_data_from_sql_server_to_excel~1150564/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2006/09/22/export_data_from_sql_server_to_excel~1150564/#comments</comments></item><item><title>Switch function in reporting services</title><link>http://reportingservices.blog.co.uk/2005/07/21/switch_function_in_reporting_services/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2005-07-21:/2005/07/21/switch_function_in_reporting_services/</guid><pubDate>Thu, 21 Jul 2005 11:03:14 +0200</pubDate><description>	&lt;p&gt;You can use Visual Basic functions to evaluate an input value and return another value depending on the result.&lt;/p&gt;
	&lt;p&gt;The following expression also returns one of three values based on the value of PctComplete, but uses the Switch function instead, which returns the value associated with the first expression in a series that evaluates to true: &lt;/p&gt;
	&lt;p&gt;=Switch(Fields!PctComplete.Value &gt;= .8, "Green", Fields!PctComplete.Value &gt;= .5, "Amber", Fields!PctComplete.Value &lt; .5, "Red")&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2005/07/21/switch_function_in_reporting_services/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2005/07/21/switch_function_in_reporting_services/#comments</comments></item><item><title>Alter the query that is used to retrieve data for the report.</title><link>http://reportingservices.blog.co.uk/2005/07/21/alter_the_query_that_is_used_to_retrieve/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2005-07-21:/2005/07/21/alter_the_query_that_is_used_to_retrieve/</guid><pubDate>Thu, 21 Jul 2005 11:00:43 +0200</pubDate><description>	&lt;p&gt;In some complex reports, you may want to vary the query that is used to retrieve data for the report. For example, you may want to provide users with a list of departments by which to filter data, or allow them to view data for all departments. In Transact-SQL, this requires different queries: one with a WHERE clause, and one without. You can use a query expression to build a dynamic query that changes depending on user input. &lt;/p&gt;
	&lt;p&gt;This expression, when used as the command text in a SQL Server dataset, builds a query that retrieves all data if the user selects All (All is tied to a value of 0 in the parameter), or builds a query with a WHERE clause if the user selects a specific department. &lt;/p&gt;
	&lt;p&gt;="SELECT FirstName, LastName, Title FROM Employee" &amp; IIf(Parameters!Department.Value = 0,""," WHERE (DepartmentID =   " &amp; Parameters!Department.Value &amp; ")") &amp; " ORDER BY LastName"&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2005/07/21/alter_the_query_that_is_used_to_retrieve/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2005/07/21/alter_the_query_that_is_used_to_retrieve/#comments</comments></item><item><title>Hide parameters in the report</title><link>http://reportingservices.blog.co.uk/2005/07/21/hide_parameters_in_the_report/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2005-07-21:/2005/07/21/hide_parameters_in_the_report/</guid><pubDate>Thu, 21 Jul 2005 10:57:11 +0200</pubDate><description>	&lt;p&gt;Use rc:parameters=false to hide the parameters.&lt;/p&gt;
	&lt;p&gt;&lt;a href="http://rsServer1/reportserver?/Commercial"&gt;http://rsServer1/reportserver?/Commercial&lt;/a&gt; Analytics/Units and Net Sales&amp;rc:toolbar=False&amp;rc:para­meters=false&amp;CategoryValueID=5­5
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2005/07/21/hide_parameters_in_the_report/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2005/07/21/hide_parameters_in_the_report/#comments</comments></item><item><title>SP2 print landscape issue</title><link>http://reportingservices.blog.co.uk/2005/07/21/sp2_print_landscape_issue/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2005-07-21:/2005/07/21/sp2_print_landscape_issue/</guid><pubDate>Thu, 21 Jul 2005 10:52:35 +0200</pubDate><description>	&lt;p&gt;There is an oversight in the documentation of the new client print functionality of Reporting Services Service Pack 2. SP2 has a new behavior that extracts the page size and margin information at report publishing time so that it can be used by the print control. If you look at the Property column of the Catalog table in the ReportServer database, you will see the following on a report published with SP2:&lt;/p&gt;
	&lt;p&gt;&lt;Properties&gt;&lt;br&gt;
  ...&lt;br&gt;
  &lt;PageHeight&lt;215.9&lt;/PageHeight&gt;&lt;br&gt;
  &lt;PageWidth&lt;279.4&lt;/PageWidth&gt;&lt;br&gt;
  &lt;TopMargin&lt;19.05&lt;/TopMargin&gt;&lt;br&gt;
  &lt;BottomMargin&lt;19.05&lt;/BottomMargin&gt;&lt;br&gt;
  &lt;LeftMargin&lt;19.05&lt;/LeftMargin&gt;&lt;br&gt;
  &lt;RightMargin&lt;19.05&lt;/RightMargin&gt;&lt;br&gt;
&lt;/Properties&gt;&lt;/p&gt;
	&lt;p&gt;Reports that were published before SP2 do not contain these properties so they will default to 8.5" x 11" (portrait) with .5" margins. You can either set these properties by republishing the report definition through Report Manager or via the SetReportDefintion method in the Web Services API. Below is a script that you can use with the Reporting Services script host (rs.exe) to republish all reports on the server:&lt;/p&gt;
	&lt;p&gt;Public Sub Main()&lt;br&gt;
    Dim definition As [Byte]() = Nothing&lt;br&gt;
    Dim item As CatalogItem = Nothing&lt;br&gt;
    Dim items() As CatalogItem = Nothing&lt;/p&gt;
	&lt;p&gt;    rs.Credentials = System.Net.CredentialCache.DefaultCredentials&lt;/p&gt;
	&lt;p&gt;    items = rs.ListChildren("/", True)&lt;/p&gt;
	&lt;p&gt;    For Each item In items&lt;br&gt;
        If item.Type = ItemTypeEnum.Report Then&lt;br&gt;
            Console.WriteLine("Republishing Report: {0}", item.Path)&lt;br&gt;
            definition = rs.GetReportDefinition(item.Path)&lt;br&gt;
            rs.SetReportDefinition(item.Path, definition)&lt;br&gt;
        End If&lt;br&gt;
    Next&lt;br&gt;
End Sub&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2005/07/21/sp2_print_landscape_issue/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2005/07/21/sp2_print_landscape_issue/#comments</comments></item><item><title>Clear Report Cache</title><link>http://reportingservices.blog.co.uk/2005/07/15/clear_report_cache/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2005-07-15:/2005/07/15/clear_report_cache/</guid><pubDate>Fri, 15 Jul 2005 16:51:06 +0200</pubDate><description>	&lt;p&gt;To clear report cache in the browser user rs:ClearSession=true&lt;/p&gt;
	&lt;p&gt;&lt;a href="http://server16/reportserver?%2fApp+Reports+Development%2fSimplePlanningRpt&amp;rs:ClearSession=true"&gt;http://server16/reportserver?%2fApp+Reports+Development%2fSimplePlanningRpt&amp;rs:ClearSession=true&lt;/a&gt;&lt;/p&gt;
	&lt;p&gt;This will create a new version everytime the report is refreshed even when using exisiting parameters.
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2005/07/15/clear_report_cache/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2005/07/15/clear_report_cache/#comments</comments></item><item><title>Convert Numbers or Currency to English Words</title><link>http://reportingservices.blog.co.uk/2005/07/15/convert_numbers_or_currency_to_english_w/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2005-07-15:/2005/07/15/convert_numbers_or_currency_to_english_w/</guid><pubDate>Fri, 15 Jul 2005 16:45:43 +0200</pubDate><description>	&lt;p&gt;&lt;code&gt;&lt;br&gt;
Public Function NumToString(ByVal nNumber As Currency) As String&lt;/p&gt;
	&lt;p&gt;Dim bNegative As Boolean&lt;br&gt;
Dim bHundred As Boolean&lt;/p&gt;
	&lt;p&gt;If nNumber &lt; 0 Then&lt;br&gt;
    bNegative = True&lt;br&gt;
End If&lt;/p&gt;
	&lt;p&gt;nNumber = Abs(Int(nNumber))&lt;/p&gt;
	&lt;p&gt;If nNumber &lt; 1000 Then&lt;br&gt;
    If nNumber \ 100 &gt; 0 Then&lt;br&gt;
        NumToString = NumToString &amp; _&lt;br&gt;
             NumToString(nNumber \ 100) &amp; " hundred"&lt;br&gt;
        bHundred = True&lt;br&gt;
    End If&lt;br&gt;
    nNumber = nNumber - ((nNumber \ 100) * 100)&lt;br&gt;
    Dim bNoFirstDigit As Boolean&lt;br&gt;
    bNoFirstDigit = False&lt;br&gt;
    Select Case nNumber \ 10&lt;br&gt;
        Case 0&lt;br&gt;
            Select Case nNumber Mod 10&lt;br&gt;
                Case 0&lt;br&gt;
                    If Not bHundred Then&lt;br&gt;
                        NumToString = NumToString &amp; " zero"&lt;br&gt;
                    End If&lt;br&gt;
                Case 1: NumToString = NumToString &amp; " one"&lt;br&gt;
                Case 2: NumToString = NumToString &amp; " two"&lt;br&gt;
                Case 3: NumToString = NumToString &amp; " three"&lt;br&gt;
                Case 4: NumToString = NumToString &amp; " four"&lt;br&gt;
                Case 5: NumToString = NumToString &amp; " five"&lt;br&gt;
                Case 6: NumToString = NumToString &amp; " six"&lt;br&gt;
                Case 7: NumToString = NumToString &amp; " seven"&lt;br&gt;
                Case 8: NumToString = NumToString &amp; " eight"&lt;br&gt;
                Case 9: NumToString = NumToString &amp; " nine"&lt;br&gt;
            End Select&lt;br&gt;
            bNoFirstDigit = True&lt;br&gt;
        Case 1&lt;br&gt;
            Select Case nNumber Mod 10&lt;br&gt;
                Case 0: NumToString = NumToString &amp; " ten"&lt;br&gt;
                Case 1: NumToString = NumToString &amp; " eleven"&lt;br&gt;
                Case 2: NumToString = NumToString &amp; " twelve"&lt;br&gt;
                Case 3: NumToString = NumToString &amp; " thirteen"&lt;br&gt;
                Case 4: NumToString = NumToString &amp; " fourteen"&lt;br&gt;
                Case 5: NumToString = NumToString &amp; " fifteen"&lt;br&gt;
                Case 6: NumToString = NumToString &amp; " sixteen"&lt;br&gt;
                Case 7: NumToString = NumToString &amp; " seventeen"&lt;br&gt;
                Case 8: NumToString = NumToString &amp; " eighteen"&lt;br&gt;
                Case 9: NumToString = NumToString &amp; " nineteen"&lt;br&gt;
            End Select&lt;br&gt;
            bNoFirstDigit = True&lt;br&gt;
        Case 2: NumToString = NumToString &amp; " twenty"&lt;br&gt;
        Case 3: NumToString = NumToString &amp; " thirty"&lt;br&gt;
        Case 4: NumToString = NumToString &amp; " forty"&lt;br&gt;
        Case 5: NumToString = NumToString &amp; " fifty"&lt;br&gt;
        Case 6: NumToString = NumToString &amp; " sixty"&lt;br&gt;
        Case 7: NumToString = NumToString &amp; " seventy"&lt;br&gt;
        Case 8: NumToString = NumToString &amp; " eighty"&lt;br&gt;
        Case 9: NumToString = NumToString &amp; " ninety"&lt;br&gt;
    End Select&lt;br&gt;
    If Not bNoFirstDigit Then&lt;br&gt;
        If nNumber Mod 10 &lt;&gt; 0 Then&lt;br&gt;
            NumToString = NumToString &amp; "-" &amp; _&lt;br&gt;
                          Mid(NumToString(nNumber Mod 10), 2)&lt;br&gt;
        End If&lt;br&gt;
    End If&lt;br&gt;
Else&lt;br&gt;
    Dim nTemp As Currency&lt;br&gt;
    nTemp = 10 ^ 12 'trillion&lt;br&gt;
    Do While nTemp &gt;= 1&lt;br&gt;
        If nNumber &gt;= nTemp Then&lt;br&gt;
            NumToString = NumToString &amp; _&lt;br&gt;
                          NumToString(Int(nNumber / nTemp))&lt;br&gt;
            Select Case Int(Log(nTemp) / Log(10) + 0.5)&lt;br&gt;
                Case 12: NumToString = NumToString &amp; " trillion"&lt;br&gt;
                Case 9: NumToString = NumToString &amp; " billion"&lt;br&gt;
                Case 6: NumToString = NumToString &amp; " million"&lt;br&gt;
                Case 3: NumToString = NumToString &amp; " thousand"&lt;br&gt;
            End Select&lt;/p&gt;
	&lt;p&gt;            nNumber = nNumber - (Int(nNumber / nTemp) * nTemp)&lt;br&gt;
        End If&lt;br&gt;
        nTemp = nTemp / 1000&lt;br&gt;
    Loop&lt;br&gt;
End If&lt;/p&gt;
	&lt;p&gt;If bNegative Then&lt;br&gt;
    NumToString = " negative" &amp; NumToString&lt;br&gt;
End If&lt;/p&gt;
	&lt;p&gt;End Function&lt;/p&gt;
	&lt;p&gt;Public Function DollarToString(ByVal nAmount As Currency) As _&lt;br&gt;
String&lt;/p&gt;
	&lt;p&gt;    Dim nDollar As Currency&lt;br&gt;
    Dim nCent As Currency&lt;/p&gt;
	&lt;p&gt;    nDollar = Int(nAmount)&lt;br&gt;
    nCent = (Abs(nAmount) * 100) Mod 100&lt;/p&gt;
	&lt;p&gt;    DollarToString = NumToString(nDollar) &amp; " dollar"&lt;/p&gt;
	&lt;p&gt;    If Abs(nDollar) &lt;&gt; 1 Then&lt;br&gt;
        DollarToString = DollarToString &amp; "s"&lt;br&gt;
    End If&lt;/p&gt;
	&lt;p&gt;    DollarToString = DollarToString &amp; " and" &amp; _&lt;br&gt;
                     NumToString(nCent) &amp; " cent"&lt;/p&gt;
	&lt;p&gt;    If Abs(nCent) &lt;&gt; 1 Then&lt;br&gt;
        DollarToString = DollarToString &amp; "s"&lt;br&gt;
    End If&lt;/p&gt;
	&lt;p&gt;End Function&lt;/p&gt;
	&lt;p&gt;&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2005/07/15/convert_numbers_or_currency_to_english_w/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2005/07/15/convert_numbers_or_currency_to_english_w/#comments</comments></item><item><title>RS Code sample</title><link>http://reportingservices.blog.co.uk/2005/07/15/rs_code_sample/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2005-07-15:/2005/07/15/rs_code_sample/</guid><pubDate>Fri, 15 Jul 2005 16:39:47 +0200</pubDate><description>	&lt;p&gt;While SQL Server Reporting Services supports a variety of built-in aggregates, one of the things that people ask for is the ability to define custom aggregates. While this is not directly supported in RDL, there is a trick you can do using the block within the report. &lt;/p&gt;
	&lt;p&gt;For example, let's say your report contained a query that returned a non-unique set of OrderIDs with associated freight amounts. You need to do a sum of freight values for distinct values of OrderID. In the Code block (available from the Report Properties dialog), you would add:&lt;/p&gt;
	&lt;p&gt;Dim orderIDs As System.Collections.Hashtable&lt;br&gt;
Dim total As Double&lt;br&gt;
Function MyFunc(ByVal orderID As Object, ByVal freight As Obect) As Double&lt;br&gt;
        If (orderIDs Is Nothing) Then&lt;br&gt;
            orderIDs = New System.Collections.Hashtable&lt;br&gt;
        End If&lt;br&gt;
        If (orderID Is Nothing) Then&lt;br&gt;
            MyFunc = total&lt;br&gt;
        Else&lt;br&gt;
            If (Not orderIDs.Contains(orderID)) Then&lt;br&gt;
                total = total + freight&lt;br&gt;
                orderIDs.Add(orderID, freight)&lt;br&gt;
            End If&lt;br&gt;
            MyFunc = total&lt;br&gt;
        End If&lt;br&gt;
End Function&lt;/p&gt;
	&lt;p&gt;In your report, you add a hidden textbox with the value expression to compute the value:&lt;br&gt;
=Sum(Code.MyFunc(Fields!OrderID.Value, Fields!Freight.Value))&lt;/p&gt;
	&lt;p&gt;In the footer of the table, you add a textbox with the value expression:&lt;br&gt;
=Code.MyFunc(Nothing, Fields!Freight.Value)&lt;br&gt;
to return the total value.&lt;/p&gt;
	&lt;p&gt;Caution: This is a workaround that isn't guaranteed to work in releases after SQL Server 2005. I'm providing it in case there is no way you can get around it and you are willing to retest your reports with future versions of Reporting Services.
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2005/07/15/rs_code_sample/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2005/07/15/rs_code_sample/#comments</comments></item><item><title>print reports from url</title><link>http://reportingservices.blog.co.uk/2005/07/15/print_reports_from_url/</link><guid isPermaLink="false">tag:reportingservices.blog.co.uk,2005-07-15:/2005/07/15/print_reports_from_url/</guid><pubDate>Fri, 15 Jul 2005 16:20:20 +0200</pubDate><description>	&lt;p&gt;there is a way to print directly from a URL (apart from having to select the printer!)&lt;/p&gt;
	&lt;p&gt;The command is "&amp;rs:Command=Get&amp;rc:GetImage=8.00.1038.00RSClientPrint.html"&lt;/p&gt;
	&lt;p&gt;Example:&lt;/p&gt;
	&lt;p&gt;&lt;a href="http://rsServer1/reportserver?/Commercial"&gt;http://rsServer1/reportserver?/Commercial&lt;/a&gt; Analytics/Units and Net Sales&amp;rc:toolbar=False&amp;rc:para­meters=false&amp;CategoryValueID=5­5&amp;ProductID:isnull=true&amp;BeginF­iscalPeriodID=1169&amp;EndFiscalPe­riodID=1180&amp;rs:Command=Get&amp;rc:­GetImage=8.00.1038.00RSClientP­rint.html
&lt;/p&gt;
&lt;p&gt; &lt;small&gt; &lt;a href="http://reportingservices.blog.co.uk/2005/07/15/print_reports_from_url/#comments"&gt;Comments&lt;/a&gt; &lt;/small&gt; &lt;/p&gt;</description><comments>http://reportingservices.blog.co.uk/2005/07/15/print_reports_from_url/#comments</comments></item></channel></rss>
