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!
Jonathan
This might help http://labs.adobe.com/technologies/spry/samples/data_region/NestedXMLDataSample.html
Gramps
Similar Messages
-
Loop through nested elements and insert via PL/SQL
INSERT INTO Orders(id, OrderXML) VALUES
(S_Orders.Nextval,
'<?xml version="1.0" encoding="utf-8" ?>
<Order xmlns="urn:foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:foo foo-1.xsd">
<OrderRef>BBB</OrderRef>
<OrderDate>2005-03-29</OrderDate>
<CustomerID>1051</CustomerID>
<Items>
<Item>
<ProductID>7</ProductID>
<Price>45.6</Price>
<Quantity>2</Quantity>
</Item>
<Item>
<ProductID>19</ProductID>
<Price>73.5</Price>
<Quantity>10</Quantity>
</Item>
</Items>
</Order>'
I some questions regarding index search of nested elements like,Items in the above example.
I would like to know how I can LOOP through the Items like 1..2 LOOP
and insert those elements(item) into one table. Order information should go in to another table.
Can this be done with xpath and PL/SQL.
Regards
UlfHi Marco!
Here's some more information:
CREATE TABLE ITEM (ProductID NUMBER,
Price NUMBER(8,2)
Quantity 10 NUMBER);
CREATE TABLE ORDER (OrderRef VARCHAR2(10),
ORDER_DATE VARCHAR2(10),
CUSTOMERID NUMBER);
The main problem that I have is to create an solution that can be dynamic so that I can have for instance one order and four items in one XML.
The second XML can have one order and 10 items.
First I want to insert the order elements in the order table and then the items records in the item table.
To complicate things futher my real XML have namespaces in the XML, but this I think I can handle.
Summary: So for each order row(element) I want to traverse the Item elements and insert them to the Item table.
Regards
/Ulf -
Loop through elements within nested:iterate tag using javascript
Hello,
I would like to loop through the adjustedLineItems list and set the checkbox values to true on click of a select all button.
I am getting the error document.all['adjustedLineItems.selected'] is null or not an object
however it works if I manually substitute values for i within the function
document.all['adjustedLineItems[0].selected'].checked=true;
document.all['adjustedLineItems[1].selected'].checked=true;
document.all['adjustedLineItems[2].selected'].checked=true;
Could someone please help me do this via a for loop?
Thanks
<nested:iterate name="invoiceForm" property="adjustedLineItems" id="adjli" type="com.bt.lex.common.lineItem.beans.LineItemDetailBean" indexId="idxadjli">
<tr>
<td class="dataLeft"><nested:checkbox property="selected"/></td>
<td class="dataLeft"><nested:write property="liNumber"/></td>
</tr>
</nested:iterate>
<script type="text/javascript">
function onclick_all(ctl) {
var checkFlag = "false";
var count = document.all.numOfAdjustedLIs.value;
var i = 0;
//alert(count);
if(ctl.checked)
if(checkFlag=="false")
for (i = 0; i <count; i++)
document.all['adjustedLineItems[i].selected'].checked=true;
checkFlag = "true";
</script>Its got nothing to do with nested iterate tags :). However,
document.all['adjustedLineItems.selected'].checked=true;
The variable 'i' is not getting evaluated as is evident from the error message - document.all['adjustedLineItems.selected'].
The appearance of 'i' in the error message tells it all, right ? :)
So
document.all['adjustedLineItems[' + i + '].selected'].checked=true;should do the trick.
ram. -
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)?
ThanksIf 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 ==-- -
Nested Loops...looping through one month of data at a time year by year
Hi all,
I'm trying to create an insert statement that loops through a table that has 10 years of data (2001 to 2010) month by month to minimize impact on server and commits more frequently to avoid filling up the redo logs and rollback tablespaces. The table is large, has about 40 millions records per year. Lets say the structure of the table is the following:
Customer_ID number(9),
Order_Item_1 number(6),
Order_Item_2 number(6),
Order_Item_3 number(6),
Order_date date
The table is in flat format but I want to normalize it so that it looks like the following:
Customer_ID Order_Seq Order_Item Order_date
999999999 1 555555 01-jan-2001
999999999 2 666666 01-jan-2001
999999999 3 444444 01-jan-2001
888888888 1 555555 03-jan-2001
888888888 2 666666 03-jan-2001
But because I want to loop through month by month....I need to set it up so that it loops through month by month, year by year (Using the Order Date Field) and Order_item by Order_item. Something like:
so my insert statements would be something like if I hardcoded instead of put the insert statement into a loop:
insert into orders_normalized
(Customer_id,Order_seq,Order_item,Order_date) select customer_id,1,Order_item,Order_date where Order_item_1 is not null and to_char(order_date,'yyyy') = '2001' and to_char(order_date,'mm')='01';
insert into orders_normalized
(Customer_id,Order_seq,Order_item,Order_date) select customer_id,2,Order_item,Order_date where Order_item_2 is not null and to_char(order_date,'yyyy') = '2001' and to_char(order_date,'mm')='01';
insert into orders_normalized
(Customer_id,Order_seq,Order_item,Order_date) select customer_id,3,Order_item,Order_date where Order_item_3 is not null and to_char(order_date,'yyyy') = '2001' and to_char(order_date,'mm')='01';
insert into orders_normalized
(Customer_id,Order_seq,Order_item,Order_date) select customer_id,1,Order_item,Order_date where Order_item_1 is not null and to_char(order_date,'yyyy') = '2001' and to_char(order_date,'mm')='02';
insert into orders_normalized
(Customer_id,Order_seq,Order_item,Order_date) select customer_id,2,Order_item,Order_date where Order_item_2 is not null and to_char(order_date,'yyyy') = '2001' and to_char(order_date,'mm')='02';
insert into orders_normalized
(Customer_id,Order_seq,Order_item,Order_date) select customer_id,3,Order_item,Order_date where Order_item_3 is not null and to_char(order_date,'yyyy') = '2001' and to_char(order_date,'mm')='03';
Hope this makes sense.
ThanksDoes the sequence of items in an order really matter? In other words, do we really need to preserve that an item was in position 2 versus position 1? I bet that the sequence or position of each item in an order is not meaningful. They were probably numbered 1, 2, and 3 just to make them uniquely named columns so there would be three slots to hold up to 3 items in the denormalized table.
You only have about 400 million rows to insert, so it could feasibly be done in a single transaction (depending on your database environment).
You can always do a create table as select (CTAS) to help with undo / redo issues and get better performance. You could run it in parallel, and spit it out to a new table partitioned by month. Single DDL statement running in parallel making your new table--sounds good to me.
How about something like this:
CREATE TABLE ORDERS_NORMALIZED
(CUSTOMER_ID, ORDER_ITEM, ORDER_DATE)
PARTITION BY RANGE(ORDER_DATE)
PARTITION p200901 VALUES LESS THAN (TO_DATE('200902','YYYYMM')),
PARTITION p200902 VALUES LESS THAN (TO_DATE('200903','YYYYMM')),
PARTITION p201012 VALUES LESS THAN (TO_DATE('201101','YYYYMM'))
as SELECT CUSTOMER_ID, ORDER_ITEM_1, ORDER_DATE
FROM OTHER_TABLE
WHERE ORDER_ITEM_1 IS NOT NULL
UNION ALL
SELECT CUSTOMER_ID, ORDER_ITEM_2, ORDER_DATE
FROM OTHER_TABLE
WHERE ORDER_ITEM_2 IS NOT NULL
UNION ALL
SELECT CUSTOMER_ID, ORDER_ITEM_3, ORDER_DATE
FROM OTHER_TABLE
WHERE ORDER_ITEM_3 IS NOT NULL.....................
Out of curiosity, why not normalize it further? You could have used two tables instead of one.
One (ORDER) with:
ORDER_ID
CUSTOMER_ID
DATE
Order_id would be a new surrogate key / primary key.
Another table (ORDER_ITEM) with:
ORDER_ID
ORDER_ITEM
It would be a table that links ORDERS to ITEMS. You get the idea. -
Hi everyone
I am new in crystal reporting and using Crystal Reports XI release 2. Firstly I should explain what I need to have. In my database I have got a parent table called Initiatives and a child table called benefits. One initiative has got many benefits associated with it and benefits are updated regularly by the users. Now my manager wants me to create an Initiative reports in such a way that all the initiatives are displayed and against each initiative there should be a box filled with either of these colour (red, yellow, green).
Let's say if Initiative "X" has got 10 benefits and if one or more benefits are outstanding by more than 2% then the colour of the box should be red. And if no benefit is outstanding by more than 2% and one or more benefits are outstanding more then 1% and less then 2% then colour of box should be yellow. And if no benefit is outstanding more than 1% then colour of box should be green.
Now for this I have created a report displaying all initiatives and a sub report with a SQL command containing the data from the benefits table. I have also included a database field which I would use as a box.
Now I want to loop through each record of the crystal report till the last record and format the field as per condition. I would probably use nested loop to look for the status of the benefits but I don't know how to do this in CR. In short I am looking to do this thing in CR
While Recordset.EOF
Do
But I can't find a key word for EOF or count-1 or some thing like that.
Seeking the help of you guys.
Regards,It would be much easier to simply let Crystal's conditional formatting do this for you.
Almost every formatting aspect of each object in Crystal can be controlled via expressions. Just click on the expression button to the right of the property...
ido -
Loop through tables based on data dict values
Hi,
I working on an old v7.3.4 database that I'm not familiar with and I want to loop through the tables and count the occurrence of a field value based on table names i've retrieved from the data dictionary. None of the tables have relational keys defined.
In a cursor I can loop thru all_tab_columns and load variables with the table, column names, and the datatype, but then I want to use these values in a second nested cursor to loop through each table found by the first cursor.
When I do :
Select var_colname from var_tabname
i get
The following error has occurred:
ORA-06550: line 23, column 10:
PLS-00356: 'V_TABNAME' must name a table to which the user has access
ORA-06550: line 22, column 5:
PL/SQL: SQL Statement ignored
ORA-06550: line 22, column 12:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 27, column 7:
PL/SQL: SQL Statement ignored
so it would seem I can't use a variable to substitute the table name in the 'from' clause. Does anyone know of a way round this ?
Thanks in advanceHi,
You will have to use dynamic sql to create your second cursor.
DECLARE
v_sql_query VARCHAR2(400);
TYPE cur_typ IS REF CURSOR;
c1 cur_typ;
mYRec MyTable%rowtype;
BEGIN
v_sql_query := 'select * from MyTable';
OPEN c1 FOR v_sql_query;
LOOP
FETCH c1 INTO mYRec;
EXIT WHEN c1%NOTFOUND;
EXIT WHEN c1%NOTFOUND IS NULL;
/*processing here*/
END LOOP;
CLOSE c1;
END;
Regards -
Nesting datasets from same xml?
I have an xml file that has multiple nodes (this is an
example of the repeating node, the location attribute will repeat
and has multiple values Antiqua, Aruba, etc. - I need to loop
through locations then show list of names within that):
<row region="Caribbean" location="Antigua">
<name>Hotel 1000</name>
<location>Antigua - St. John's</location>
<description>Blah blah blah...</description>
<image>image.jpg</image>
</row>
So result would be:
Antiqua
---Hotel 1000
---Hotel 1001
---Hotel 1002
Aruba
---Hotel 2000
---Hotel 2001
I thought the nestedXMLDataSet would work, but the nodes are
nested. Any help would be appreciated.
Thanks,
VictorHi Victor,
Take a look at the source for the RSS Reader Demo:
http://labs.adobe.com/technologies/spry/demos/rssreader/index.html
The left column is an example of what you are trying to do.
Basically what we did was we created a data set that had unique
category names. In your case that would be unique @location values.
The 2nd data set had all of the feed information, which in your
case would be a row. We then used 2 nested loops, the outer to
write out each category, and the inner wone to write out all feeds
that matched the current category.
We have an enhancement request open internally to make
"grouping" easier.
--== Kin ==-- -
Looping through to the last child in the ADG groupedColumn
I have a ADG with groupedColumns with varying depth(Some AdvancedDataGridColumnGroup having more nested groupings inside while others may or may not have nested groupings).My requirement is that i need to loop through to the last elements (AdvancedDataGridColumn) for each Top level AdvancedDataGridColumnGroups.How do i loop through the groupings to reach the last child.
Regards
Sidd...I knew it wasn't that hard!
Thanks! -
How do I loop through AFrames?
I feel dumb asking this but I really think the code I have should work. All I want to do is loop through all the aframes in a document. To do this, I assign the first Aframe to a variabe named vAFrame. Then, I created a while loop where the test is vAFrame.ObjectValid(). however, the while loop never tests to true even though the data browsers shows that the vAFrame variable contains a valid object AND it supports the ObjectValid() method AND the valid object is an AFrame. I must be missing something really obvious here. Any ideas?
main ()
function main()
var vDoc=app.ActiveDoc;
var vFlow=vDoc.MainFlowInDoc;
var vTextFrame=vFlow.FirstTextFrameInFlow;
var vAFrame=vTextFrame.FirstAFrame;
while (vAFrame.ObjectValid())
vAFrame=vAFrame.NextAFrame;I am heads down on a project so I can't give you much code right now, but I can point you in the right direction. The method you are using only works for a single text frame, so you would also have to include a loop for all of the text frames in the flow. A better approach is to get a list of FrameAnchor items from the main flow of the document. Then you can loop through the text items to process each anchored frame.
// Set a variable for the main flow in the document.
var flow = doc.MainFlowInDoc;
// Get a list of the anchored frames in the flow.
var textItems = flow.GetText(Constants.FTI_FrameAnchor);
// Loop through the anchored frames.
for (var i = 0; i < textItems.len; i += 1) {
var aFrame = textItems[i].obj;
// Do something with the anchored frame here.
Note that this will only get anchored frames in the main flow itself; it will skip anchored frames that are inside table cells or nested in other anchored frames. Please let me know if you have any questions or comments.
Rick Quatro -
Looping through an array, i dont want duplicates
hello,
I am wondering if anyone can help me please, I have an array
containing numbers, these numbers are attached to movie clips to
determine where they are on the stage, and they are generated
randomly, so the movie clips are always in a new place when a
certain button is pressed.
My problem is that I dont know how to avoid duplicates. The
way I have done it is I have put the values in an array, and I loop
through this with a for loop, from here I take the values and link
them to another array that contains the movie clips, this all works
well but some of the movie clips are stacked on top of one another
because the same array values are coming up :S I have attached the
code, so any suggestions would be gratefully recieved, I just
havent a clue on this one :S
Many thanks any help is gratefully recieved :DHi. You were wise to trace the value of n. Your problem seems
to be that the tests succeed (almost always) in the very first
iteration because they truly don't match (where n = 0) and
execution breaks out. You need to adjust the logic. As one
approach, while sticking with your code and not changing it too
much (such as using more efficient int vs Number):
at the very top, define a counter var ct:int = 0;
before the testing loop, define a flag, such as var
flag:boolean = false;
you could then invert the logic in the loop and test for ==
rather than for !=
if you find a match, do--> flag = true;
and break
at the end of testing, use the flag to decide whether to
store the new value
if (!flag) {
// add to array
ct++;
also, use a while loop for controlling the whole thing-->
while(ct < max) { }
to know when you're done
You can also check out the Array functions indexOf() and
some(), to make things more efficient and faster/easier
when you're all done, you can also look into using if (a != b
&& c != d)
for efficiency, instead of nesting them separately
good luck :) -
Script code sample for looping through the records from xml data file in formCalc script
Hi
I have a xml data file which contains a sequence of repeating applicant data like given below
US
II
CEO
Mr
111111111
0000000111
GuarantorA
111
IN
11111
WILLIAMS1
R3
KENNETH1
City1GU
PA
1934-03-14
[email protected]
GU
R
113 Lazlo LaneCA
Suite 3500CA
OaklandCA
TX
11345
AL
I want to assign a textfield with a value based on the value of coap_flag.
So i need to loop through all the record and check the value of coap_flag and then assign the textfield a value based on that.
I am new to Adobe livecycle...Please help me how it can be done.
I have developed something like this
foreach Item in ($record.applicant[*].coap_flag) do
test.value=Item
if(test.value=="MA")then
concat($record.applicant.first_name,$record.applicant.middle_name)endif
endforUsing the data you posted in the forum, I copied it a couple of times to give multiple records and used this code to extract the different values that you wanted. I had to wrap it in a <root> node that I called root (to make it valid XML). In my case I wrote the extracted values to a field, but in your case you can do whatever you want with them. Note that this was done in javascript:<br /><br />var currentElement;<br />var obj;<br /><br />//Get the nodes below the root node in the dataDom<br />obj = xfa.datasets.data.root.nodes;<br /><br />//Set an initial value for the textField<br />TextField1.rawValue = "The values of the coap_flag are: ";<br /><br />//Loop through the nodes in the obj set <br />for (i=0; i< obj.length ; i++){<br /> //set the currentElement to the 1st child node<br /> currentElement = obj.item(i);<br /> //Check to see if it is an applicant node<br /> if (currentElement.name == "applicant"){<br /> //It is an applican, now find the coap_flag node value and write it to the text field<br /> TextField1.rawValue += "\n" + xfa.resolveNode("xfa.datasets.data.root.applicant[" + i + "]").coap_flag.value;<br /> }<br />}
-
Loop through the records from xml data file in formCalc script
Hi
I have a xml data file which contains a sequence of repeating applicant data like given below
US
II
CEO
Mr
111111111
0000000111
GuarantorA
111
IN
11111
WILLIAMS1
R3
KENNETH1
City1GU
PA
1934-03-14
[email protected]
GU
R
113 Lazlo LaneCA
Suite 3500CA
OaklandCA
TX
11345
AL
I want to assign a textfield with a value based on the value of coap_flag.
So i need to loop through all the record and check the value of coap_flag and then assign the textfield a value based on that.
I am new to Adobe livecycle...Please help me how it can be done.
I have developed something like this
foreach Item in ($record.applicant[*].coap_flag) do
test.value=Item
if(test.value=="MA")then
concat($record.applicant.first_name,$record.applicant.middle_name)endif
endforUsing the data you posted in the forum, I copied it a couple of times to give multiple records and used this code to extract the different values that you wanted. I had to wrap it in a <root> node that I called root (to make it valid XML). In my case I wrote the extracted values to a field, but in your case you can do whatever you want with them. Note that this was done in javascript:<br /><br />var currentElement;<br />var obj;<br /><br />//Get the nodes below the root node in the dataDom<br />obj = xfa.datasets.data.root.nodes;<br /><br />//Set an initial value for the textField<br />TextField1.rawValue = "The values of the coap_flag are: ";<br /><br />//Loop through the nodes in the obj set <br />for (i=0; i< obj.length ; i++){<br /> //set the currentElement to the 1st child node<br /> currentElement = obj.item(i);<br /> //Check to see if it is an applicant node<br /> if (currentElement.name == "applicant"){<br /> //It is an applican, now find the coap_flag node value and write it to the text field<br /> TextField1.rawValue += "\n" + xfa.resolveNode("xfa.datasets.data.root.applicant[" + i + "]").coap_flag.value;<br /> }<br />}
-
How to loop through xmldom.getNextSibling?
Hello,
I have been working with an example that Steve provided me with that uses xpath to pull the value of a specific node from an xml doc. This works fine as long as there is only one node, I would like to use getNextSibling to loop through all the values that exist for that node in the document. I am pasting in the code I am working with. I know I need to use the getNextSibling but am unsure of where I should loop. I left some commented stuff in there to illustrate some of the directions that I wanted to go, I will be writing the results to a nested table. Any assistance greatly appreciated.
Thanks,
Travis
PROCEDURE testit (dummy in varchar2 default null) IS
-- dummy will be xml doc passed in when this goes live
xml varchar2(32000) := '<?xml version="1.0"?>
<Pip3A2PriceAndAvailabilityQuery>
<ProductPriceAndAvailabilityQuery>
<ProductPriceAndAvailability>
<ProductLineItem>
<ProductQuantity>0</ProductQuantity>
<productUnit>
<ProductPackageDescription>
<ProductDescription>
<GlobalProductIdentifier>A00012</GlobalProductIdentifier>
</ProductDescription>
</ProductPackageDescription>
</productUnit>
<requestedPrice>
<FinancialAmount>
<GlobalCurrencyCode>USD</GlobalCurrencyCode>
</FinancialAmount>
</requestedPrice>
</ProductLineItem>
<ProductLineItem>
<ProductQuantity>0</ProductQuantity>
<productUnit>
<ProductPackageDescription>
<ProductDescription>
<GlobalProductIdentifier>A00018</GlobalProductIdentifier>
</ProductDescription>
</ProductPackageDescription>
</productUnit>
<requestedPrice>
<FinancialAmount>
<GlobalCurrencyCode>USD</GlobalCurrencyCode>
</FinancialAmount>
</requestedPrice>
</ProductLineItem>
</ProductPriceAndAvailability>
</ProductPriceAndAvailabilityQuery>
<fromRole>
<PartnerRoleDescription>
<GlobalPartnerRoleClassificationCode>Customer</GlobalPartnerRoleClassificationCode>
<PartnerDescription>
<GlobalPartnerClassificationCode>End User</GlobalPartnerClassificationCode>
<BusinessDescription>
<GlobalBusinessIdentifier>00031583</GlobalBusinessIdentifier>
<GlobalSupplyChainCode>Information Technology</GlobalSupplyChainCode>
</BusinessDescription>
</PartnerDescription>
</PartnerRoleDescription>
</fromRole>
<toRole>
<PartnerRoleDescription>
<GlobalPartnerRoleClassificationCode>Customer</GlobalPartnerRoleClassificationCode>
<PartnerDescription>
<GlobalPartnerClassificationCode>End User</GlobalPartnerClassificationCode>
<BusinessDescription>
<GlobalBusinessIdentifier/>
<GlobalSupplyChainCode>Information Technology</GlobalSupplyChainCode>
</BusinessDescription>
</PartnerDescription>
</PartnerRoleDescription>
</toRole>
<thisDocumentGenerationDateTime>
<DateTimeStamp>20000229T140102.333Z</DateTimeStamp>
</thisDocumentGenerationDateTime>
<thisDocumentIdentifier>
<ProprietaryDocumentIdentifier>Panda20000229T140102.333Z</ProprietaryDocumentIdentifier>
</thisDocumentIdentifier>
<GlobalDocumentFunctionCode>request</GlobalDocumentFunctionCode>
</Pip3A2PriceAndAvailabilityQuery>
v_counter number := 1;
partno varchar2(25) := 'IM NOT NULL';
quantity varchar2(10);
custid varchar2(25);
conpart varchar2(50);
p xmlparser.parser;
xd xmldom.DOMDocument;
-- Variables for the pricing call
in_caller_name varchar2(50) := 'xsourcer';
in_commit_allow_flag varchar2(50) := NULL;
in_customer_no number;
in_part_no_arg varchar2(50);
in_mfg_arg varchar2(50) := NULL;
in_cat_arg varchar2(50) := NULL;
in_sub_arg varchar2(50) := NULL;
in_opt_arg varchar2(50) := NULL;
out_price n umber;
out_prior_var number;
out_ret_val varchar2(50);
out_success_code number;
out_error_code number;
out_error_message varchar2(500);
v_partlist partlist;
-- This function converts the GlobalProductIdentifier (Manufacturer Part Number)
-- to an elcom part number by performing a query against the dfp_parts table
-- I created a local table with a few manufacturer part no's and elcom part no's
function valueOf(xd xmldom.DOMDocument, xpath VARCHAR2) return varchar2 is
n xmldom.DOMNode;
nl xmldom.DOMNodeList;
e xmldom.DOMElement;
begin
-- Cast the document to a node
n := xmldom.makenode(xd);
-- Select Nodes Matching XPath Pattern
nl := xslprocessor.selectNodes(n,xpath);
IF xmldom.getLength(nl) > 0
THEN
e := xmldom.makeElement(xmldom.item(nl,0));
xmldom.normalize(e);
RETURN ltrim(rtrim(xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(nl,1)))));
END IF;
end;
begin
-- New Parser
p := xmlparser.newparser;
-- Parse the XML document
xmlparser.parseBuffer(p,xml);
-- Get the XML document that's been parsed
xd := xmlparser.getdocument(p);
custid := valueof(xd,'//GlobalBusinessIdentifier');
insert into xrequest values (44, custid,null,sysdate);
in_customer_no := to_number(custid);
-- Calls to the xpath function to get the tags we want the value of
/* FOR v_count IN 1..
xd.length LOOP
getNextSibling() RETURN DOMNode;
WHILE (PARTNO IS NOT NULL) LOOP
partno := valueof(xd,'//GlobalProductIdentifier');
in_part_no_arg := partno;
v_counter := v_counter + 1;
-- call pricing here pass in custid, partno
-- assign outprice_var to price of nested table
corp_get_price_sp(in_caller_name, in_commit_allow_flag, in_customer_no,
in_part_no_arg, in_mfg_arg, in_cat_arg, in_sub_arg,
in_opt_arg, out_price, out_prior_var, out_ret_val,
out_success_code, out_error_code, out_error_message);
IF V_COUNTER = 100 THEN
HTP.P('EXIT OUT');
EXIT;
END IF;
--XREQUEST.PART_NO := PARTNO;
--XREQUEST.PRICE := OUT_PRICE_VAR;
htp.p(out_price);
htp.br;
-- insert into xrequest values (44, custid,(Partlist(PartObj(partno, out_price, null, null, null, null)))sysdate);
END LOOP;
quantity := valueof(xd,'//ProductQuantity');
end;
nullYou can first create a databank with the Input values and associated navigation. For eg. Navigation,csv will have
Input, Navigation
Hardware, window(index=0).link(text="Hardware" | href="http://..." | index=28)
Monitors,
Record the script by selecting from the dropdown box and then going to the resulting page. Attach the databank to the script and use the databank to select the Input value for the dropdown on the page. On the Resulting Page add code to the PageBeforePlay method -
dim strNav as string
'get the navigation value from the databank
RSWApp.GetDataBankValue "Navigation", strNav
rswapp.ChangeNavigation "", strNav, , , False
The resulting page will then be the page that the navigation is changed to.
You can loop through all the records in the databank to check the navigation for all of them.
You will also have to look at how the value is set in the dropdown, as an Index or the actual value. If it is by Index, then in the databank file, change the Input to be the number of the selection like 1 or 2.
Hope the above is what you are looking for.
Question - The resulting page for each navigation will be different. How are you going to verfiy the different pages or continue on in the script?
Message was edited by: mpalivela -
Loop through select and create cursor
Is it possible to create a cursor after looping through a select?
FOR TEST IN
SELECT *
FROM SOMETABLE
WHERE SOMEID > 100
) LOOP
IF TEST.NAME = 'AB' THEN
--CREATE CURSOR AND LOAD DATA
--LOAD TEST.ID, TEST.NAME, TEST.ADATE INTO NEW CURSOR
END IF;
END LOOP; This is just a sample not the actual scenario.SeshuGiri wrote:
Is it possible to create a cursor after looping through a select?Yes. But is also usually the wrong thing to do.
A cursor loop within another cursor loop is known as a nested loop join in SQL. The SQL language is perfectly able to do joins like that. And far better and faster. It has a very clever optimiser and has more sophisticated algorithms than just a nested loop, for joining data sets.
The sample code you've posted shows a very old 80's style Cobol approach to processing ISAM files or magnetic tape. In a row-by-row fashion.
This approach does not scale in the modern database, where the SQL language is a data set processing language - and not an I/O interface for merely reading a record/row and writing a record/row as we did in the 80's with file-based data records.
The basic approach to Oracle is: Maximise SQL. Minimise PL/SQL (Java/etc).
This means using the very flexible, incredibly powerful, SQL language first and foremost to crunch database data. And only when the processing is beyond the capability of the SQL language alone, employ PL/SQL. Else restrict PL/SQL to managing only the process flow and error handling of SQL language statements.
Maybe you are looking for
-
MR11 : error CKMLGRIR013 for a po of a material UNBW
Dear. I try to run MR11 for a purchase order with goods receipt of a material UNBW. The system send this error message when I try to post clearing. Error during reading of material ... or material locked Message no. CKMLGRIR013 Can you help me ?
-
Rotate movie 90 degrees in Adobe Photoshop Album Starter 3.0
I took a movie on my camera with the camera rotated 90 degrees, but when I uploaded the movie to the album starter it is sideways and can't be rotated. Any tricks to doing this?
-
Decreasing battery lufe after upgrading to kraft a6000 s033 150402
Hi, I have an A6000 that I'm using since around two weeks now. Very recently I received an update which update the version of "Vibe UI" to A6000_S033 But soon after the update battery performance start decreasing now there is 1% drop after every 8-9
-
alright maybe i'm missing something but i can't import cds because it says my music folder doesn't have the permission. it then tells me to check and for the life of me i can't find any setting with access rights. i could use some help.
-
UPK: Can it create a .swf file for embedding into Articulate?
We are combining a policy and systems training course. The policy part of the course is built in Captivate and the Systems part of the course is built in UPK. I am able to easily embed the Captivate Policy section into Articulate, but am struggling w