Calculations while looping through dataset
Hi
I've just started using spry which I'm really enjoying. It's
a really great and powerful framework.
I have been able to display a dynamic region and its content
looping through the rows of the dataset.
My problem now is that according to the data in the data set,
I have to make some calculations for each row. I can't seem to find
a way to do it, and don't actually know if it is possible.
this is how my xml looks like:
var xmlStr = "<?xml version=\"1.0\"
encoding=\"iso-8859-1\"?> \
<portfolios> \
<portfolio id=\"12345\"> \
<portfolio_name>Test1</portfolio_name> \
<investment>500000.0000</investment> \
<current_value>513475.7260</current_value> \
</portfolio> \
<portfolio id=\"67890\"> \
<name>Test2</portfolio_name> \
<investment>100000.0000</investment> \
<current_value>103574.6610</current_value> \
</portfolio> \
</portfolios>";
var dsPortfolios = new Spry.Data.XMLDataSet(null,
"/portfolios/portfolio");
var xmlDOMDocument = Spry.Utils.stringToXMLDoc(xmlStr);
dsPortfolios.setDataFromDoc(xmlDOMDocument);
and the display for the data set:
<div spry:region="dsPortfolios"
class="SpryHiddenRegion">
<table>
<tr><th>Name</th><th>Investment</th><th>Current
Value</th><th>Gain</th><th">Pct
Gain</th</tr>
<tr spry:repeat="dsPortfolios">
<td>{name}</td><td>{investment}</td><td>{current_value}</td><td>GAIN_CALC</td><td>GAIN_PE RCENT</td>
</tr>
</table>
</div>
basically, where it says GAIN_CALC and GAIN_PERCENT in the
table, these should be calculation (i.e. GAIN_CALC = current_value
- investment and GAIN_PERCENT = ((current_value -
investment)*100)/investment )
can anybody help me there (if it's possible to do such things
of course)?
Thanks
If you register a post load observer on your data set, you
can perform the calculations on each row and add custom columns
that you can then refer to from your region as data references:
var ds = new Spry.Data.XMLDataSet("portfolios.xml",
"/portfolios/portfolio");
var obs = {};
obs.onPostLoad = function(notifier, data)
var rows = ds.getData();
for (var i = 0; rows && i < rows.length; i++)
var investment = parseFloat(rows[ i ][ "investment" ]);
var currentValue = parseFloat(rows[ i ][ "current_value" ]);
rows[ i ][ "gain_calc" ] = currentValue - investment;
rows[ i ][ "gain_percent" ] = ((currentValue -
investment)*100) / investment;
ds.addObserver(obs);
<div spry:region="dsPortfolios"
class="SpryHiddenRegion">
<table>
<tr><th>Name</th><th>Investment</th><th>Current
Value</th><th>Gain</th><th">Pct
Gain</th</tr>
<tr spry:repeat="dsPortfolios">
<td>{name}</td><td>{investment}</td><td>{current_value}</td><td>{gain_calc}</td><td>{gain_ percent}</td>
</tr>
</table>
</div>
--== Kin ==--
Similar Messages
-
How do I go about this? Creating table while looping through dates?
How do I do this? Creating table while looping through dates?
I have a table with information like:
ID---Date---Status
1-------04/23-----Open
1-------04/25-----Open
2-------04/24-----Closed
3-------04/26-----Closed
What I want to do is create another table based on this per ID, but have all the dates/statuses on the same line as that ID number (as additional columns). The problem is that the number of columns needed is to be dynamically decided by the number of dates.
To illustrate my example, I'm looking to achieve the following:
ID---04/23 Status---04/24--Status---04/25--Status---04/26--Status
1----Open--------------<null>-------------Open---------------<null>
2----<null>------------Closed-------------<null>-------------<null>
3----<null>------------<null>-------------<null>-------------Closed
What would be the best way to go about this?
Can someone please point me in the right direction?
Would I need to do some looping?
Thanks in advance!thedunnyman wrote:
How do I do this? Creating table while looping through dates?
I have a table with information like:
ID---Date---Status
1-------04/23-----Open
1-------04/25-----Open
2-------04/24-----Closed
3-------04/26-----Closed
What I want to do is create another table based on this per ID, but have all the dates/statuses on the same line as that ID number (as additional columns). The problem is that the number of columns needed is to be dynamically decided by the number of dates.
To illustrate my example, I'm looking to achieve the following:
ID---04/23 Status---04/24--Status---04/25--Status---04/26--Status
1----Open--------------<null>-------------Open---------------<null>
2----<null>------------Closed-------------<null>-------------<null>
3----<null>------------<null>-------------<null>-------------Closed
What would be the best way to go about this?
Can someone please point me in the right direction?
Would I need to do some looping?
Thanks in advance!I hope you are asking about writing a query to DISPLAY the data that way ... not to actually create such a massively denormalized table .... -
Extra Space coming while looping through Hash Set in JSP: URGENT
Hi,
I have to loop through the Hash Set in jsp, and display the contents with a comma seperated list.
I am able to display the values withing the set, however.. after every value,
i am getting an extra space and then a comma. How do i get rid of this extra space?
Below is the code snippet
<% Set tagSet = new HashSet();
tagSet = (Set)request.getAttribute(PhotoConstants.REQ_RELATED_TAGS);
Iterator i = tagSet.iterator();
while(i.hasNext()){
String tagName=(String)i.next();
%>
<a href="/outlook/photo/keywords?keywords=<%=URLEncoder.encode(tagName)%>"><%=tagName%></a>
<%if(i.hasNext()==true){%>,<%}%>
<%}%>
I am getting following output:
NY , sky , Sports & Recreation , clouds , New York City , New York
Expected Output:
NY, sky, Sports & Recreation, clouds, New York City, New York
I want space after a comma, not befor comma...
Any help is really appreciated..
Thanks
Deepti<% while(i.hasNext()) {
String tagName=(String)i.next(); %>
<a href="/outlook/photo/keywords?keywords=<%=URLEncoder.encode(tagName)
%>"><%=tagName%></a><%if(i.hasNext()==true){ %>,<% } %>
<% } %>I think this is an html whitespace thing... try moving your code around to look like what's above (ie move the end of line to inside your scriptlet tag)
Code looks OK... -
Problem while looping through record set and tem table for matching data
hi I am using one record set and ane temp table and looping through both to find the match between dates.
If date matches then it shud do some processing otherwise it will return default values(null values).
FOR i IN student_rec .FIRST..student_rec .LAST /*student_rec.school_date has 01-MAR-2012,02-MAR-2012,03-MAR-2012,04-MAR-2012,05-MAR-2012*/
LOOP
l_return_out.school_date := student_rec(i).school_date;
l_return_out.marks_obtained := student_rec(i).marks_obtained;
FOR i IN selected_dates .FIRST..selected_dates .LAST /*selected_dates has 02-MAR-2012,03-MAR-2012,05-MAR-2012*/
LOOP
DBMS_OUTPUT.PUT_LINE(selected_dates(i));
IF selected_dates(i)=student_rec(i).sett_date
THEN
EXIT;
end if;
---------call procedure P1
-----------get output as ret_val1 /*getting ret_val1 as 10 for 02-MAR-2012,03-MAR-2012,05-MAR-2012 */
----------call procedure P2
---------get ouput as ret_val2 /*getting ret_val1 as 20 for 02-MAR-2012,03-MAR-2012,05-MAR-2012 */
if ret_val1>0 0r ret_val2>0
then
l_return_out.has_csts := yes;
l_return_out.cst_present := 10;
l_return_out.cst_absent := 20;
else
l_return_out.has_csts :=No;
l_return_out.cst_present:= 0;
l_return_out.cst_absent := 0;
end if;
end loop;
l_return_out.has_cst := student_rec(i).has_csts;
l_return_out.cst_missing := student_rec(i).cst_present;
l_return_out.cst_existing := student_rec(i).cst_absent;
PIPE ROW(l_return_out);
END LOOP;
RETURN ;
I am expecting this as result
school_date marks_obtained has_csts cst_present cst_absent
01-MAR-2012 20
02-MAR-2012 30 yes 10 20
03-MAR-2012 40 yes 10 20
04-MAR-2012 70
05-MAR-2012 60 yes 10 20
but this as result
school_date marks_obtained has_csts cst_present cst_absent
01-MAR-2012 20
02-MAR-2012 30
03-MAR-2012 40
04-MAR-2012 70
05-MAR-2012 60
Can anybody please highlight the mistake i am doing while processing the logic??
Edited by: 942390 on Jul 13, 2012 8:44 PM
Edited by: 942390 on Jul 13, 2012 8:45 PMI am getting a set values from a record set....student_rec
and on pipelining this record set from 1st till last
i am getting this
school_date marks_obtained has_csts cst_present cst_absent
01-MAR-2012 20
02-MAR-2012 30
03-MAR-2012 40
04-MAR-2012 70
05-MAR-2012 60
so initially has_csts, cst_present and cst_absent is null for all dates.
now have a temp table of selected_dates(which contains these dates 02-MAR-2012,03-MAR-2012,05-MAR-2012)
now I am want to populate has_csts, cst_present and cst_absent with data only for those dates which is present in selected_dates temp table(02-MAR-2012,03-MAR-2012,05-MAR-2012) and that too has_csts, cst_present and cst_absent will be populated with some condition (based on the values from procedure got from P1 and P2).
so want result set to look like
school_date marks_obtained has_csts cst_present cst_absent
01-MAR-2012 20
02-MAR-2012 30 yes 10 20
03-MAR-2012 40 yes 10 20
04-MAR-2012 70
05-MAR-2012 60 yes 10 20
so what could be the possible solution to obtained this.... -
Custom pll to disable form messages while looping through block records
I need to loop through block records in CUSTOM pll to check for if one check box is checked or not. But in that process the messages written at the forn level are popping up which are of no use to the user. I want to disable the messages for my looping. I would enable it after the processing in CUSTOM PLL
Regards,
SSHello,
Here is the Forms forum, and you would increase chances to get an answer by posting in the EBS forum.
Francois -
Error "Screen output are too small" when looping through internal table!
Hello All:
I have a huge internal table with some 79000 records and while looping through them and doing some other processing inside the loop, I am getting an error "Screen output are too small"! Could someone please help mw how to fix this issue? I can send the all the code if anyone wants to look at the code. Thanks in advance and rewards are assured.
MithunHi,
Check this
new-page print off.
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
destination = v_dest
IMPORTING
out_parameters = params
valid = valid.
* params-linct = '58'.
* params-linsz = '170'.
* params-paart = 'X_58_170'.
* params-prtxt = v_spool_text.
* params-primm = 'X'.
* params-prrel = 'X'.
NEW-PAGE PRINT ON PARAMETERS params NO DIALOG.
After the call fm GET_PRINT_PARAMETERS params internal table contains all the values for generating spool.
aRs -
Hello, I am experience a heapdump while looping through a result set from a query I amr unning.
Our system creates an instance of a transfer object representing one row in the result set for each row as it loops through. The result set brings back 36000 rows, so it is creating 36000 objects. As a result, a heapdump is occurring. What can be done to fix this error?even if it holds 360000 rows,
I still think [zadok] idea is a great idea.
you can get, for example first 1000 rows, cacluate it save result, and then get the next 1000 rows, is it make sense?
if you still want to get it by one time, extend your vm mem, normal setting is 64M(I am not sure) -
Looping through nested datasets
My apologies in advance if this has been asked before, but the search function on these forums doesn't appear to be working at the moment...
Using: Spry 1.6.1
Dreamweaver CS5
IE 7 and 8, Firefox 4, and Chrome 10
The question:
I have a parent xml dataset, with two nested datasets, like this:
var dsCourse = new Spry.Data.XMLDataSet("menu2.xml", "menu");
var dsTopic = new Spry.Data.NestedXMLDataSet(dsCourse, "topic");
var dsLessons = new Spry.Data.NestedXMLDataSet(dsTopic, "lesson");
The data displays properly in the html, using regions, etc. However, when I try looping through them using javascript:
topics = dsTopic.getData();
for (var t = 0; t < topics.length; t++) { //loop through the topics dataset
dsTopic.setCurrentRowNumber(t);
var top = dsTopic.getCurrentRow();
alert('current topic row name: ' + top["@name"]); //for debug purposes, display the topic name
var rows = dsLessons.getData();
for (var i = 0; i < rows.length; i++) { //loop through the lessons dataset
dsLessons.setCurrentRowNumber(i);
alert("lesson name is: " + rows[i]['name']);//display the lesson name
It will perform both loops properly, displaying the correct information for each dataset in Firefox 4, but in IE 7 and 8, and in Chrome it will list each of the Topics correctly, but only displays the first set of lessons.
The xml looks like:
<topic name="Claims" default="true" complete="false">
<lesson>
<name>Getting Started</name>
<score>0</score>
</lesson>
<lesson>
<name>Adding a Claim</name>
<score>0</score>
</lesson>
<lesson>
<name>Adding a Claimant</name>
<score>0</score>
</lesson>
<topic name="Bills" default="false" complete="false">
<lesson>
<name>Bill Components</name>
<score>0</score>
</lesson>
etc.
For what it's worth, all of the topics and lessons display properly in the html using spry regions, etc. It only appears to have an issue in javascript. And then only in IE. Is there, perhaps, a better way to do this that I'm not aware of?
Thanks in advance!
JonathanThis might help http://labs.adobe.com/technologies/spry/samples/data_region/NestedXMLDataSample.html
Gramps -
HI there!
I have a while loop, in which i am reading from/writing to a compact rio. Furthermore, i added a event structure, its the 1st time i'm using it so i'm a bit lost at times.
I have the event structure set up for all my button i want to trigger an event. However, i have some other code which i would also like to be executed, evebn though no event has been executed.
I noticed that the other stuff in the loop only gets executed the 1st time through the loop and when an event is triggered.
My question therefore is, how do i get the other stuff to execute as well?
Please advise.
Thanks.
Regards,Put the other code in the timeout event case. Wire some positive value to the timeout hourglass input. That code will execute everytime a timeout occurs. For instance, if you wire 100 into the timeout, the code in that case will execute every 100 mSec.
- tbob
Inventor of the WORM Global -
Hello Colleagues,
In BRFPLus I understand we can create Loop Expressions that allow you to loop through a table and perform different Actions based on the retrieved contents of the table.
We are not using BRFPLus (but the old BRF instead). Does anyone know how to build Loop Expressions in BRF without the use of ABAP Function Modules?
Your feedback would be really appreciated.
Thanks in advance.
Regards,
Ivor M.Hello Colleagues,
In BRFPLus I understand we can create Loop Expressions that allow you to loop through a table and perform different Actions based on the retrieved contents of the table.
We are not using BRFPLus (but the old BRF instead). Does anyone know how to build Loop Expressions in BRF without the use of ABAP Function Modules?
Your feedback would be really appreciated.
Thanks in advance.
Regards,
Ivor M. -
Stopping while loop after last element of 2d array is passed through
I posted something similar to this before, but what I got didn't work. So this time I'll try to be more clear with what I am trying to do. What I have done is combine two 1d arrays into a 2d array, and am using it to run an experiment. I split the 2d array into a 1d array by column, and am trying to get the while loop that the array is in to stop after the last element of the array is indexed. I need to use a while loop because the array is constantly updating because the number of elements can be changed while the program is running. What I am having trouble with is getting the while loop to stop after the last element has run, because the last element is subject to change. Any ideas?
ThanksI am trying to run a measurement using labview to control different instruments. The program is suppossed tp work in that it runs a measurement for each current setpoint inputed, for 1 magnetic field setpoint. So for example, if the magnetic field setpoint is 8000 gauss, and the two current setpoints are .00001 amp, and .0001 amp, it will run the meauserement twice for the 2 current setpoints for each magnetic field setpoint. What I am trying to do is that sometimes, I might have to edit the magnetic field setpoints while the program is running. I am having trouble with refreshing the magnetic field setpoints, which allows the user to input a new magnetic field setpoint while it is running.
-
How can I make a while loop wait 10 seconds before iterations​?
I am using labview to for an osmosis system that measures the amout of water lost from the reading on a scale.
I currently have the program displaying the data from 3 scales every second.
I also need to calculate the flux through the membrane over time.
I do this with a function that takes a change in the scale reading over time (with a shift register) followed by a series of mathematical conversions.
The readings from the scale display OK every second, but I need to have at least 10 seconds between flux calculations.
So my question is, how do I make a the shift register take one value from the scale, then wait 10 seconds before taking the second value? That way I have the mass of water lost over a 10 msecond period.
Below is my current while loop for Flux using shift registers from data from 3 scales.
Any helkp would be great!
Also, I'm new at LabVIEW...Bob_Schor wrote:
Do you understand how Dataflow (a key idea behind LabVIEW) works? If you put a Wait (ms) function (on the Timing Palette) with 10000 (10,000 milliseconds = 10 seconds) inside your While Loop, the principles of Data Flow will require all of the functions inside the While (specifically the Wait function) to finish their execution before the loop can run again. As everything else in the loop takes approximately 0 seconds, this will make your loop run once every 10 seconds.
Bob Schor
I do not think that is a good idea.
The inner loop should be in sync with the outer loop, not run independent on it's own timer.
If the inner loop is running independently you run the risk of using stale data.
Actually altenbach is right the inner loop does not need to be a for loop at all, but rather just a case like my suggestion (without the for loop) and the shift registers should be out on the main loop.
My suggestion was a quick solution going by what little bit of the block diagram I could see, but if the entire code was posted I am sure we would see where more improvements could be made and possibly even a better solution. -
Using a DAQ value in a location outside of the While Loop it is placed in
I am writing a program that records the speed of a car and then is supposed repeat the action through the use of an actuator. I was able to write the program to the point where I am saving the data into a .txt file and will be able to read it back out. My problem is that I need to use a dbl value that I am calculating from the output of a DAQ Assistant block that is contained inside a while loop in another part of the program to compare current speed vs. recorded speed then output an action. Everytime I try to draw a connection outside of the while loop, the actual value is not read outside of the loop. I cannot put the other part of the program into the while loop because the while loop only performs every .1 to 1 second and I need the output to the actuator to be a continous string delievered to the serial port. I also cannot create another DAQ Assistant block that reads the same port outside of the while loop. I have thought about using a jumper to another input on the input card, but I would prefer not to use the extra space.
So generally speaking, I'm wondering if there is a way to read a value obtained from a DAQ Assistant block outside of the while loop it is contained in.
Thanks to anyone that can help!!!
TravisCheers,
I am not 100% sure what your problem is but how about writing the red value into the local variable and reading it outside of the loop? Or enqueue the value into the queue and dequeue it in the other loop (Producer/Consumer Structure (Data))?
Br,
Jick -
Loop through result set and delete row
so here is what I need -
I have a query that pulls rows from the Database through a stored procedure.(these are properties in an area)
Before I start looping through the query, I need to check the distance between my current location and the property. If it less than 5 miles, only then should I display that property. The distance in miles will be chosen while submitting the search form.
So is there a way to delete rows from the result set based on the criteria? Or
Is there a better way to accomplish this? I am using the the google api to get the latitudes and longitudes. The other issue to keep in mind is the load time.
ThanksYou can do this the easy way or the hard way. Depends on whether your condition that needs to be checked can be expressed in the form of a SQL where clause. If it can, then do what BKBK suggested, and use a query of query to create a new resultset that only has the rows from the original resultset that don't meet your condition.
If the calculation of the condition is more complex, then do a CFLOOP over the query and examine each row to see if you want to keep it or toss it. if you want to toss it, the delete that row - there is a function in CFLIB.ORG called querydeleterow that should help you. Or, you could just clear out the row's contents and then do the query of query as described in BKBK's post to create a new resultset that doesn't include the blank rows. -
sir i have given lot of effort but i am not able to solve my problem either with notifiers or with occurence fn,probably i do not know how to use these synchronisation tools.
sir i am using datasocket read ,i am communicating with java but my problem is that bcz im using while loop to see if value has changed my labview consumes all the processors time ,sir i want a event like thing so that while loop is not in continuous loopHi Sam,
I want to pass along a couple of tips that will get you more and better response on this list.
1) There is an un-written rule that says more "stars" is better than just one star. Giving a one star rating will probably eliminate that responder from individuals that are willing to anser your question.
2) If someone gives you an answer that meets your needs, reply to that answer and say that it worked.
3) If someone suggests that you look at an example, DO IT! LV comes with a wonderful set of examples that demonstate almost all of the core functionality of LV. Familiarity with all of the LV examples will get you through about 80% of the Certified LabVIEW Developer exam.
4) If you have a question first search the examples for something tha
t may help you. If you can not find an example that is exactly what you want, find one that is close and post a question along the lines of "I want to do something similar to example X, how can I modify it to do Y".
5) Some of the greatest LabVIEW minds offer there services and advice for free on this exchange. If you treat them good, they can get you through almost every challenge that can be encountered in LV.
6) If English is not your native language, post your question in the language you favor. There is probably someone around that can help. "We're big, we're bad, we're international!"
Trying to help,
Welcome to the forum!
Ben
Ben Rayner
I am currently active on.. MainStream Preppers
Rayner's Ridge is under construction
Maybe you are looking for
-
CS3 will not open on my 64 bit Vista. Please Help
Hello I just picked up Phot Shop CS3 installed it on my Lap Top with Vista Ultimate 64 bit. It installed fine, but when I try and open it a windows error message comes up in encountered and error and closes the program. I have another laptop w
-
Ok long day short, bad bad day and this update will not finish. Like it gets all the way there and then stops and a message in the screen where the little bar thingy is and says please try installing again. Anyone know the deal?
-
Custom Report for Pricing Conditions Master
Hi Everyone, We know that Pricing Conditions Master Data is stored in KONH and KONP. If a condition is populated in a document then transactional data can be obtained from KONV with 'condition record number' as the foreign key. The requirement is to
-
I have currently had the droid x about a month now and I have been trying to protect it in every way including seen screen protectors and a case. I was deeply sadden to see my unlock button key with a gash on it. Has any one else notice this? Is ther
-
Why will the iOS 7 download but not install?
why will the iOS 7 download but not install?