Here is a challenge that had me stumped for several days. Besides for working with Reporting Services on a day to day basis, I also work with a reporting product that requires Apache Tomcat.

Both reside on the same development box running Windows XP box with SP2.

 

One thing that I noticed (in my case) was that in order to bring up the Microsoft Report Manager, I had to attach a port number to the URL that I was calling. In this case I used good ole 8080.

 

http://ssc20460:8080/Reports_SSC20460/Pages/Folder.aspx

 

WebFOCUS the other reporting product with (which I work), requires Tomcat and happens to utilize the same port 8080.

 

And so the plot thickens.

 

One would think.. alright both products cannot utilize the same port at the same time. When I want to work with Microsoft Reporting Services then I shall shut off Tomcat and start up the Report Manager. Right ?

 

Wrong!!! All I obtained was a 404 Error (informing  me that the page was not found).

 

 Alright, I know that I probably could have changed one of the servers to run off another port, but this may have conflicted with something else and besides where would the challenge be?

 

One option that does rectify the problem is to set Tomcat to a manual start and stop under the windows service tab, stop Tomcat and REBOOT the machine.

This way I can start up Tomcat each time I wish to use WebFOCUS.

Here is the kicker, once up and running, stopping it to use MS Reporting Manager places me back in the same scenario that I must reboot the PC to continue to work with MS Reporting Services.

 

With this in mind here is another workaround should you find yourself in a similar position, FOR ANY REASON.

 

 I obtained this one DIRECTLY from ‘MacGyver’.

 

This solution does not require placing Tomcat in manual mode NOR requires a reboot.

It only requires that Tomcat be stopped.

 

After stopping Tomcat ..

1)      Open the Reporting Services Configuration Manager and connect to the server

2)      Select the Report Manager URL tab

3)      Change the virtual directory from Reports_SSC20460 to Reports_SSC204601

4)      Click Apply.

 

The configuration manager will ‘do its thing’.

                Once complete, change the virtual directory BACK to the original Reports_SSC20460, click apply and bring up the Report Manager.

 

One hundred percent Kosher?  No, but it works.

 

Happy programming

 

 

The Problem 

 We are loading data from a single data element into a textbox that can contain html linebreak tags (<br />). Is there a way for reporting services textbox to read this and insert line breaks so that it displays as paragraphs? Is the textbox capable of acting on any character codes (as in a rich textbox)? Do I have any workaround options? Am I going to have to change the app to save the data to multiple records just to be able to display the data to multiple textboxes so that it shows as multiple paragraphs? 

My Solution

Hi
A quick one..
Are you loading this by utilizing as Visual Studio application.
If so what I would suggest is to replace the <BR/ > with a chr(13).
i.e. The cat and the big black dog <BR/>
   String mystring =  "The cat and the big black dog " +  chr(13) ;

Please give this a try and let me know how you fare.

Should you wish to get hold of me njm870t@hotmail.com or ssimon@statestreet.com

sincerest regards
Steve Simon      

 

In my problem of the day, I found this one out on the Microsoft Reporting Services Forum. I bumped my head on this one early in December.

This lady is trying to deploy a Reporting Services Solution from Visual Studio to the report server.

Here is the problem.

"Hi everyone,

I installed  Windows 7 ultimate and use reporting service 2008 .
i create a report when i try to deploy it i get this Reporting Services Error:


Error rsAccessDenied : The permissions granted to user 'Toma-PC\Toma' are insufficient for performing this operation.

and when i open http://localhost/Reports/Pages/Folder.aspx i found that there is no "Content" or "Properties" Tab

how can i deploy this report and why the 2 tabs not exist


plzzzzzzzzzz any one help me

fatma"


My Solution

Hi All
I ran in to this one last month.
1) You should run reporting services under the LOCALSYSTEM account or another account with similar privileges.

THEN

2) Run MSCONFIG from the Programs / RUN and go to tools. You must set the UAC control to DISABLED. The same goes for Vista Ultimate. :)

The problem is that there really is no true 'Administrator' account and should you try to deploy it without LOCAL SYSTEM privileges, you will be told that you do not have adequate privileges(from the Visual Studio side). 

Now with LOCALSYSTEM privs you can deploy ( and this has the equivalent rights as "Administrator") BUT here is the kicker, when you try to logon to the report server you can normally only log on as yourself and you will find that although Visual Studio did deploy the solution to the server you CANNOT see the reports AND THAT IS BECAUSE only the administrator has the rights to access the reports.


So....
Once you have done this, please let me know how you fared.

sincerest regards
Steve Simon
njm870t@hotmail.com

 

