SSRS Export to Excel Hide/Unhide Issue - ssrs-2008

I have an SSRS 2008 report where in I have to hide some columns & export to excel and after exporting to excel, the requirement says that the columns should be unhidden in the excel. Please suggest a way to do this as I heard this can't be dont at all.
Thanks in advance!!

It can be done, but I believe only when deployed to a SSRS 2008 R2 Server. That is how I am using it now. The way you do it is you use a conditional "Hidden" property on the columns that is set to the following:
EDIT: switched the true false around so that it is not hidden in Excel
=IIF(Globals!RenderFormat.Name = "EXCEL",false,true)
That will effectively hide the column unless it is outputting in Excel.
You access the columns if you are using VS2008 by selecting advanced mode on the top right drop down of the group explorer near the bottom of the interface. The columns will list top to bottom representing left to right representation of the columns. Set the "Hidden" property with one of those selected.

It is possible! :)
You just have to select the columns that you want to hide in excel, go to the properties panel (you can press F4) and at the bottom, inside visibility, write this expression in the Hidden option:
=IIF(Globals!RenderFormat.Name = "EXCELOPENXML",true,false)
Even if Visual Studio underlines the 'name' attribute in red, it works fine!
You can hide everything that you want in Excel, but it has to be rendered first in the RPL. Actually, when you hide it, it just appears like a white column.

If Excel 2012 is used , then please try this instead
=IIF(Globals!RenderFormat.Name = "EXCELOPENXML",true,false)

The formula below worked fine for this scenario - I want page breaks in report viewer, but while exporting I need all the rows data in single excel sheet.
=IIF(Globals!RenderFormat.Name = "EXCELOPENXML" OR Globals!RenderFormat.Name = "EXCEL", false, true)

No it can't.
Columns (or any data region) in SSRS that is not visible isn't rendered. It can't show in Excel because it isn't there.
From a user perspective, if I export I'd expect to get what I see on screen.
You could have a URLAccess based report that
points back the same report
has a hidden parameter RenderAllForExcel (..&RenderAllForExcel=true)
renders direct to Excel (...&rs:Format=Excel&rs:Command=Render)

Related

How to show and hide a LineObject by using formula in crystal report?

I'm using a Crystal Report connected with VB.NET 2010, here I using a Line object, which I need to show or hide depending on data field. Where do I need to set the formula?
This project I use is running with SQL 2008 and VB.NET 2010. I've tried some Formula Field for this topic. But the result is not look like that I want to show.
I use the following code on Formula Field:-
IF isNull({PrintParticularList.CUST_INVOICE_No}) or {PrintParticularList.CUST_INVOICE_No}=""
THEN
""
ELSE
"--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
I also try this following Code :-
IF isNull({PrintParticularList.SLNO}) or {PrintParticularList.CUST_INVOICE_No}=""
THEN
Line25.Suppress=True
ELSE
Line25.Suppress=False
But here I got error on Line25.
A number, currency amount,boolean, date, time, date-time, or string is
expected here.
In the Report Designer use the Insert Line tool to draw the line where you want it to appear on your report. The right-click the line object and select "Format Line..." to open the Format Editor dialog box. On this window you will find a check box labeled "Suppress" with an X-2 button to the right. Click the X-2 button and this will open a Formula Workshop window where you will enter the formula that determines if this drawing object should be suppressed or not.
I would recommend the following formula based upon your previous attempts at creating one.
IF isNull({PrintParticularList.SLNO}) or {PrintParticularList.CUST_INVOICE_No}="" THEN
True
ELSE
False
-----EDIT-----
Since you don't have the X-2 button I have 2 more ideas.
1.) Take the 1 section you current have and split it into 3 sections. Then you could place all the content above the line in the first section, place the line in the second section, and the content below the line in the third section. They use the formula to suppress the second section when the line is not needed.
2.) Insert a blank text box in place of the line and set either the top or bottom border of the text box to a single line. Then use the suppress formula to determine if the text box should be shown or hidden.

Crystal Reports: Displaying a record if another record is null, and vice versa

