Sunday, March 25, 2012
Crystal vs Actuate reporting
Could anyone tell me how Crystal is different from Actuate reporting? I am basically an Actuate report developer and wondering how flexible is Cystal reporting. My knowledge of Crystal is very limited (with ver 7) We are planning to move away from Actuate possibly to Crystal provided if it is flexible enough to do everything. How easy/difficult to do the following...
1. DB Connection: Can I Connect to different DBs? Read UserID/Password info from a text file or a table instead of defining in the report?
2. Drop-down parameters: Dynamically populating parameter values from DB into the Drop-down.
3. Can I control whats goes into the drop-down box based on the user role.
4. Generate reports where the data comes from multiple DBs.
5. Page-leve security
6. Drill-down reporting - Tree view
7. Dynamic Cross-Tab reports -
8. LDAP Integrating
9. Single Sign-on
10. Output in PDF/Excel
etc...
Please point out if these feature are available out of the box. I looked at the latest version features and it says we can do it all. I would like to hear from you what you think whats possible and what not with out much effort.
Thanks,
PSGuys,
I am very sure some of you have used not all but at least some of these tasks. I would appreciate it if you could respond to only those tasks and comment how easy/difficult to do for a beginner. Whats available out of the box. We can directly talk to sales guys but we do not think we get the correct picture unless you talk to people who is actually using the product.
Thanks a lot for your time.
PSsql
Sunday, March 11, 2012
Crystal Report Parameters
I am trying to make a crystal report using vb.net 2005. When i add a new item to my website (crystal report) i choose "Add Command". I write the following code:
--------------------
select panathdate from properties where pid=@.id
--------------------
It then asks me to declare @.id. So i write the following:
--------------------
declare @.id integer
select panathdate from properties where pid=@.id
--------------------
and then i add a new parameter named "@.id".
Then, in the code behind of my webpage (after i added a crystalreportviewer) i write the following code:
--------------------
Dim paramField As New ParameterField
Dim pFields As New ParameterFields()
paramField.ParameterFieldName = "@.id"
paramField.CurrentValues.AddValue(Request("id"))
pFields.Add(paramField)
CrystalReportViewer1.ParameterFieldInfo = pFields
CrystalReportViewer1.DisplayGroupTree = False
CrystalReportViewer1.ReportSource = crReportDocument
--------------------
For some reason, although when i print the @.id it shows the correct number, i cant see the desired record from the database, except a blank report.
Any ideas or a detailed tutorial on how to bring the desired records in the crystal report would be ideal!!
Thanks in advance!Refresh report viewer by calling
CrystalReportViewer1.RefreshReport()
(Please correct the syntax since i am not VB programmer)
Friday, February 24, 2012
Crosssell in cube? How?
Hi guys, I had some users ask me this the other day and I'm not even sure where to start...
We have a dimension (product) which has a one to many relationship with our customer fact table. In this configuration, we can easily see how many customers own each product.
What the user is requesting is to be able to see how many customers have different product combinations. For example, how many customers have product A and B? Or A, B and C?
Is there any way to do this in a cube?
thanks!
Data Mining is what you're going to want to use probably. Take a look at this and see if that answers your question:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=820872&SiteID=1
If you've got data mining question, try the Data Mining forum:
http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=81&SiteID=1
If you want to try doing this yourself with some MDX, something like the following might do the trick:
select {} on 0,
Intersect(
Exists(
[Customer].[Customer].[Customer].Members
,([Date].[Calendar].[June 2004],[Product].[Category].[Bikes])
,"Internet Sales"
)
,Exists(
[Customer].[Customer].[Customer].Members
,([Date].[Calendar].[June 2004],[Product].[Category].[Clothing])
,"Internet Sales"
)
)
on 1
from [Adventure Works]
There are a bunch of ways to write that, but this way gets the people who bought bikes this month, then the people who bought clothing this month, then finds where those customers are in both sets.
|||Thanks for your response. I read up on data mining and produced a report for my useres.. they were very pleased but it appears that hit all around the issue but not quite right on. What they need in the cube is basically to use the product dimension twice, once as a filter and once as a slicer. So you can set the filter to 'Bikes' and then slice the result by products, showing the other products owned by people who own bikes. Is this possible via the cube browser?
|||What if you added the Product dimension to the cube a second time. It would be a role-playing dimension so wouldn't require duplicate storage. Then you could filter by one Product dimension and put the other Product dimension (maybe call it "Also Bought Products"?) on columns. That's my thought for letting users do it themselves in a cube browser.|||Thanks for your response. I tried that. I created a 2nd product dimension as role-playnig, set the relationships the same as the original product dimension and processed the cube.
What happens is that when I set a filter with the original product dimension to "Product A" and slice by the "Other products" dimension, only "Product A" is shown. Maybe I have the relationships for the 2nd product dimension incorrect?
|||You followed my instructions. I left out one important detail. Your fact table needs to relate to your Product dimensions via a many-to-many relationship, not a regular relationship. So you'll need to pull ProductKey out of your fact table and put it in another fact table. Look at the Sales Reasons in Adventure Works as I think it's m2m. Basically you do the following:
Fact --> IntermediateDimension --> BridgeTable --> M2M_Dimension
You'll do that twice, and the M2M_Dimension will be Products and Other Products. Your IntermediateDimension should probably be Customers or something like that. Then your BridgeTable needs to be built as a measure group in the cube with dimension relationships to Customer, Products, and Other Products. Then you should be able to select Products or Other Products as m2m dimension relationships from your original Fact table
.
Hope that helps. Sorry it's hard to describe. I think that will work.
|||Thanks a lot for your help but I still can't seem to get this going... maybe if I'm more specific...
There's a GREAT paper out there on many to many relationships in SSAS 2005 here --> http://www.sqlbi.eu/Default.aspx?tabid=80
My setup is exactly like the first scenerio shown in this paper. Using this example, I want to use the Dim_Account dimension to filter the accounts and also slice by the same dimension, thus showing the other accounts owned by the type of account in the filter. Would you be so kind as to address this example?
Thanks SO much!
|||Fact --> IntermediateDimension --> BridgeTable --> M2M_Dimension
So in Marco's first example, Fact_Balance is the Fact table, Dim_Account is the IntermediateDimension, Factless_AccountCustomer is what I called BridgeTable, and Dim_Customer is the M2M_Dimension. Your Dimension Usage tab in the cube designer will show a relationship from the Fact_Balance measure group to the Dim_Customer dimension as a many-to-many relationship.
You'll just need to repeat all of the above twice for both of your product dimensions. Hope this works out for you.
Was that what you meant to "address this example"?
Thursday, February 16, 2012
Cross tab formula
I am a Crystal beginner *trying* to make a cross tab formula work.
The db has 2 fields which hold the similar data.
I want to do something like:
If {field1} like "A*" or if {field2} like "A*"
then etc etc
But it is not letting me - it only recognises the first part of the if statement
So, any ideas why thats happening?
Cant you compare or pull from two fields in the same formula?
....and if you can't do it with an if/else then any ideas as to how I would do this?You don't want / need the 2nd "if"
If {field1} like "A*" or {field2} like "A*"
then etc etc