Visual FoxPro report total pages - report

I am able to get the total pages by doing steps as below:
REPORT FORM report NoConsole
lnMaxPages = _PAGENO
REPORT FORM report PREVIEW
but above only work if my report are all in the same group.
Let say I am printing 3 different reports (3 groups), and assuming each group have different pages. How do I display the correct lnMaxPages for each group?
Edit: I am using VFP 5 where there is no _pagetotal command.

You can write a UDF that stores the number of pages (use a variable in the report that only increments for each group) for example, the page number you are on when you are in group 1/2 or 3. Do some math and calculate the number of pages for each group. This will get you the variables when you run it noconsole. Display it on the report when you actually run it to the screen or printer.

Related

How to generate mutiple pages with BIRT Report Designer

I would like to generate multiple page of a report. The number of pages would be defined in a variable from a Data Set.
example: if the variable is set to 5, the report would be generated in 5 copies (1/5, 2/5.. 5/5).
I'm using BIRT Report Designer 4.4.0.
The rest of the report is filled with other data that would stay the same in the n pages.
I managed to show the page number and the total number of pages (the variable) but didn't manage to generate that amount of pages.
I have no clue how to proceed, so until now, I only manage to generate 1 page.
You can use either a scripted data set or some SQL statement (for e.g. on Oracle something like this)
select rownum from user_objects where rownum <= :pi_num_copies
to create a "for-loop" data set.
I would try the following.
Insert (into the report) a Table binded to your Data Set with a
single column - your "NumberOfCopies" field.
Add Group for the NumberOfCopies.
Put your repeating n-times data to the Table Detail (you can replace the original field with it). Add fixed (for
every page) info to Group header and footer.
Set After property to Always in Page Break paramener
section for Group Footer (not for table's one!)
I guess it will work. If not - play around with Page Break options in Table Footer and Detail...

Is it possible to get multiple reports at a time with normal single report

I am using report viewer (.rdlc report) to print a normal sales receipt in ASP.net project.
I used text boxes in my report to show data. If I send a single receipt details to the report it prints it well and it is working normally.
My question is, what do I need to do if I want to print 2 or more than 1 receipts with same functionality or with same report. In other words, if I send 10 receipt IDs to the form it should result in a report with those number of prints or receipts in the report viewer.
Is it possible through report viewer, or do I need some other technology?
I generate the datasource with all the information from all receipts.
In .Rdlc I use a row group (group by IDRECEIPT).
I put the Dataset Fields into a rectangle and select the option add page break after
It sounds like you need a List control in your report.
See Adding a List.
You will need to set up your report/DataSet to have a parameter that takes multiple receipt ID values.
The List will repeat for each row in the DataSet, i.e. if there are ten receipts the objects in the List object (textboxes, etc) will repeat for each receipt row.
It will be one report but will have a repeated section for each receipt.

ASP.Net Report Viewer - Same report multiple times with different parameter values

I'm currently working on an ASP.Net WebForms application that allows a user to select an item from a list, which ultimately results in a SSRS report being shown, using Report Viewer 2010 (in server mode). The report has been coded with a parameter #id to allow the report to display the correct data for the selected item.
The reports dataset can return multiple rows where some of the data is displayed in a summary area at the top (not in the header section) for example a textbox would have the expression =FIRST(Fields!Address.Value, "dsMain"). The data returned is denormalized so Address will always be the same value. Which is why using FIRST() works. And the rest of the data is shown in a Tablix with grouping applied etc.
But now I'm looking to change this so users can select multiple items and therefore effectively show the report multiple times, but shown in the same report viewer control. The main requirement is to batch print the reports, so showing it in one report view control is important to allow for one click printing of everything.
Now because I didn't design the report in the first place and because its fairly complex in its layout and the sql that is executed; the sql is geared towards running for one id and not a list of them. I'm looking for options to not have to rewrite the report or the sql.
Is it possible to give the report viewer the id parameter as a list and let the report viewer execute same report for each id passed? - I know report parameter can accept multiple values but this isn't the same since the report will unintelligently pass the first value to my stored procedure but not repeat the report for the other values. Perhaps there's a setting in the report designer that allows it to repeat if it is passed multiple values?
Can someone suggest something else to get this working? Or is my only option to extend the report and sql to accept multiple id's and effectively redesign the report?
Thanks any suggestions or help with this.
The answer is to use sub-reports.
Create a new report that takes a list of ids as a multi valued parameter.
Use that parameter as the dataset for a list control.
Have a subreport inside the list. Report inside the list is your original report.
You can then pass each element of your dataset(your list of parameters) as parameter to the your sub-report.
SSRS will repeat it as your want.

Creating a report with a dynamic number of columns

I am developing an ASP.Net c# 4.0 application and am working towards a cross-tab report which will return a dynamically changing number of columns, like so:
Sales Region| ProductA|ProductB|ProductC|........
NorthEast| 10,000 | 3,000 |2,000 |........
SouthEast| 3,000 | 6,000 |2,500 |........
...................................................
...................................................
TOTAL | 100,000| 32,500 |7,800 |........
There is a non determined number of products and regions, so the table returned will have a variable number of columns and rows.
How can I design such a report in Visual Studio 2010, RDLC designer? I have already designed my stored procedure returning the results, but designing the table adapter to return the results gives me no columns (as they are not known).
I think you need a "matrix" report.
This tutorial might help you.
Unfortunately you probably need to rewrite the query (I believe you already used PIVOT to obtain the current query).
Checkout this link http://www.gotreportviewer.com/matrices/
You can use matrix for your solution. Since you need total with each column so you don't need to sum each column individually. It will create rows and columns dynamically as per the datatable records.

Grouping data in an RDLC

I'm sorry if this seems silly, but I'm new to using Report Definition Language (RDLC) files and I'm looking for advice on the best "plan of attack" for a report I must create.
THE REPORT
The report (itself) must display a table of data above a related set of calculations for each a grouping (of data). I'm hoping to keep one group per page...but that may not be possible as each table may become quite long (but that is another question for another day).
...There can be 1 to N GROUPS
Example
(GROUP 1)
TABLE
FORM CALCULATIONS
PAGE BREAK
(GROUP 2)
TABLE
FORM CALCULATIONS
...and so on.
IS THIS THE BEST WAY TO DO THIS?
Place each group into a SUBREPORT. The sub report would then contain the table & form calculations.
...is this right or is there a better way to do this?
THE ACTUAL ANSWER IS
The outer RDLC contains a LIST control which contained the following controls:
TABLE (containing items related to the collection as a whole)
SUBREPORT
The SUBREPORT points to an RDLC which contained the following controls:
TABLE (containing row items)
(1) Use the LIST's "grouping" property to group your 1-to-N collections. The "grouping" property is found by choosing the LIST control then choosing Visual Studio's menu options as such: VIEW > PROPERTIES WINDOW.
(2) Next, set the LIST's data source.
This is found using by choosing the REPORT and then choosing Visual Studio's menu options as such: REPORT > DATA SOURCES. Drag any field onto the control and the data source will automatically set itself up.
NOTE:
If you cannot "see" any data sources in Visual Studio's data sources window it is "probably" because service references in your project are causing issues...temporarily exclude them from your project and choose RESFRESH icon within Visual Studio's data sources window (they should then appear). Sadly, you must do this EVERY TIME your data source changes.
Once you have the LIST iterating properly you can add-in the SUBREPORT and any other controls.
...I now OFFICIALLY hate RDLC's.
personally if i had to do this report i will do it with two different tables. In one rdlc you can put two datatables one will display GROUP 1 Data the second one GROUP 2 Data. The Table has option Page break at end of datatable which can give the PAGE BREAK Between the two datatables.
Best Regards,
Iordan

Resources