Jasper Reports - Removing pageHeader/columnHeader from subreport - jasper-reports

I have a master report with 2 subreports. I use the same report to generate PDF and xls. Pagination is enabled but for excel, i need to disable pagination, which i do by rendering all in one sheet. The page header/column header get repeat for each page. These page header/column header are from the sub reports. This is fine for PDF but in case of excel, i want to get rid of the repeating header.
I set these properties:
<property name="net.sf.jasperreports.export.xls.exclude.origin.band.3" value="pageHeader" />
<property name="net.sf.jasperreports.export.xls.exclude.origin.keep.first.band.3" value="pageHeader" />
<property name="net.sf.jasperreports.export.pdf.exclude.origin.keep.first.band.1" value="pageHeader" />
<property name="net.sf.jasperreports.export.xls.exclude.origin.band.1" value="columnHeader" />
<property name="net.sf.jasperreports.export.xls.exclude.origin.keep.first.band.1" value="columnHeader" />
<property name="net.sf.jasperreports.export.xls.exclude.origin.band.2" value="pageFooter" />
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows" value="true" />
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true" />
But these arent reflected in the data rendered by the subreport. In xls, i still see the pageHeader/columnHeader gets repeated. Please let me know, how to fix this.

For XLS (and HTML) reports, you may want to set the parameter IS_IGNORE_PAGINATION to true. See http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRParameter.html for documentation.

I know this is an old question, but I keep forgetting how to do this myself and each time I search I seem to find this question so thought I'd put something so I find it next time.
In the main report file you also need to add the sub report to the filter:
<property name="net.sf.jasperreports.export.xls.exclude.origin.band.1" value="columnHeader" />
<property name="net.sf.jasperreports.export.xls.exclude.origin.keep.first.band.1" value="columnHeader" />
<property name="net.sf.jasperreports.export.xls.exclude.origin.report.1" value="sub-report-name" />
<property name="net.sf.jasperreports.export.xls.exclude.origin.keep.first.report.1" value="sub-report-name" />

Related

How to avoid row splitting for jasper-report excel export

I'm trying to create Jasper Report with 2 tables in Detail band and export it into 3 formats (PDF, DOCX and XLS), and there is an issue with 2nd table when exporting to XLS:
The table's row may take the height of 2 pages (last column field's content can be really large). So for DOCX and PDF formats it is totally okay that the export result has 2 pages containing similar row with the only difference in the last column value - first and second part of the column value after splitting. I am using pagination for this formats.
In XLS file such behavior is confusing - first column value is logically unique, but because of splitting it contains 2 lines in a row with the same 'unique' value. I set this property to avoid pagination for this format:
<property name="net.sf.jasperreports.export.xls.paginated" value="false"/>
The result looks like this:
duplicate for split row
I would like to join this to rows values. Maybe there is a way to merge such rows specially in XLS format. Please, help to find a workaround.
My report level properties are:
<property name="net.sf.jasperreports.export.xls.exclude.origin.keep.first.band.1" value="pageHeader"/>
<property name="net.sf.jasperreports.export.xls.exclude.origin.keep.first.band.2" value="columnHeader"/>
<property name="net.sf.jasperreports.export.xls.exclude.origin.band.2" value="pageFooter"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows" value="true"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/>
<property name="net.sf.jasperreports.export.xls.exclude.key.padding"/>
<property name="net.sf.jasperreports.export.xls.exclude.key.pages"/>
<property name="net.sf.jasperreports.export.xls.collapse.row.span" value="false"/>
<property name="net.sf.jasperreports.export.xls.collapse.column.span" value="false"/>
<property name="net.sf.jasperreports.export.xls.white.page.background" value="false"/>
<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>
<property name="net.sf.jasperreports.export.xls.ignore.cell.border" value="false"/>
<property name="net.sf.jasperreports.export.xls.font.size.fix.enabled" value="true"/>
<property name="net.sf.jasperreports.print.keep.full.text" value="true"/>
<property name="net.sf.jasperreports.consume.space.on.overflow" value="true"/>
<property name="net.sf.jasperreports.export.xls.paginated" value="false"/>
<property name="net.sf.jasperreports.export.docx.frames.as.tables" value="false"/>
Properties for the last column text field:
<property name="net.sf.jasperreports.export.xls.auto.fit.row" value="true"/>
<property name="net.sf.jasperreports.export.xls.auto.fit.column" value="true"/>
<property name="net.sf.jasperreports.export.xls.wrap.text" value="true"/>
Thanks in advance!
Set Detail band property "Split Type" to "Prevent"
https://community.jaspersoft.com/wiki/set-detail-band-property-split-type-prevent