I am building a subreport and have two tables from which I am using one field each containing a phone number.
Original Number {TABLE1.ORG}
Temporary Number {TABLE2.TEM}
What I want:
If {TABLE2.TEM} is not null, then hide {TABLE1.ORG}, else show {TABLE1.ORG}
I tried to use the above as a formula but it doesn't work too Since these both fields are from two different tables if place them next to each other (without any formulas or suppression) in the design mode:
{TABLE1.ORG} {TABLE2.TEM}
...I see them on different lines in preview mode:
+971 4 321321321
+971 4 123123123
Maybe because the formula reads records and evaluate from the same line, I guess this is the reason why above is not working correctly.
It's not obvious why the two fields are appearing on different lines in preview mode, but it's unlikely to be because they are from different tables - it's more likely to be because there isn't enough room in the layout for them both to display in one line, and so they are growing to a size that canb be displayed.
To conditionally suppress {TABLE1.ORG} based on whether the other field is not null:
right-click on {TABLE1.ORG} and select Format Field...
in the Common tab within the Format Editor dialog, click on the conditional suppress formula button x-2 and enter the formula not IsNull ({TABLE2.TEM}) in the Format Formula Editor.
click Save and close to exit from the Format Formula Editor, then click OK to exit the Format Editor dialog.
If you now preview the report, you should find that {TABLE1.ORG} is suppressed where {TABLE2.TEM} is not null.
Note that if you make display of both fields conditional on whether the other is null, then both will be suppressed where neither is null.

Hide row (and remove whitespace placeholder) of tablix in Reporting Services 2008

I have a row in a tablex that I want to hide based on a condition. I can do this with the visibility property and also using CanShrink as well is an option.
I've tried both of these and the best I can do is hide the row (make it invisible), but it keeps the whitespace it takes up - I need to remove the whitespace too so if it is not shown that it doesn't take up paper/viewing space.
I have also made the height of the row very small and put cangrow=true so that that if i populate the field with data based on an expression it will grow to the right size but this is not ideal because there is still 0.03125in of space for the row that is always shown (minimim height) and if it grows it grows to fit the text but not neccessarily the set size I want.
I thought I had done this before in an older version of RS but I can't seem to get it to work correctly in this version (2008).
Any ideas?
Try to set the Hidden property of the Static Row Group under the Details Group, in this case the whole row will disappear instead of the content of the textboxes.
If you are using Report Builder, you need to switch to Advanced Mode (make sure that the Properties and the Grouping windows are displayed, go to the upper right side of the Grouping window and press the black triangle):
Click on the second "Static" item under the "(Details)" group and you can set the Hidden property on the Properties window.
Link to MSDN sample
A simpler way to get to this option for hiding a row is to right-click on the row header and select "Row Visibility". From there you will get a dialog where to can enter an expression.
I was able to make the rows go away by setting the following 2 properties
textbox.CanShrink
row.Hidden
I played w/ row.HideIfNoRows and it seems to have no effect in accomplishing the desired outcome described by op.
Click on textbox, these one is in the properties of the textbox
(if there are multiple columns, I assume you will have to make this setting for each cell/textbox, in my case, I only had 1 column)
CanShrink=false
For the next property, you have to go into ADVANCED MODE by clicking the down arrow at the right side of the Row Groups/Column Groups pane.
Click on the Row containing the line you would like to hide.
The Hidden property can be found in properties pane...
This is an alternate way to set Hidden, as opposed to right clicking the Row Header in the actual Tablix.
Hidden= <expression describing when you want the row hidden hidden>
One other note - If you right click the Row Header and choose 'Row Visibility' you get a dialgue. the Row Property dialog has a caption "Show or Hide Based on an expression".
The actual behaviour is It will HIDE the row if the expression evaluates to TRUE.
IMHO - this is misleading, at best ambiguous.
Once you understand the property you are actually setting is called HIDDEN, then this makes sense. Until then, I certainly assumed I was setting a property called Visisble... FWIW....
On the empty row you want to hide, go to the text box properties and go to expressions -> visibility, then show or hide based on an expression and use
=iif(first(Fields!.Value = ""),true,false)
Setting row visibility logic is important, but I've learned that sometimes a blank row will still appear, even though its contents are hidden. To solve this, I had to do the following non-intuitive steps, but I did in fact succeed in completely suppressing unwanted white space.
In the cell in the tablix region, use the Insert > Rectangle menu option.
In the rectangle, use the Insert > Textbox menu option. Resize as needed.
In the textbox, right-click and enter a placeholder.
Set the value of the placeholder expression to whatever you need.

