« Return to the blog entry
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;
}
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;
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;
}
}