Make a Crystal Report selective over the data that it shows - vb.net

I have many reports in a project, each showing different data about different things. I have shown the user the project, and his main feedback was this:
I like the reports, however I notice that in a lot of them, the tables show all of the columns that meet the report criteria (what the report is showing), even if they are empty. Can you change them so that if a column is empty, it is not displayed, as this takes up needless space?
Is there a way I can achieve this? For example, if the report is Sales by Customer x by Suppliers, and one supplier has no data for this customer, I don't want that supplier to be shown. Is there a way I can get the report to only display columns if they contain data?
To clarify, the effect I am after is, if the report below was shown, the column Arris Rail (144) 75x75 1.282m would not be displayed.

Right click on crostab > Cross-tab expert > customise style
set option Suppres empty columns
I think you need to replace "-" value to null or empty

Related

SSRS: How To Create Dynamic Report With Multiple Subreports?

I am still fairly new to SSRS, and I do not know what I need to/can provide as examples to help clarify my issue.
I am developing an SSRS report that accesses a NAV database and generates a report for an equipment number. My task is to generate a master report that can print multiple of those kind of reports(currently 10 max). I am using sub-reports to get the content that I need for an equipment number.
I am looking for a way to make this dynamic, where I can generate 1 to n sub-reports based on how many values were picked for the multi-value parameter. The end result should be one PDF file that contains the full report for each equipment number listed. I am trying to only use SSRS.
I have seen where I could hide sub-reports then make them visible if a condition is met, but this isn't the functionality that I am looking to use. So, what would be the best way to dynamically generate sub-reports based on a multi-value parameter?
I figured it out. I made the sub-report parameter equal no value. I made the main report with a parameter that can select multiple equipment numbers, a list, and a data set which filtered down to the appropriate equipment numbers to avoid duplication. I made the sub-report object in the main take in the cell value from the list equipment number. When the list proceeded to the next row, it copied all of the objects in the box area.

Displaying Multiple String Values as separate fields in Crystal Reports

I'm a bit of a noob with crystal reports so be as detailed as possible.
I'm working with two fields in a report, "CRD_NAME", and "CREDIT_CARD_AMOUNT". I can right click the former to browse data and see the credit card types: AMEX, VISA, DISCVR, and MASTER. When I drag this field out to the report, it will only display one value (currently "AMEX").
When I place the Credit_card_amount field under this, it will properly display AMEX totals for that day. Browsing data on this field shows all of the CC totals, and I'm not sure how to associate them with a card type.
What I'm looking to accomplish, is to have CRD_NAME repeated in 4 columns, displaying the different CC types, and the correlating totals under each one. Do I need to create multiple parameters for each field and what I want it to represent?
Any clues would be much appreciated :)
Your best bet might be to create a "Cross Tab" crystal report. When you create a new crystal report, cross tab is one of the options.

dynamic page break in SSRS

I have a report that displays summary data for three years. Each page displays data for one year. The the report is set to have thee pages. However, for some year that the summary data is negative and there is no need to show. Is there a way to skip this page in the report? There is way to hide controls based on rules, but I couldn't find any way to hide entire page output.
In order to do this, you can simply choose to filter the dataset so that rows/records with negative values do not appear.

VB.NET Active Reports

I have a VB active report which has many different attributes. The report contains attributes area, balance, id and status and is currently grouped my area. What I need to do now is remove all lines from the report where the balance is equal to 0 and the status equal to deactive. The information for the active report is from my database. Thus I think the best way would be to only select records where the balance is not 0 and status not equal to deactive. Is there a way I can query my database and have the active report be based off the query results? Is there an easy way to do this? Thanks for any help.
Yes, the best way to do this is to change the query so that only the minimum records you need are actually coming into the report. The Modify Data Sources at Run Time topic from the documentation shows how to modify that SQL statement in the code dynamically at runtime.
If you can hard-code the SQL query for the report you should probably just modify the SQL at design time inside the designer. This Bind Reports to a Data Source topic shows you how to do that.
You can also programatically control the visibility of fields/textboxes based on the data using the Format event of the section containing those controls (most likely Detail_Format), but it sounds to me like modifying the SQL query is your best bet.

SSRS - Producing a report that is not dynamic in size

I want to build a report that is completely static in size and shape. I'm attempting to mimic a hand-entered report that someone in my organization has been building from a word doc for years.
The critical piece appears to be fixing the number of rows that are produced in the various Table grids that fill the page. I would like them to always contain a set number of rows, whether data is present or not. It would seem that if I can just fix the size my tables, then all the other elements will not be forced to move because of stretching repeater sections.
All my grids are backed by stored procedures, so I'm open to SQL tricks as well.
Sorry i did miss-read the question.
If you know how many rows you need to return (say 20) maybe you could pad some bogus info into your records returned from the stored procedure. You might be able to count the records your query has returned before you send them back, and if you have less than 20 add some bogus ones to the record set, put something like 'NonDisp' or something in them.
Then in the report put an iif statement into the cells that checks for this bogus info, if it is found change the cell to display nothing, otherwise show the valid values
Not a direct answer, but perhaps a workaround you might consider: perhaps you can insert a page break after the table grids that have dynamic sizes, so that all elements that follow it have a fixed position (relative to the top of the page).
Add a parent group to tablix with =Ceiling((RowNumber(Nothing)) / 10000) expression. (10000 or whatever is required no. of rows)
In page break properties of group, check box for insert break between groups, leave the bottom boxes un-checked.
Optionally, we may chose to set hidden property true for text boxes added because of new parent group.
In tablix properties, check box for "Keep together on one page".