<% ' Obrigar à declaração de variáveis. option explicit ' Declarar variáveis. dim pagina dim showRows dim ciencia dim navEvent pagina = "proc_ciencia.asp" showRows = 5 ' Capturar os valores dos campos do formulário de pesquisa. ciencia = Request("ciencia") navEvent = Request("navEvent") %> Pesquisar no Centro Virtual Camões
Termo ou expressão:


<% ' Se navEvent não estiver vazia, inicia-se a pesquisa. if navEvent <> "" then call doSearch() end if %> <% ' Função doSearch(): ' sub doSearch() dim ixProc ' variável para o objecto de pesquisa do Index Server. dim procRS ' variável para o recordset. ' Criar o objecto de pesquisa do index server, configurar os campos, ' ordenar de forma descendent, atribuir o número máximo de registos(300), ' a string de pesquisa para o campo target (de pesquisa), ' Nota: a string de pesquisa parametrizada com ! (not) e o caminho ' #vpath operators, determina que cada ficheiro em *\_vti path, seja excluído. ' ( a pasta _vti* contém ficheiros com extensões de servidor do FrontPage, ' que não devem ser visualizadas pelos utilizadores). set ixProc = Server.CreateObject("ixsso.Query") ixProc.Columns = _ "doctitle, vpath, filename, size, write, characterization, rank" ixProc.SortBy = "rank[d]" ixProc.MaxRecords = 300 ixProc.Query = "(#vpath *\cvc\ciencia*) & (" & ciencia & ")" ' Correr a consulta, ou seja, criar o recordset. set procRS = ixProc.CreateRecordSet("nonsequential") procRS.PageSize = showRows ' Testar o resultado da consulta. Se esxpirar o tempo ou não obtiver registos, ' mostra uma mensagem adequada à situação. Caso contrário, mostra as ocorrências. if (ixProc.QueryTimedOut) then Response.Write ("

Erro: " & timedOut_Text & ".

" & vbCRLF) elseif (procRS.RecordCount <= 0) then Response.Write ("

O termo ou expressão não foi encontrado nesta base temática.

" & vbCRLF) else call showHits(procRS) end if end sub ' Função showHits(): Mostra o recordset resultante da consulta. ' sub showHits(procRS) dim recordNumber ' registo número (ocorrência número) dim docTitle ' título da página ou documento dim firstRow ' primeiro registo a ser mostrado dim lastRow ' último registo a ser mostrado dim rowCount ' número de registos mostrados dim r ' controlador (utilizado para verificar se a última página é curta) ' Capturar os valores dos campos do formulário de pesquisa. firstRow = Request("firstRow") rowCount = Request("rowCount") ' Atribui a primeira e última linha baseado no valor da variável navnet. if (navEvent = "Top") then firstRow = 1 elseif (navEvent = "Prev") then firstRow = firstRow - showRows if (firstRow < 1) then firstRow = 1 end if elseif (navEvent = "Next") then if ((firstRow + showRows) <= procRS.RecordCount) then firstRow = firstRow + showRows end if elseif (navEvent = "Bottom") then ' Calcula o número de linhas que devem ser mostradas na última página, ' que é o remanescente da divisão do número de registos ' pelo número de linhas a mostrar. r = procRS.RecordCount mod showRows ' Se o número de linhas na última página for 0, a primeira linha é igual ' ao número de registos menos showRows mais 1. Caso contrário, ' a primeira linha é igual ao número de registos menos r(controlador) mais 1. if (r = 0) then firstRow = procRS.RecordCount - showRows + 1 else firstRow = procRS.RecordCount - r + 1 end if else ' Não faz nada. end if ' A última linha é igual à primeira linha mais número de linhas ' menos 1. lastRow = firstRow + showRows - 1 ' Se a úçtima linha for maior que o número de registos, ' a última linha será igual ao número de registos. if (lastRow > procRS.RecordCount) then lastRow = procRS.RecordCount end if ' Mover-se para o início do recordset, significa mover-se para o registo ' que corresponde à primerira linha. procRS.MoveFirst() if (firstRow > 1) then procRS.Move(firstRow - 1) end if ' Sumário: # número de registos encontrados e intervalo ' de registos que está a ser mostrado. Response.Write ("" & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) ' Show the records. rowCount = 0 do while ((not procRS.EOF) and (rowCount < showRows)) recordNumber = firstRow + rowCount ' Get the document title. If it's blank, set it to "Untitled". docTitle = procRS("doctitle") if docTitle = "" then docTitle = "Sem título" end if ' Número do registo #, hiperligação para o documento, URL, e descrição. Response.Write (" " & vbCRLF) Response.Write (" " & _ vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) rowCount = rowCount + 1 procRS.MoveNext() loop ' Barra de navegação. Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) ' Fecho da tabela. Response.Write ("
" & vbCRLF) Response.Write (" Encontrados: " & procRS.RecordCount & vbCRLF) Response.Write ("    Listados nesta página: " & _ firstRow & " - " & lastRow & vbCRLF) Response.Write ("
 
" & recordNumber & "." & vbCRLF) Response.Write (" " & _ docTitle & "" & vbCRLF) Response.Write ("
" & vbCRLF) Response.Write(" URL: http://" & _ Request("server_name") & procRS("vpath") & "" & vbCRLF) Response.Write ("
" & vbCRLF) Response.Write (" " & _ Server.HTMLEncode(procRS("characterization")) & "" & vbCRLF) Response.Write ("
 
" & vbCRLF) Response.Write ("
" & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write (" " & vbCRLF) Response.Write ("
" & vbCRLF) Response.Write ("
" & vbCRLF) end sub %>