how to hide advance search by defalt in SmartField Value help in UI5?

I'm trying to hide Advance search in value help by default.
When this dialog opens, by default the category and category description Advance search options appears, I want this to be hidden.
Please help on how to approach this issue.
This is what I have
This is what I want: (Advance search to be hidden, not removed altogether)
It seems, you have used the Explored-Example from here
There you can also download the coding. Maybe you need to adjust the paths to the mockdata to get it up and running.
What happens if you try: sap:filterable="false" in your metadata.xml ?
Please see also the corresponding docu.
There it says:
“We notice that we have set sap:filterable="false" for the CURR property.
We do this, since we would otherwise also have a currency code search field in the dialog that we wish to avoid (default of sap:filterable is true).”
Now your adjusted metadata.xml from the SmartField example above could look like:
<EntityType Name="VL_SH_H_CATEGORY" sap:content-version="1">
<Key>
<PropertyRef Name="CATC" />
</Key>
<Property Name="CATC" Type="Edm.String" Nullable="false" MaxLength="4" sap:display-format="UpperCase" sap:label="Category" sap:text="LTXT" sap:filterable="false" />
<Property Name="LTXT" Type="Edm.String" Nullable="false" sap:label="Category Description" sap:filterable="false"/>
</EntityType>
…
Is this what you are looking for ?

The changes to the database were committed successfully, but an error occurred while updating the object - revised