This one caught my eye on the Data Mining Forum and it is not the first time that this one has cropped up.

The question

"Hello
I have a DMX listed below. Now if i run this in the Sql Server Management Studio, it returns me the list of Customers that meet the specified criteria (in the Where clause, PredictProbability(Response) > 0.6) ). I would like to just get the count of customers who meet this criteria, dont need the actual Customer records. Since we dont have the equivalent of COUNT(*) in DMX, how would you go about doing this.

There must be a way to write a C# CLR Assembly to take the results of the select statement and count the number of records in the assembly, this way i dont have to bring all the results to the client and count. So i would write something like the following,
Select MYAssembly.GetRecordCount(t.[[Measures]].[Customer]]] )
FROM  ............

However, when i write the GetRecordCount function, i am not sure what the datatype is for the customer records. The would probably do the trick

Is there another way to just get the record or case count ?"

This is the code that WAS POSTED.   I have placed a nifty solution below: See THE SOLUTION.

select t.[[Measures]].[Customer]]]
FROM [PramanaDTModel]
PREDICTION JOIN
(
WITH
MEMBER MEASURES.[Customer]
 AS [Customer Model Input].[Cust Id].MEMBER_CAPTION
MEMBER MEASURES.[Adult Age]
 AS [Customer Model Input].[Cust Id].PROPERTIES('Adult Age')
MEMBER MEASURES.[Children Age]
 AS [Customer Model Input].[Cust Id].PROPERTIES('Children Age')
MEMBER MEASURES.[Children Present Flag]
 AS [Customer Model Input].[Cust Id].PROPERTIES('Children Present Flag')
MEMBER MEASURES.[Dwell Size]
 AS [Customer Model Input].[Cust Id].PROPERTIES('Dwell Size')
MEMBER MEASURES.[Education Level]
 AS [Customer Model Input].[Cust Id].PROPERTIES('Education Level')
MEMBER MEASURES.[Gender]
 AS [Customer Model Input].[Cust Id].PROPERTIES('Gender')
MEMBER MEASURES.[Home Market Value]
 AS [Customer Model Input].[Cust Id].PROPERTIES('Home Market Value')

SELECT {
MEASURES.[Customer],
MEASURES.[Adult Age],
MEASURES.[Children Age],
MEASURES.[Children Present Flag],
MEASURES.[Dwell Size],
MEASURES.[Education Level],
MEASURES.[Gender],
MEASURES.[Home Market Value]
} ON COLUMNS,
[Customer Model Input].[Cust Id].MEMBERS ON ROWS
FROM [PramanaCube]) AS t
ON  [PramanaDTModel].[Adult Age] = t.[[Measures]].[Adult Age]]]
AND [PramanaDTModel].[Children Age] = t.[[Measures]].[Children Age]]]
AND [PramanaDTModel].[Children Present Flag] = t.[[Measures]].[Children Present Flag]]]
AND [PramanaDTModel].[Dwell Size] = t.[[Measures]].[Dwell Size]]]
AND [PramanaDTModel].[Education Level] = t.[[Measures]].[Education Level]]]
AND [PramanaDTModel].[Gender] = t.[[Measures]].[Gender]]]
AND [PramanaDTModel].[Home Market Value] = t.[[Measures]].[Home Market Value]]]
where
PredictProbability([PramanaDTModel].[Response]) > 0.6

THE SOLUTION

Hi


The answer is actually very simple. HERE IS THE TRICK. You must create a linked server against the OLAP data base and within management studio, create an 'outer query' against  the mining model. Here is some working code.
BTW Dejan Sarka put me onto this technique. You might want to read his article on SQLServerCentral.

