segunda-feira, 9 de agosto de 2010

UniquedbLookup

function uniquedbLookup(server,base,visao,chave,coluna){

xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;

if (server != "") server = "http://"+ server;
if (base != "") base = "/"+base +"/";

var start = Number(chave);

//urlgetfrm = trim(server)+trim(base)+visao+"?readviewentries&count=99999";
urlgetfrm = trim(server)+trim(base)+visao+"?readviewentries";
xmlDoc.load(urlgetfrm);

if (start > xmlDoc.documentElement.childNodes.length)
start = xmlDoc.documentElement.childNodes.length;


//alert("Procurar a partir da posicao " + start + " da visao");

//pegando a entrada de acordo com a chave ou de acordo com o count da view
urlgetfrm = trim(server)+trim(base)+visao+"?readviewentries&start="+start+"&count=1";
xmlDoc.load(urlgetfrm);

var count = 0;
var flag = xmlDoc.documentElement.childNodes(0).childNodes.item(0).text;

// alert("Valor da posicao " + start +" = " + flag);

while (flag !=chave & flag != "")
{
// if (count != 0)alert("Ultimo valor lido é " + flag);

count = start -1; //pegando ate a ultima posicao antes do inicio da lista anterior
// forçando a procura inciar em N posicoes atras ou no primeiro documento da view
start = start - 1000;
if (start < 0) start = 1; // alert("Pegando " + count + " documentos, a partir da posicao " + start); urlgetfrm = trim(server)+trim(base)+visao+"?readviewentries&start="+start+"&count="+count; xmlDoc.load(urlgetfrm); nodes = xmlDoc.documentElement.childNodes; //corresponde a nova collection var numchave = Number(chave); // alert("Numero de arquivos:" + nodes.length); var volta = ""; for (var i = 0; i < nodes.length; i++) { // alert(nodes.item(i).childNodes.item(0).text); var numero = Number(nodes.item(i).childNodes.item(0).text); if (numero > numchave)
{
if (i==0) volta = (nodes.item(i).childNodes.item(0).text); //primeiro valor da lista é maior, entao refazer a lista, buscando mais atras
else volta = ""; // encontrou valor maior depois do 1º valor lido => valor procurado nao existe
break;
}

else if(nodes.item(i).childNodes.item(0).text==chave)
{
volta = nodes.item(i).childNodes.item(0).text;
break;
}

}
flag = volta;
///alert(flag);

}

return(volta);

}

Nenhum comentário:

Postar um comentário