I am a casual user of the RDLC report control in VS 2005 Web Application, it seemed straightforward. I could set a report data source, then just drag a field into the report body as a text box.
In VS 2010, dragging a field onto a report does not seem to work. I can drag a field into a cell in a table I've added to the report, but when I drag a field onto the report body, rather than show the field name in the text box, I see <> there.
In the expression box, the field looks like =First(Fields!state.Value, "TestDataSet"), but there is a squiggly red line under Field!stata, and no help to say what the problem is. The fields in the table right next to it seem OK. In the text box I can pick the field from a drop down, but I still get the error.
There is only one data set, containing one table connected to the report, so I don't see how there can be ambiguity or how the field could be out of scope..
It must be something simple.
Thanks
Mike Thomas
Assuming you are passing the correct dataset name (found in the report's Report Data tab if you aren't sure), be sure you are passing an IEnumerable (such as a List) as the data component of the ReportDataSource. If you are passing a single object instead of a list, be sure to wrap it in an anonymous array, like this:
ReportDataSource reportDataSource =
new ReportDataSource("TestDataSet", new[] { mySingleObject });
Related
I am trying to create a report putting a field called contact which has the name of a person. This name is linked directly to another table where I keep all the contacts.
For some strange reason, when I include this name (which in query view displays as the name of the contact), instead of the name appearing, the unique ID number is shown on my report.
As mentioned in the article cited in the above comment, you can use a Combo Box control on your report to do the lookup for you. To see how this can be done, create a new report based on the table containing the lookup field, then drag and drop that field onto the report. That will create a Combo Box control with properties that look something like this:
Row Source: SELECT [Clients].[ID], [Clients].[LastName] FROM Clients;
Bound Column: 1
Column Count: 2
Column Widths: 0";1"
You could use a similar Combo Box control on your actual report to display the client's name rather than their numeric ID value.
Another alternative would be to change the Control Source of the report's Text Box control to have it do a DLookUp() on the table. If the lookup field is named [client] then changing the Control Source of the Text Box to something like
=DLookUp("LastName","Clients","ID=" & [client])
would also work.
I wanted to add to the great answer by Gord:
When using a "web" database (started in Access 2007 I think), you cannot change a report's fields to ComboBox style, nor can you use DLookUp(). (web databases lack a ton of features)
The workaround for this, if you want to create a Web-Report that uses lookup fields, is to create a Web-Query first based on your Web-Table (all the Web-* stuff has a www planet icon over the logo, if you create a new Web-DB in Access 2007+ you'll see what I mean)
So, instead of Table -> Report, you'll have to do W-Table -> W-Query -> W-Report.
Then, the only thing you need to customize to get the data right is the W-Query. Start by trying to reproduce the look in the query to match what you want users to see in the report. Note that here in the query, lookups will work fine (instead of the unique ID's, you get field names like you want). However, this will not carry over to the report. To do that, you gotta get the actual text field name you want into the query:
You should already have one table in your query; start by adding the table that your first lookup field points to. For example, the table I want to print is called Stock_Boards, and it has a lookup field called PCBID_lookup that points to the table Stock_PCBs.
Since you're using lookup fields, there should already be a relationship line between the two tables when you add the second one. If there isn't, something has gone horribly wrong.
Now, see how that line connects two fields on the two different tables? For example, I've got my PCBID_lookup field on my Stock_Boards table, which connects to the ID field on my Stock_PCBs table. If I created a report from this now, PCBID_lookup would be a number, a number that correlates to the ID of a record on Stock_PCBs.
To fix it, I will add the name field I want to show up on the report. In my example, that happens to be a Part Number, rather than the ID. I add the PartNumber field from my Stock_PCBs table to the query, and remove the PCBID_lookup field of the Stock_Boards table from my query.
Since PartNumber is what I want to show up on my report, it effectively replaces the original field (PCBID_lookup)
Repeat for all lookup fields you want in your report.
I had 1 more: I removed the Status field of the Stock_Boards table (which was an ID/Lookup) and added the 'Status' field from the Status table (which was the actual text name)
When finished, your query should look exactly how you want the data to appear, without any special tricks or asking Access to do something unnatural. Save your query, and create a web-report from it. Done!
I'm using XtraReports 12.2.12 in my lightswitch project.
This projects connects to a sql database as datasource.
I created a report class and added a query as datasource for the report.
Then added a detailreport with the context menu -> "Insert detail report" to a bound list. (Suggested by xtrareports)
This bound report actually contains the data of a n to n mapping table with references to the corresponding tables. In the detailreport I try to display the data of one of these tables but receive only empty fields.
The funny thing is - the rowcount of empty rows (countable because of the labels I inserted into the report) is correct - only the data is missing.
I thought maybe the xtrareports component is not able to load the data from the referenced table but even the data from the detail report main table is not shown.
Maybe someone could give me a hint on how to solve this.
Thx in Advance
Steve
The solution for this problem was to get rid of the unbound datasource in the report and put every subreport in a separate report class and then insert XRSubReport Control in the main report to include the newly created report, pass parameters and handle BeforePrint events correctly.
Within AX 2009, I have, through compare and compile, added two new controls within a datagrid on a form, a Real edit and a combobox. I have compiled with no issues. The Allow Edit property is set to Yes on both controls.
However, on the form, if I edit one row, whether typing a new number with Real edit or combobox, and don't hit Save but hit the Down Arrow key, the data I typed on the previous records is duplicate in the next record and so on until I release the Down Arrow key, rather than just setting the focus on a new record.
The table where these fields were created doesn't exhibit this behavior. The focus simply moves to the next record and what was typed will not carry over to the next record. Only the form does this...
Has anyone seen this behavior before with AX forms?
You may have omitted to specify the data source on the grid itself?
Or if the new controls are based on Edit methods on the data source, have you got the data source parameter in the method signature?
see http://msdn.microsoft.com/en-us/library/aa637541(AX.10).aspx
[Thanks to Filburt and Devjosh. I have restructured the post and included my attempt approach. ]
I have a table on my SQL DB call ReportList which is a list of report. I need to go through that list and interrogate the reportserver, eport by report, to populate a table called ReportParameters. The ReportParameters table has a column for ReportOwnerID which needs to contains the ReportID value of the corresponding (owner) report as listed in the ReportList table.
This is in VB.NET 2005 ASP2.0 and I have ended up with a mess. Please help me with the cleanest approach to doing this.
It needs to work so:- I have a listbox of the reports as per REportList and a GridView that list all the parameters (uniquely - most of the parameters are common to many reports) the idea being that the parameters get set once and the report can be kicked off by selecting them in the ReportList CheckListBox and clicking on Execute.
I would like it that as I click on a particular report in the ListView, the relevant parameters in the Gridview get a green background and those that do not apply are red. The leftmost column in the gridview contains tha Parameter NAME (not editable) and the next column must be editable to populate the value.
DONE SO FAR:
I have tried on clicking the EXECUTE button , to build a parameters string in a testbox and call that with the Javascript OpenReportWin() function when I open the report in a new window. This works fine, but my biggest issue it interrogating the reportserver reports to get back a list of parameters and dooping them into a table. I have triend to use a hidden DataGrid bound to a ds onto the reportParamaters table; I have tried to poulate it using a datalist but I cannot get the hang of these thionsg and its looking messy. Ther must be a simple clean way of gettting the .GetParameters resultset back from the report server and populating the table without having to create a reportviewer object and cycling through the list of reports - it then has to render each report before you can get that list out.
Thanks
I will withdraw this for now. I will submit a solution when I am comfortable that I have reahced a clean solution.
Mac
PLEASE CLOSE!!!
I have a report which has 3 subreports. In the case of no data I want to hide the report. It's giving me this error:
Error: Subreport could not be shown
How can I hide the subreports?
You are going to have to create some mechanism of knowing whether or not a subreport will successfully be shown on the main report because you aren't going to be able to "return" anything back to the main report from the subreport.
Could you create a small dataset on your main report that would query to check if data will exists for the subreport? and then you could use an expression on the subreport element (or container such as tablix or rectangle) to hide it based upon the results of the query on the main report.
Let me know if I need to clarify.
if we directly create a dataset in the main report itself then there is no question of using another report as a subreport we can directly use the fields from the data set created in the main report and assigning parameters to main dataset values. i think that will not server purpose.