select G.Region,Count(G.[YearsInBlack])[Amount],[State]
--(sum(G.[YearsInBlack])) Average
--Select convert(decimal,(AVG(G.[YearsInBlack]))),G.Region,(count(G.[YearsInBlack])),(sum(G.[YearsInBlack]))
from (select dmx.yearsinblack,convert(varchar(2),dmx.[State_Province]) [State],
case convert(varchar(2),dmx.[State_Province])
--dmx.[State_Province]
WHEN 'PA' THEN 'NE'
WHEN 'WI' THEN 'NE'
WHEN 'IL' THEN 'NE'
WHEN 'NH' THEN 'NE'
WHEN 'MD' THEN 'SE'
WHEN 'MI' THEN 'NE'
WHEN 'TX' THEN 'SW'
WHEN 'KS' THEN 'SW'
WHEN 'DE' THEN 'SE'
WHEN 'IN' THEN 'NE'
WHEN 'CO' THEN 'SW'
WHEN 'VA' THEN 'SE'
WHEN 'ME' THEN 'NE'
WHEN 'AK' THEN 'NW'
WHEN 'RI' THEN 'NE'
WHEN 'NV' THEN 'SW'
WHEN 'OH' THEN 'NE'
WHEN 'CT' THEN 'NE'
WHEN 'LA' THEN 'SW'
WHEN 'MO' THEN 'SW'
WHEN 'SC' THEN 'SE'
WHEN 'WA' THEN 'NW'
WHEN 'MA' THEN 'NE'
WHEN 'NY' THEN 'NE'
WHEN 'SD' THEN 'NW'
WHEN 'NJ' THEN 'NE'
WHEN 'OR' THEN 'NW'
WHEN 'CA' THEN 'SW'
WHEN 'MT' THEN 'NW'
WHEN 'OK' THEN 'SW'
WHEN 'FL' THEN 'SE'
WHEN 'AR' THEN 'SW'
WHEN 'VT' THEN 'NE'
WHEN 'AL' THEN 'SE'
WHEN 'ND' THEN 'NW'
WHEN 'ID' THEN 'NW'
WHEN 'MN' THEN 'NW'
WHEN 'IA' THEN 'NW'
WHEN 'GA' THEN 'SE'
WHEN 'NC' THEN 'SE'
WHEN 'NE' THEN 'NW'
WHEN 'WY' THEN 'NW'
WHEN 'HI' THEN 'SW'
WHEN 'KY' THEN 'NE'
WHEN 'UT' THEN 'NW'
WHEN 'AZ' THEN 'SW'
WHEN 'MS' THEN 'SW'
WHEN 'TN' THEN 'SW'
WHEN 'WV' THEN 'SE'
WHEN 'NM' THEN 'SW'
      else 'UK' end as "Region"

 from
OPENQUERY (Linked_As1,
'SELECT
  [Decision Tree - Moody Risk].[SSC Preferred],
  t.[Customer_Name_Name],
  t.[Address1],
  t.[City],
  t.[State_Province],
  t.[AAA],
  t.[YearsInBlack]
From
  [Decision Tree - Moody Risk]
PREDICTION JOIN
  OPENQUERY([MoodyRiskSSC],
    ''SELECT
      [Customer_Name_Name],
      [Address1],
      [City],
      [State_Province],
      [AAA],
      [YearsInBlack],
      [Credit_Class],
      [DealtWithBefore]
    FROM
      [dbo].[Moody]
    '') AS t
ON
  [Decision Tree - Moody Risk].[Credit Class] = t.[Credit_Class] AND
  [Decision Tree - Moody Risk].[Years In Black] = t.[YearsInBlack] AND
  [Decision Tree - Moody Risk].[Dealt With Before] = t.[DealtWithBefore]
WHERE
  [Decision Tree - Moody Risk].[SSC Preferred] =''Y'' AND
--  t.[AAA] =''Y'' AND
  t.[YearsInBlack] =2') AS dmx
  ) as G
  where G.[YearsInBlack]>=0 and g.[State] in ('ME','NH','MA','CT','RI','VT')
  --and G.Region = 'NE'
 Group by G.State ,G.region
order by G.state

Should you have any questions or concerns, please feel free to contact me. Happy programming.

regards Steve

As most of you, we in the financial world have often been faced with the challenge of extracting data from relational sources that within the business frame of reference are more hierarchical in nature. Recently, I did what most of us do from time to time, I searched on “Google” for a nifty method of tackling an age old problem that that has plagued us. This was an efficient and effective way in which to extract, display and report upon our customers’ composite fund data.

This may seem a very ordinary task but in our case we often deal with composite funds which have ‘baby funds’ which in turn may have ‘baby funds’ themselves. Our challenge was to find a way to report on the cumulative market value at each level of the hierarchy. I found the skeleton of what I was looking for in an article by Jacob Sebastian ( http://beyondrelational.com/blogs/jacob/default.aspx  ) and I have taken the code and modified it to suit our corporate needs.

I have created a Word Document showing step by step the logic behind the code and have shown screen dumps of the intermediate results. The document may be found on my website under the SQL Server tab http://www.infogoldusa.com

I have also posted the code and a copy of the SQL Server 2008 database for those of you who wish to try it out. It would be super to hear your thoughts and perhaps share some of your experiences in doing similar concepts.

In part two, I shall be showing a similar technique, but this time utilizing CTE's, so please watch for this posting.

Happy Programming

regards Steve