C1ReportDesigner subreport overflow to footer and not page breaking - templates

I am working with C1ReportDesigner which I am new to it. I have a sub-reports embedded with main report. When a column in sub-report content is huge it doesn't page break, instead it overflows to footer. How to page break and continue in next page in C1ReportDesigner?

It seems that the KeepTogether property of the control within the subreport (having long text) is set to True. This property tends to keep the whole text together on a single page, hence ,at times, causing the overflowing of text over other sections.
Please make sure to set the KeepTogether property of Field (of Subreport) having long text is set to False.
Regards,
Mohita

Related

Keep a row together but break if necessary

I´m working on a project using XSL-FO to generate some PDF Files.
There are several tables with rating comparisons.
Some columns have short text and some have very long text.
Without the attribute keep-together.within-page or with keep-together.within-page='auto' the tables look very ugly because the columns break the text at the end of a page - no matter what.
So i decided to use keep-together.within-page='always' to achive a better look. If a row doesnt fit on a page, fop moves the row to a new page. beautiful.
Now the problem.
In some cases some texts are very long and the content is larger than one page. In this case i want the row to break onto 2 pages.
I was looking for something like keep-together.within-page='always if possible'
is it possible to achive this some how?
You are searching for:
keep-together.within-page='<number(1-9)>'
If you type in 'always' fop tries to fit it with any necessary method into one page. If you specify a number it is more like "I will try what I can, but if the text is to long, it will break anyways". The number you fill in, is more like a priority, in case you have many nested keep-togethers. That means that the value 1 will also do its job.

Dynamic footer row prints outside the content area

I'm using LiveCycle Designer ES 8.2.1. I also have a web application injecting data into the report I created with LiveCycle. The basic structure is the following:
1 Master page with 1 page and a content area containing a table filled with a list of object. My table has 1 header row, 2 body rows and a footer row that is added dynamically with page break condition.
The logic behind that is written in FormCalc. Our objects are sent as a list which fills either one or the other body row based on a type. Each object has an "authority" property with a certain value that are used to mark the pages. The list of object is sorted by authority. So, when the current iterating object has a different authority than the previous one, we insert a page brake and the footer row. Everything is wraped in a subform that is "In Content Area" (Object/Pagination/Place).
The problem is that the footer row is not considered as part of the content area. If the last line of a section fits tight in the content area, the footer row overflows outside the content area and even the whole page in some cases.
Here are more details:
We tried any combination of subform wraping and ticking of the "Allow page break with content" check box.
We tried changing the type of the footer row for a body row in case footers were different than body rows.
We tried every combination of "Keep with" and "place".
We tried to change the footer row to a body row and have it displayed on every page and that work, but our client refused the solution...
Starting with the above (pt 4) template and changing back the body to footer row brought us to the begining
To the best of our knowledge, we tried everyting possible...
What I'm looking for is either a confirmed bug for version 8.2.1 about this or a solution other than redesigning the whole report.

How to determine if a given word or phrase from a list is within an anchor tag?

