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
    Ulf

    Hi 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)?
    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 ==--

  • 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.
    Thanks

    Does 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.

  • Looping through each record

    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 advance

    Hi,
    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,
    Victor

    Hi 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 :D

    Hi. 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
    endfor

    Using 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
    endfor

    Using 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;
    null

    You 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

  • Access privileges denied

    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