I am using EF in .NET V4.0 in Visual Basic (VS2010) with SQL Compact Edition 4.0. We are building a set of simple forms to maintain some tables. One table 'Companies' is linked to 2 other tables (People,CalibrationInfo) with Companies as the parent table. The Entity Type Definition is:
<EntityType Name="Company">
<Documentation>
<Summary>Provides a list of Companies and shipping addresses.</Summary>
</Documentation>
<Key>
<PropertyRef Name="CompanyID" />
</Key>
<Property Name="CompanyID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Name="Name" Type="String" MaxLength="100" Unicode="true" FixedLength="false" Nullable="false" />
<Property Name="Address1" Type="String" MaxLength="100" Unicode="true" FixedLength="false" />
<Property Name="Address2" Type="String" MaxLength="100" Unicode="true" FixedLength="false" />
<Property Name="Address3" Type="String" MaxLength="100" Unicode="true" FixedLength="false" />
<Property Name="Telephone" Type="String" MaxLength="30" FixedLength="false" Unicode="true" />
<Property Name="PrimaryContactID" Type="Int32" a:GetterAccess="Public" xmlns:a="http://schemas.microsoft.com/ado/2006/04/codegeneration" a:SetterAccess="Public" Nullable="true" >
<Documentation>
<Summary>Optional Primary Contact ID for the primary contact for this company.</Summary>
</Documentation>
</Property>
<Property Name="Disabled" Type="Boolean" Nullable="false" DefaultValue="false" />
<NavigationProperty Name="Calibrations" Relationship="NWCUDataStoreModel.FK_CalibrationInfo_Company" FromRole="Companies" ToRole="CalibrationInfo" />
<NavigationProperty Name="PrimaryContact" Relationship="NWCUDataStoreModel.FK_Company_PrimaryContact" FromRole="Company" ToRole="Person" />
</EntityType>
The form uses a binding source set to the Company set in the context:
bsCompanies = ctx.Companies.OrderBy("it.Name")
The Binding Source is linked to a Navigation Bar. Pressing the BindingNavigatorAddNewItem button gets a new record created. I enter only the company name tab to the next field and press the Save button. The link to the Primary Contact is set to nothing so there are no other relationships for this record. The Save button executes the following:
RowsSaved = ctx.SaveChanges()
This generates the InvalidOperationException. The Inner exception is:
AcceptChanges cannot continue because the object's key values conflict with another object...
There are no other records in the database with the name set to 'Test'. The exception indicates that the record was saved, but was unable to accept the changes. The record is still marked as Added. Calling ctx.AcceptChanges after this error generates an exception.
If I were doing this directly in code, instead of with BindingSource on a form, it would essentially look like this:
dim company as New Company
company.Name="Test"
company.PrimaryContactID = nothing
ctx.Companies.Add(company)
ctx.Save
I have looked at other examples of this on multipe sites, and have applied any fixes I could find, including setting the PrimaryContact id directly to a the correct Person record ID and setting the PrimaryContact to Nothing. Nothing makes any difference.
I have also deleted the three tables from the model and then reloaded them. No difference.
I have used this same code with no problems in SQL Server, but almost nothing seems to work with SQL Compact edition V4.0. You would think it should not be so difficult to store a single record into a table. If we have to go back to data sets, I have a lot of recoding to do.
Any suggestions or insights appreciated.
Thanks, Neil
BTW, the answer to this was to use Nuget to download Entity Framework 6.0, Entity Framework SQL Server Compact and Microsoft SQL Server Compact 4.0. I then downloaded the EF Framework 5 DB Generator .tt file as the EF 6 version does not work in Visual Studio 2010. You do this from the Add Code Generation menu item, and select Online Templates->EF 5 DBContext Generator... Finally, I modified the file using this Microsoft article: Databinding with WinForms. After that, things started to work. EF 4.0 does not work with SQL Server Compact, out of the box, without the changes described above. Using the ObservableListSource class described in the article also helped with parent-child relationships on forms, which did not work until I switched to this class.

In Entity Framework, getting the value of an identity column after inserting

I'm using EF4. I want to insert a new MyObject into the database. MyObject has two fields:
Id: int (Identity) and
Name: string
As I've seen in documentation Entity Framework is supposed to set MyObject.Id to the value generated by database after the call to SaveChanges() but in my case that doesn't happen.
using (var context = new MyEntities())
{
var myObject = MyObjects.CreateMyObject(0, "something"); // The first parameter is identity "Id"
context.MyObjects.AddObject(myObject);
context.SaveChanges();
return myObject.Id; // The returned value is 0
}
UPDATE:
This happens in one of my entities and others work fine. By the way, I checked and the DB column is identity and StoreGeneratedPattern is set to Identity.
Here is the SSDL. I don't see any difference. The first one isn't working right:
<EntityType Name="OrgUnit">
<Key>
<PropertyRef Name="Srl" />
</Key>
<Property Name="Srl" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
<Property Name="TypeId" Type="smallint" Nullable="false" />
<Property Name="Name" Type="varchar" Nullable="false" MaxLength="80" />
</EntityType>
<EntityType Name="OrgType">
<Key>
<PropertyRef Name="Srl" />
</Key>
<Property Name="Srl" Type="smallint" Nullable="false" StoreGeneratedPattern="Identity" />
<Property Name="Title" Type="varchar" Nullable="false" MaxLength="120" />
<Property Name="Options" Type="int" Nullable="false" />
</EntityType>
The update is done successfully in the database and the identity is generated but the entity object is not updated with the new identity.
In that case, you EF model is probably not up to date - EF should automagically get your new ID from the database. Try refreshing your EF model.
Your identity column's properties should look like this in your EDMX model:
If you're using Oracle Entity Framework 4 Provider, like I do, from ODP.NET, there is a bug in Designer. Just selecting the Identity value in drop down box will not do. It will annotate the conceptual property in conceptual model with
annotation:StoreGeneratedPattern="Identity"
like in
<Property Type="Int32" Name="Id" Nullable="false" cg:SetterAccess="Private" annotation:StoreGeneratedPattern="Identity" />
But, it will fail to do the same for Storage Model, ie. you need to do it manually. Find the Property (in my case ID) in EntityType of interest and add StoreGeneratedPattern="Identity".
<EntityType Name="PROBLEMI">
<Key>
<PropertyRef Name="ID" />
</Key>
<Property Name="ID" Type="number" Nullable="false" Precision="10" StoreGeneratedPattern="Identity" />
I'm not aware of the same bug in SQL EF provider 'cos I didn't use it.
This should "just work." Make sure the DB column actually is IDENTITY, and that StoreGeneratedPattern is set to Identity in EDMX.
wow! that was a nightmare but at last I solved it, although I didn't understand what the problem was. Maybe this helps someone with the same problem.
Generate the script for creating the table and its data.
Drop the table.
Run the script.
If you are using Linq To Entities, and get this error even if you followed the advices of marc_s (that are really good), you should look at your entites directly in the edmx (xml view) and check if they have the following attribute :
<EntityType Name="MyEntity">
<Key>
<PropertyRef Name="pk" />
</Key>
<Property Name="pk" Type="bigint" Nullable="false" StoreGeneratedPattern="Identity" />
<Property Name="value" Type="float" Nullable="false" />
</EntityType>
The StoreGeneratedPattern="Identity" is also required.
Try using refresh method after Save Changes, it has been documented in MSDN
"To ensure that objects on the client have been updated by data source-side logic, you can call the Refresh method with the StoreWins value after you call SaveChanges."
http://msdn.microsoft.com/en-us/library/bb336792.aspx
Though i feel what #Craig has suggested might also work.
I ran into this today. The difference though was I was using an insert function, where the above person doesn't specify that. What I had to do was make my insert function stored procedure return SCOPE_IDENTITY() and use a result binding for the id returned.
Fixed my issue.