We have a ColdFusion based site that involves a large number of 'document authors' that have little or no knowledge of HTML. The 'documents' they create are comprised of HTML stored in a table in the database. They use a CKEDITOR interface. The content that they create is output into specific area of the page. The document frequently has tons of technical terms that readers may not be familiar with that we would like to have tooltips automatically show up for.
I and the other programmer want to have some code insert 'tooltip' code into the page based on a list of words in a table on our SQL server. The 'dictionary' table in our database has a unique ID, the word/phrase we will look for and a corresponding definition that would be displayed in the tooltip.
For instance, one of the word/phrases we will be looking for is 'Scrum Master'. If it occurs in the document area, we need to insert code around the words to create a tooltip. To do that, we need to see if certain conditions exist. Are the words within an anchor tag? If yes, is there already a title value for the tag (title is used to contain the info to be displayed in a tooltip)? If a title tag exists, don't do anything. If the words are not in an anchor tag, then we would put anchor tags around the words along with the title that will contain the definition.
The tooltip code we use is via jQuery (http://jqueryui.com/tooltip/). It is quick and simple to use. We just need to figure out how to use it dynamically based on our dictionary table.
Do you have any suggestions of how to go about this?
I was hoping that jSoup might have a function that I could use, but that doesn't seem to be the right technology for what I want to do, but I could be wrong and I am happy to be corrected!
We have a large number of these documents and so manually inserting and maintaining the tooltip code is just not an option.
Update you content with something like:
strOut = ReplaceList(strIn, ValueList(qryTT.find), ValueList(qryTT.replace));
Since words are delimited by spaces, the qryTT.find needs to have spaces. The replace column is going to need to include some of the original content. You are going to have to be careful with words followed by a comma or a period too.
I would cache the results because I would expect it to be memory intensive.

My test script is not finding items in dynamic web list control - list in code not updated with current info

I am having a problem in QTP with selection of a web list box and I have exhausted what I know to do to resolve it. I am hoping someone can help.
There are 5 controls in a container, 2 webedit controls and 3 weblist controls. Together, they allow entry of accounts associated with a customer, and there can be 16 accounts for any customer. There are only ever five controls active at any time, whether editing or entering information for an account. When the information for an account is entered and accepted, it changes to a read-only table row and a new set of controls appears below it for entry of the next account.
The information entered in these controls is the account number, type, description, designation, and status. The status value is contingent on the designation, and the items in the list change dynamically depending on what the user specifies for the designation. The status list is not enabled until the designation is specified.
After some experimenting with timing, I was able to get past an issue where the status list for the first account was seen by QTP as disabled even though it was clearly enabled. I was then able to advance to entry of the second account.
I change the designation on the second account and try to select an appropriate item (specified in a data table) in the status list. My specification from the data table is never found. I figured it was a problem with verbiage differences and also that I should probably anticipate that and address it now, so I wrote a function to accept three parameters, the list and up to two search items. My function searches the listbox passed to it and looks for a match (full or partial) on the search items it receives. Here is where I encountered a significant problem.
The list of the control my function received was from the previous iteration of the test, corresponding to the designation of that account. This is why my function was not finding the selection item. The list on the screen shows the appropriate items, which suggests that I am looking at the wrong object. I also get the ‘object is disabled’ message when I put my data table value directly into the list with the select statement.
The active controls are displayed below the readonly presentation of the previously entered accounts. I am very new to QTP, but I also read documentation. My only theory at this point is that ATP is not passing the right list to my function… that perhaps that how it was learned included the position, which will change each time. However, the spy identifies the screen control as the same item I processed for the preceding account, which makes my theory suspect. In addition, the other four controls, which are not dynamically changing, do not present the same problem. I can put the information in them consistently.
I apologize for the length of this question, but I wanted to be as thorough and clear as possible. Can anyone help me get past this obstacle.
There are many possiblities why it is exposing this behaviour, so let's start with something simple:
Did you try a myWebList.Refresh call before you do something with the listbox? Refresh re-identifies the object.
Have you put a break point (red dot) inside the custom function. Just see what is happening there. With the debug viewer you can enter a realtime command in the scope of that function like msgbox myWebList.exist(0) or myWebList.Highlight
Can you see how the disabled property is propagated to the webpage? If you can 'Object Spy' it as TO property, you can add it in the GUI Map description.
A more sophisticated aproach is to create a Description with the weblist properties. If you can read the disabled property as an RO property from the 'Object Spy', you can use it as an identifier like "attribute/customDisabledProperty:=false".
If you cannot correctly read the disabled property, you can create a description object and do a count on the amount of items that match that description on that page with numberOfLists = Browser("my browser").Page("my page").ChildObjects(myDescription).Count and get the last list with Set lastList = Browser("my browser").Page("my page").ChildObjects(myDescription)(numberOfLists-1)
Keep us informed. Depending on how this works out, we can work into a direction for a solution.
I figured this out early this morning. There are 4 different list boxes used, each made visible or enabled dependent on the selection of the previous list. This is why the spy found the one listed when I was using it and also why the items in the list were not appropriate to what I had selected and also why it appeared disabled to QTP but enabled to me.
I was selecting the same designation when trying to spy it. It was intuitive that the controls were all the same. I am also a windows programmer and I would have populated the same list each time with the appropriate list items, and I presumed that was what the web developer was doing. It was not and it took some time to figure that out. Now that I figured it out, everything is working fine, and I came back to report that. This was a significant, time-intensive lesson.
Thank you very much for your input. It is still useful because I am very new to QTP and every thing I learn is of value.

How to prevent page break in QTextDocument block or frame?

Is it possible to prevent page break anywhere inside table in QTextDocument?
In my QTextDocument I have a plenty of larger images created from small image blocks. Adding large images seeems to be a waste of resources, so an obvious solution seems to be creating a table, putting small image in each cell.
The problem is that now these tables can have page breaks after each row. The only way to prevent it I know is to call setPageBreakPolicy() for each table/frame format, but this requires obligatory page break before each larger image. I would like to have these page breaks only if necessary (larger image does not fit).
Is it possible to do what I want?
For a QTextTable, you can prevent splitting it over multiple pages by setting the headerRowCount property of the QTextTableFormat equal to the number of rows in the table. This property sets the number of rows that are repeated when a page boundary is crossed, repeating the table header. If you set you entire table to be the header, the whole table is always placed on a single page.
One warning: do not do this with tables that potentially do not fit on a single page. Qt will mess things up in this case.
I hope Qt will add some extra flags to the pageBreakPolicy property in the future, so that we can create unbreakable tables/frames in a clean way.