How to draw a line above a picture?

How do you display a line above a picture in Crystal Reports? I'm currently using Crystal Reports 8.5.
I am using a jpeg image in the report, with an image header section set to “Underlay Following sections”.
I added another header above the image header section, drew the line, and then gave the option “underlay following sections”, but the line is not displaying above the picture.
How can I add a line that will display above the picture?
There's a developer-provided workaround here, using textboxes: http://scn.sap.com/thread/1916479
Insert a text object and enter nothing.
Change the size (the height matches the line width) and background (background color matches the line color).
Right click on the text object and select Move | To Front. And then the "line" will be on top of the picture.
Unforunately, using Crystal Reports 2008, this would only allow me to shrink the textbox to a certain height (0.042 inches), which was still too big for a 1-pixel line.
If I understand your question, you want to add a line to an image in Crystal Report. Unfortunately, you won't be able to do this with Crystal Reports. Your best option is simply to draw a line above the image. If there is an issue with placement of the line, add another section above the section that contains the image.
A little late response, but this CodeProject answer works. I had the same problem and this workaround did the trick. I quote the answer here.
Create 2 separate reports. The 1st report will be the main report and the 2nd will be a subreport.
Place all page headers and footers on the main report.
(Main Report)
Right click on the PageHeaderSection and insert section below.
On the new PageHeaderSection, insert the image(your watermark) and set the section to Underlay Following Sections.
(Subreport)
Go to your subreport and place your data and lines on it.
(Main Report)
Again, right click on the PageHeaderSection and insert section below.
On the new PageHeaderSection, right click, Insert->Subreport
Select Choose a Crystal Report in a project, then click the 2nd report you've created. Voila! The lines will be now on the top of the
image! Just be sure to remove the borders of your subreport.
an easy way I added a line is:
add a text box (length of the line you want)
right click -> format text
click on the tab border
select either top or bottom border, the line style etc etc
You can draw a line or a box to appear on top of images.
To do this:
1- Go to Report Options.
2- Check the option Draw Line And Box On Top, and click OK.
Now you can draw over the images.
I've never tried to do this before now, but it appears that the Z order functions (under the Move menu- to back, to front, etc...) are not available for lines or images and it appears that the image z order is always above the line even if you have multiple sections and use the "underlay following sections" option.
My answer is that this can not be done the way you are trying to do it, but what if you try another way.
EDIT:
I'm assuming that you are trying to create a strike through in the image in certain instances. Assuming that, you should be able to have 2 images (one normal and one with the line through it) that you should then be able to dynamically change based on you're criteria. You should be able to find many articles on dynamically changing the Crystal Report image. Hope this helps.
What worked for me was to create a subreport that essentially duplicates/replaces the Details. Then the usual process of putting the image in the page header and underlaying following sections. The subreport, including its lines, appear above the watermark for me, but please note I'm using Crystal XI.
If I understand your question correctly - In the header section, use the line tool to draw the line. It's in the CR Toolbox. Then drag your image after the line.

How to handle variable width FieldObjects in Crystal Reports

I have a Crystal Report which is viewed via a CrystalReportViewer control on an .aspx page (using VS2008).
The report has two data-driven FieldObjects (which can contain a variable number of chars) which I would like to display on the same line beside each other.
Problem is when the text in the first FieldObject is too long it overlaps the text in the second FieldObject.
I have tried setting the 'CanGrow=True' and 'MaxNumberOfLines=1' on the first FieldObject to 'push' the second FieldObject further to the right, but this didn't work.
How do I get the second FieldObject to always display immediately after the first FieldObject regardless of the length of the text in the first?
Cheers in advance of any knowledge you can drop.
you can add a text object to the report. And while editing the text of the text object, drag the field you want to show from the object explorer into the text box. Then hit space, then drag the second field in to the same text box. Your two fields will always be one space a part. You could, of course, add more spaces or any other text you want.
Or you can create a function which returns field1 + " " + field2 and add the function to the report.