Send data as XML, not PDF, to a JSP from form build in Form Builder

I have used a workflow-send button to submit form data in XML format to a JSP file. However, it saves data as a PDF as opposed to XML string.
I know it is PDF because I get <?xml version="1.0" encoding="UTF-8"?><url>/xforms-server/dynamic/e9002cb0ce38d116e3037bb622050a36</url> on sysout in the JSP.
My properties-local.xml contains the following entries:
<property as="xs:string" name="oxf.xforms.format.input.date" value="[D]/[M]/[Y]"/>
<property as="xs:boolean" name="oxf.fr.email.attach-pdf" value="false"/>
<property as="xs:boolean" name="oxf.fr.alfresco.send-pdf" value="false"/>
<property as="xs:boolean" name="oxf.fr.detail.send.pdf" value="false"/>
<property as="xs:boolean" name="oxf.fr.detail.send.alfresco" value="false"/>
<property as="xs:boolean" name="oxf.fr.detail.send.email" value="false"/>
<property as="xs:string" name="oxf.fr.detail.buttons.*.*" value="workflow-send"/>
<property as="xs:string" name="oxf.fr.detail.send.success.method.*.*" value="post"/>
<property as="xs:anyURI" name="oxf.fr.detail.send.uri.*.*" value="http://localhost:8080/orbeon/xforms-jsp/idm/idm-customer.jsp"/>
<property as="xs:NMTOKENS" name="oxf.xforms.logging.debug" value="document model submission control event action analysis server html submission-details"/>
How can I get the data in XML format instead of a PDF?
According to the documentation on the workflow-send, the PDF is generated if either one of the following properties is true: oxf.fr.detail.send.pdf, oxf.fr.email.attach-pdf, or oxf.fr.alfresco.send-pdf. You don't seem to have any of those properties set to true, so the XML (not the PDF) of the form should be sent to the service you specified. I suspect that you might be using a version of Orbeon Forms that pre-dates the introduction of some of those properties. If you are not on version 3.9, I would suggest you upgrade to 3.9 (or newer). If you are on 3.9 or newer, then please post a comment and we'll try to help.