IBM webMethods Hybrid Integration

IBM webMethods Hybrid Integration

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
Expand all | Collapse all

QueryResult.getNext() method of TaminoResult question

  • 1.  QueryResult.getNext() method of TaminoResult question

    Posted Sun May 11, 2003 05:42 AM

    Hi every ,
    In order to improve my program efficiency,I should clear this question :
    If i set the pagesize , It returns one pagesize of result to client,
    when it executes QueryResult.getNext().getResult(),it will returns the next pagesize, that is it returns one pagesize at a time?
    Thanks,
    lisa


    #API-Management
    #webMethods
    #webMethods-Tamino-XML-Server-APIs


  • 2.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Mon May 12, 2003 10:15 AM

    getNext/getPrev are designed to allow you to page through a number of results satisfying a particular query. For example instead of dealing with a 1000 large result nodes all at once you may deal with them 10 at a time. It is similar in principle to Next/Previous on browsers.


    #API-Management
    #webMethods-Tamino-XML-Server-APIs
    #webMethods


  • 3.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Mon May 12, 2003 08:27 PM

    Hi markk,
    you means that at a time, a pagesize result will be sent to client from the tamino server??

    And I will ask if the QueryResult.getNext() will work together with getResult(), that is to say after execute the QueryResult.getNext(), then we should execute QueryResult.getResult()?

    But to my surprise , not all the Tamino result project will support the getResult() method.
    Such as I can use
    tamResult = tamClient.query(“…”);
    tamResult.DOM.documentElement.xml"
    but I can’t use tamResult.getresult();
    Why???

    And when I set the pageSize , how can i deal with many result at several times based that I can only use the tamResult.Dom and other DOM method.

    BTW: i have read all the document of jsaip,and try a few method to do it ,but failed, can you help me??

    thanks,
    lisa


    #webMethods
    #API-Management
    #webMethods-Tamino-XML-Server-APIs


  • 4.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Tue May 13, 2003 09:59 AM

    getNext/getPrev return NEW TaminoResult objects that you may then use.

    The more efficient way of using getNext/getPrev is from within a transactional session. To do this you need to set the global TaminoLib vars:

    inoRealCursoring=true;
    inoCursorScrollableOn=“yes”;

    This will work with Tamino 3 and above.

    It is possible that getResult will NOT work if you are using MSXML4 rather than MSXML3. The reason is that MSXML4 is more exacting about using namespaces in XPath lookups - this was a problem in earlier TaminoLib.js implementations - it is now fixed. getResult is checking for an xql:result element in the response document.

    The fix applied to later TaminoLib.js is in the TaminoResult constructor. After checking for errors the SelectionNamespaces property is set:

    var p = this.DOM.parseError;

    if (p.errorCode != “0”)
    {
    this.errorNo=inoParserErrorNo;
    this.errorText =
    TaminoClientErrorText(inoParserErrorNo, p.errorCode,p.reason);
    return;
    }

    // needed for MSXML4 and above for namespace XPath searches
    this.DOM.setProperty(“SelectionNamespaces”,
    “xmlns:ino=‘http://namespaces.softwareag.com/tamino/response2’ xmlns:xql=‘XQL FAQ (XML Query Language - Frequently Asked Questions)’ xmlns:xq=‘http://namespaces.softwareag.com/tamino/XQuery/result’”);


    #webMethods-Tamino-XML-Server-APIs
    #API-Management
    #webMethods


  • 5.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Tue May 13, 2003 10:39 AM

    Hi markk,

    Thanks for your explanation.
    And also I solved my question last night.

    Best Regards,
    lisa


    #webMethods
    #API-Management
    #webMethods-Tamino-XML-Server-APIs


  • 6.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Tue May 13, 2003 01:04 PM

    Hi markk,
    my former method to achieve the next/prev page function is not very efficient,So i use method which you give me,However I find that not only getResult() not can be used in my pc,but also getPrev(). (In my former method, i use the getnext() to chieve previous page function) And why??the cause is the same as the getResult()??



    I find the code in function TaminoResult(queryo,req,noBody) of TaminoLib.js : var p = this.DOM.parseError;

    if (p.errorCode != “0”)
    {
    this.errorNo=inoParserErrorNo;
    this.errorText =
    TaminoClientErrorText(inoParserErrorNo, p.errorCode,p.reason);
    return;
    }


    and also add the code to function TaminoResult(queryo,req,noBody),but getResult(), and getPrev can’t work either.

    why??and how can i to do???

    thanks
    lisa


    #webMethods
    #webMethods-Tamino-XML-Server-APIs
    #API-Management


  • 7.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Tue May 13, 2003 01:38 PM

    It is not very easy to answer “why” if one can’t see the code or data.

    What code are you using to do next/previous - just try to provide the minimum possible. Also what does the first response document look like? I.e. the first tamResult.DOM.documentElement.xml?


    #API-Management
    #webMethods-Tamino-XML-Server-APIs
    #webMethods


  • 8.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Tue May 13, 2003 03:52 PM

    var dbname = “http://localhost/tamino/library/book_BasicInf”;
    var inoRealCursoring=true;
    var inoCursorScrollableOn=“yes”;
    var QueryObj = new TaminoClient(dbname, pageSize);
    var QueryVal = ‘/?’;
    var QueryBak = QueryObj.query(QueryVal);
    //all those are global var,

    code as follow:

     if(WhichPage == "next" && QueryBak.getNext())
    {
    QueryResult = QueryBak.getNext();  
    }
    else if( WhichPage == "Prev" &&QueryBak.getPrev())
    {
    QueryResult = QueryBak.getPrev(); 
    }
    ......// the code of displaying the data of result has been omitted.
    
    QueryBak = QueryResult;//save the queryResult.



    the program doesn’t execute the code of “else if( WhichPage == “Prev” &&QueryBak.getPrev())
    {
    QueryResult = QueryBak.getPrev();
    }” although the result has been execute 10 times QueryBak.getNext();


    #API-Management
    #webMethods
    #webMethods-Tamino-XML-Server-APIs


  • 9.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Tue May 13, 2003 04:21 PM

    MY test code is that this:

     
    if(WhichPage == "next" || WhichPage == "Prev")
    {
    alert(QueryBak );
    if( QueryBak.getNext())
    alert(QueryBak.getNext() + "next is :" + QueryBak.getNext().DOM.documentElement.xml);
    if( QueryBak.getPrev()) 
    alert(QueryBak.getPrev() + "prev is :" + QueryBak.getPrev().DOM.documentElement.xml);
    
    ...
    QueryBak = QueryResult;
    
    </pre><BR><BR>when I test, I just to see "[object object] next is:..." ,not to see ""[object object] prev is:..."<BR><BR>then I modify the code like this:<BR><pre class="ip-ubbcode-code-pre">  
    
    if(WhichPage == "next" || WhichPage == "Prev")
    {
    alert(QueryBak );
    if( QueryBak.getNext())
    {
    alert(QueryBak.getNext() + "next is :" + QueryBak.getNext().DOM.documentElement.xml);
    document.all("currentCount").value = parseInt(document.all("currentCount").value)+1;}
    alert("i=" + document.all("currentCount").value);
    if( QueryBak.getPrev())
    alert(QueryBak.getPrev() + "prev is :" + QueryBak.getPrev().DOM.documentElement.xml);
    if(document.all("currentCount").value==3)
    {
    alert(document.all("currentCount").value);   
    alert("prev is :" + QueryBak.getPrev().DOM.documentElement.xml)
    }
    }           
    
    



    After server times to execute this function ,then after displaying i=3, it displays “QueryBak.getPrev().DOM” is null or not a subject .

    modify “alert(“prev is :” + QueryBak.getPrev().DOM.documentElement.xml)
    ” to “alert(“prev is :” + QueryBak.getPrev().)

    after displaying “i=3”, it displays “prev is null”,
    //this means it supports the getPrev() method???
    but why not hava some data rusult??
    modify “alert(“prev is :” + QueryBak.getPrev().DOM.documentElement.xml)
    ” to “alert(“prev is :” + QueryBak.getResult().)

    after displaying “i=3”, it displays "prev is ",

    // and this means what?support it or not??

    [This message was edited by lisa on 13 May 2003 at 15:01.]


    #webMethods-Tamino-XML-Server-APIs
    #webMethods
    #API-Management


  • 10.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Tue May 13, 2003 04:24 PM

    getNext/getPrev actually move a page and return the result. Your code looks like it attempts to move forwards/backwards 2 times each page movement. getPrev can ONLY be called after at least 1 successful getNext.

    // turn on real cursoring - no vars!
    inoRealCursoring=true;
    inoCursorScrollableOn="yes";
    
    var QueryObj = new TaminoClient(dbname, pageSize);
    var QueryBak = QueryObj.query('/?');
    var QueryResult;
    
    if (WhichPage == "Next")
    {
    QueryResult = QueryBak.getNext();  
    }
    else if (WhichPage == "Prev")
    {
    QueryResult = QueryBak.getPrev(); 
    }
    
    // display result
    
    QueryBak = QueryResult;   //save the query result

    #webMethods
    #API-Management
    #webMethods-Tamino-XML-Server-APIs


  • 11.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Tue May 13, 2003 04:50 PM

    You MUST only call getNext/getPrev ONCE per page movement required.

    if (useNext)
    {
    result = result.getNext();
    
    if (result)
    {
    // have a next page use it
    }
    }
    else
    {
    result = result.getPrev();
    
    if (result)
    {
    // have a previous page use it
    }
    }

    #API-Management
    #webMethods
    #webMethods-Tamino-XML-Server-APIs


  • 12.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Tue May 13, 2003 05:00 PM

    inoRealCursoring=true;
    inoCursorScrollableOn=“yes”;

    var QueryObj = new TaminoClient(dbname, pageSize);
    var QueryBak = QueryObj.query(‘/?’);
    var QueryResult;

    if (WhichPage == “Next”)
    {
    QueryResult = QueryBak.getNext();
    alert(“next” +QueryResult.DOM.documentElement.xml);
    }
    else if (WhichPage == “Prev”)
    {
    QueryResult = QueryBak.getPrev();
    alert(“Prev here” + QueryBak.getPrev());
    }

    // display result

    QueryBak = QueryResult; //save the query result


    After three times forwards ,then one time backwards,
    it displays :“prev here null”


    #webMethods-Tamino-XML-Server-APIs
    #webMethods
    #API-Management


  • 13.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Tue May 13, 2003 08:36 PM

    code as follow ,have the same result:
    After three times forwards ,then one time backwards,
    it displays :“prev here null”

    so,i don’t think it is only calling getNext/getPrev ONCE per page movement required question,
    I used many times of queryresult.getnext at one page ,it have no error happened…

    if (WhichPage == “Next”)
    {
    QueryResult = QueryBak.getNext();
    alert(“next” +QueryResult.DOM.documentElement.xml);
    }
    else if (WhichPage == “Prev”)
    {
    QueryResult = QueryBak.getPrev();
    alert(“Prev here” + QueryResult);
    }

    // display result

    QueryBak = QueryResult; //save the query result


    #webMethods
    #webMethods-Tamino-XML-Server-APIs
    #API-Management


  • 14.  RE: QueryResult.getNext() method of TaminoResult question

    Posted Wed May 14, 2003 10:11 AM

    I suspect that the previous page may be “bigger” tha the next page. I think there may have been a fault in earlier versions whereby the requested page size returned to the default for previous requests and was not the pagesize as specified by the constructor.

    How many next/previous can you do if you specify a pagesize of 1?


    #API-Management
    #webMethods-Tamino-XML-Server-APIs
    #webMethods