I am using the enhanced reporting feature from Sparx EA (version 10.0.1007) to generate several tables from User Interface design with Fragment Template and JScript.
My idea is to add TaggedValues for specific EA Element, such as
Edit and RichEdit will have Minimum, Maximum, Input Type, Default Value
Buttons will have IsDefault, Action
... etc
and then create a table for each of them in the RTF report. The output will look like:
No Name Mandatory Input Type Min Max Notes
1 Textbox1 Y alphanumeric 1 255 This is note for Textbox1
2 Textbox2 N numeric 0 255 This is note for Textbox2
No Name Action IsDefault Notes
1 Button1 Clear all input N This is note for Button1
2 Button2 Submit the data Y This is note for Button2
I've been able to create the fragment and JScript to create a table. Since the scripts to generate those tables are alike, I created a single script which is called by each fragment script to avoid boilerplate code.
Here is the configuration:
Main template - include Fragment 2 and Fragment 3
Fragment 2 - calls JScript GenerateTableInput(#PACKAGEID#)
Fragment 3 - calls JScript GenerateTableButton(#PACKAGEID#)
JScript GenerateTableInput - calls GenerateTable(packageID, 1)
JScript GenerateTableButton- calls GenerateTable(packageID, 2)
When I use above configuration, only Fragment 2 or Fragment 3 is included in the generated document. However, if I created two partial scripts (boilerplate code), both Fragment 2 and Fragment 3 are generated.
Do I miss any configuration, or is this a bug in Sparx EA?
David
It seems to work ok for me, I have a script with two functions (MyRtfData, MyRtfData2), having two template fragments to call these methods (DocProperties, DocProperties2) and have used these two in a template, and the generated document has fragment 1 and fragment 2 rendered.
Related
I am trying to make a form textbox in PowerShell in which I can paste data into the first textbox and have it auto populate to several other fields when I hit Tab.
I managed to get that part working fine, but the various validation steps that those other fields normally have don't work when filled out in this way.
Here's a sample of what I am talking about:
$InputTextBox.Add_Validating(CODE SEGMENT 1)
$DescriptionTextBox.Add_Validating(CODE SEGMENT 2)
$SplitComboBox.Add_Validating(CODE SEGMENT 3)
Is there anything I can put in CODE SEGMENT 1 to trigger CODE SEGMENT 2 and CODE SEGMENT 3 to run as well? Is there another way to do this with a different approach?
Edit:
When I tab out of $inputTextBox, it splits up the input there and distributes it to the other fields with $DescriptionTextBox.Text = $Description and $SplitComboBox.SelectedItem = $Split.
When that is done though, the values entered do not trigger the contents of Add_Validating() to run.
I am generating xlsx files and would like to not have to compute the values of all formulae during this process.
That is, I would like to set <v> to 0 (or omit it) for cells with an <f>, and have Excel fill in the values when it is opened.
One suggestion was to have a macro run Calculate on startup, but have been unable to find a complete guide on how to do this with signed macros to avoid prompting the user. A flag you can set somewhere within the xlsx would be far better.
Edit: I'm not looking for answers that involve using Office programs to make changes. I am looking for file format details.
The Python module XlsxWriter sets the formula <v> value to 0 (unless the actual value is known) and the <calcPr> fullCalcOnLoad attribute to true in the xl/workbook.xml file:
<calcPr fullCalcOnLoad="1"/>
This works for all Excel and OpenOffice, LibreOffice, Google Docs and Gnumeric versions that I have tested.
The place it won't work is for non-spreadsheet applications that cannot re-calculate the formula value such as file viewers.
If calculation mode is set to automatic, Excel always (re)calculates workbooks on open.
So, just generate your files with calculation mode set to "Automatic".
In xl/workbook.xml, add following node to workbook node:
<calcPr calcMode="auto"/>
Also check Description of how Excel determines the current mode of calculation.
You can use macros as suggested, however you will create a less secure and less compatible workbook without avoiding user interaction to force calculation.
If you opt by using VBA, you may Application.Calculate in Workbook_Open event.
In your XML contents, simply omit the <v> entity in each cell that have a formula, this will force Ms Excel to actualize the formula whatever the Excel options are.
Instead of:
<c r="B2" s="1">
<f>SUM(A1:C1)</f>
<v>6</v>
</c>
Have:
<c r="B2" s="1">
<f>SUM(A1:C1)</f>
</c>
If you have to actualize formula in an already given XML contents, then you can code easily a small parser that search for each <c> entities. If the <c> entity has a <f> entity, then delete its <v> entity.
Faced the same problem when exporting xlsx'es via openxml (with fastest SAX + template file approach w/o zip stream rewinds).
Despite Calculation option=Automatic, no recalculation on opening the file.
Furthermore no recalculation via Calculate Now and Calculate Sheet buttons.
Only upon selecting the cell and pressing enter ;(
Original formula: SUM(A3:A999)
Solution:
Create an internal hidden sheet
Place end row number (999 in my case) into any cell in hidden sheet (P1 in my case)
Reference row number in the cell via INDIRECT operator
Final formula: SUM(A3:INDIRECT("A"&Internal!P1))
Please refer to the attached gifs
before.gif
after.gif
P.S.
Theoretically, in P1 you can implement dynamic row number calculation via smth like =LOOKUP(2;1/(Sheet1!A:A<>"");ROW(Sheet1!A:A)), but my customers were satisfied with hardcoded row number solution
I am trying to compute the repeatControls property of a repeat but get an error
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:repeat id="repeat1" rows="30" value="#{javascript:10}">
<xp:this.repeatControls><![CDATA[${javascript:"true"}]]> </xp:this.repeatControls>
</xp:repeat>
</xp:view>
Here is the error
Description Resource Path Location Type
Could not generate a .java file for the page /test.xsp: Could not find the runtime class for the tag xp:repeat, due to a problem invoking com.ibm.xsp.component.xp.XspDataIterator.getJavaClass(class com.ibm.xsp.page.parse.types.FacesInstance). test.xsp test.nsf/XPages line 1 com.ibm.designer.domino.ide.resources.designerproblem
Is this some kind of bug in DDE or am doing it wrong?
I have tried putting the "true" without quotes as well
I am using notes 9 beta 1
The Repeat (xp:repeat) control specifies the following tooltip for the repeatControls property.
Repeat Controls (boolean:repeatControls)
Specifies if the controls should be created multiple times or the single set of controls should be iterated over multiple times.
The repeatControls property accepts boolean values; specifically either "true" or "false". In Domino Designer from the All Properties View despite the presence of the blue diamond (indicating it can be computed), this property should not be computed.
At design time, the repeatControls property value is used to inform how the compiled XPage is generated hence invalid values prevent this from succeeding; this is the error being reported by Domino Designer and has been logged with the team with reference "DEGN95SMPT".
I have a form here in which there is a textfield which contains a number. In another part of the form there are rows, which coresponds with the number entered. For example 2 = 2 rows etc.
So my idea is to create one row which is duplicated by a javascript. So i must create a input element which name is in a array like name="input[]" how can i do this in Zend Framework?
The only approach i found for this kind of problem is to use subforms. But every Subform has a explicite name which is not in a array.
To make a rendered Zend_Form respond to client-side changes - as in your example, to allow the user to enter the number of rows he wants - you need both client-side and server-handling.
The best example demonstrating the general idea is from Jeremy Kendall:
jeremykendall.net » Blog Archive » Dynamically Adding Elements to Zend_Form
The upshot is that you have client-side code that adds tracks the number of fields and then a preValidation() method that injects the right number of fields into the $form instance before isValid() gets called.
[As noted in the comments there, this preValidation() processing could just be bundled into isValid() so that the controller remains unchanged.]
My SSRS report contains 7 input parameters and while running my report the size of the parameter(i.e. length) is increasing.
One of my input parameter(drop down list) may contain 100 characters so the size is not constant but i want to place all parameters in 2 lines or 3 lines(in a row).
Now it is coming 2 parameters per a row
Please advice
As gbn indicates, it's not easy to change the built in report server method of presenting the parameters. SSRS likes to always use two parameters per line, presented in the order that they exist in the report (which must match the dependency order.)
So the alternatives that gbn mentions: Both involve building a "Wrapper" application: some custom code or a web page that you can code however you like to get the parameters. Then you call Reporting Services, either in code or by passing a formatted URL with your parameters. The report can be displayed in a frame, new window, or passed as a stream to where ever you'd like.
The URL access is pretty straightforward and reliable: I often use it either by hand (to create "favorites") or in code.
http://msdn.microsoft.com/en-us/library/ms153586.aspx
For what you are looking for, these might be more work than you expected, but they will be extremely flexible for your interface.
Jamie
You can certainly do that, just right click on the RDL file in the solution explorer and select view code. then move the XML tags named <ReportParameter Name="Nameofparameter"> under <ReportParameters> according to where ever you want to position. And then save it. thats it!!!
The report parameters are kind of floating in values of 2, so if u have 4 report parameters then it will be shown as 1,2 next line 3,4. Best of luck!!
Use ASP.NET for the paramaters and a ReportViewer control or URL access to render. Seriously.
I don't know of any option to present parameters any way other then the default
I believe you could try using jQuery. The report parameters are rendered in a table under a div tag with class sqlrv-ParameterContainer. Write a jQuery or JavaScript function that will extract the full innerHTML from this div ie. the table content and then extract the table row information like the <label> or <input> tags.
Create your desired table structure with <table><tr><td>{extracted sections}</td><td></td></tr></table> or leave it to your requirement...
Then just append this new HTML structure in place of the original default structure.
In jQuery it will be like
$(".sqlrv-ParameterContainer").html();
which will give you the entire table structure that comes inside the parameter. Use XML parsing and get the input controls and all. Extract these controls as-is, don't change anything.
$(".sqlrv-ParameterContainer table").remove(); // it will remove the SSRS rendered default table from DOM
$(".sqlrv-ParameterContainer table").appendChild('<table><tr>......</tr></table>'); // Append your custom html structure here....
This was something that came to my mind quickly... I would suggest you test it... :)
This doesn't help the OP with SSRS-2008 but in case it helps others - Microsoft have improved this in SSRS 2016 - parameters can now be easily managed via the GUI in Report Builder / Visual studio:
https://www.intertech.com/ssrs-parameters-2016-update/