logo

New Response

« Return to the blog entry

You are replying to:

  1. This prototype only works for IE (at least for now).

    Using the view argument “readviewentries”, JavaScript and XPath on the client side this function returns an array of values.

    function dbLookup(dblDatabase,dblView,dblKey,dblColumn,dblLimit){

    //David Schmidt, 2005-10-12

    try{

    dblColumn=dblColumn-1;

    var xmldoc=new ActiveXObject("MSXML2.DOMDocument");

    xmldoc.async=false;

    docLimit=(dblLimit!="")?dblLimit:"-1";

    xmldoc.load("/"+dblDatabase+"/"+dblView+"?readviewentries&expandview&count="+docLimit);

    if(xmldoc.parseError.errorCode!=0){

    var xmlerror=xmldoc.parseError;

    errorstr="XSL error\n\nError code: "+xmlerror.errorCode+"\nReason: "+xmlerror.reason+"\nLine: "+xmlerror.line+"\nLine position: "+xmlerror.linepos+"\nsrcText: "+xmlerror.srcText+"\nUrl:"+xmlerror.url+"\nFile position: "+xmlerror.filepos;

    alert(errorstr);

    return "error";

    }else{

    columnNode=xmldoc.documentElement.selectNodes("/viewentries/viewentry/entrydata[@columnnumber='0' and .='"+dblKey+"']");

    dblArray=new Array();

    if(columnNode.length>0){

    if(columnNode.item(0).getAttribute("category")){

    NodePosition=columnNode.item(0).parentNode.getAttribute("position");

    xmldoc.setProperty("SelectionLanguage", "XPath");

    xpathquery="/viewentries/viewentry/entrydata[starts-with(../@position,'"+NodePosition+".') and @columnnumber="+dblColumn+"]";

    categoryNode= xmldoc.documentElement.selectNodes(xpathquery);

    for(x=0;x<categoryNode.length;x++){

    dblArray[x]=categoryNode[x].childNodes(0).text;

    }

    }else{

    for(x=0;x<columnNode.length;x++){

    dblArray[x]=columnNode[x].parentNode.childNodes(dblColumn).text;

    }

    }

    }

    return dblArray;

    }

    }catch(e){

    var errName=e.name;

    var errNumber=e.number & 0xFFFF;

    var errDescription=e.description;

    errMessage=e+"\n\nName: "+errName+"\nNumber: "+errNumber+"\nDescription: "+errDescription;

    alert(errMessage);

    return error;

    }

    }

Your Comments

Name:
E-mail:
(optional)
Website:
(optional)
Comment: