quinta-feira, 28 de junho de 2001

Função que cria sql de acordo com as características da busca

Essa é a versão 0.1 desta função que cria um sql de acordo com as características da busca (e, ou, exata).


Quem for modificar ou documenta-lo melhor, por favor, envie um e-mail para mim com o código para poder atualiza-lo neste site.


Eu irei incluir o nome do autor da atualização no código.


<%
'--------------------------------------------------------------------
' criaConsultaSQL
' Criado por Rafael Martins de Ascenção
' Email: iamaz@ig.com.br - ICQ: 118036283
' --------------------------------------------
' strOri = palavra procurada
' campos = campos da tabela a serem selecionados pela consulta
' tabela = tabela onde será feita a consulta
' condicoes = filtro para o registros selecionados
' tipoBusca = E, OU, EXATA
' camposPesquisa = campos onde será feita a busca
' ordem = campos a classificar os registros
'--------------------------------------------------------------------


function criaConsultaSQL(strOri,campos,tabela,condicoes,tipoBusca,camposPesquisa,ordem)


 dim str,sql,cmpPsq


 str = preparaPalavra(strOri)


 sql = "SELECT " & campos & " FROM " & tabela & " where "
 cmpPsq = split(camposPesquisa,",")
 
 if tipobusca = "EXATA" then


  sql = sql & " ("
  for i=0 to ubound(cmpPsq)
   if i <> 0 then
    sql = sql & " or "
   end if
   sql = sql & cmpPsq(i) & " like '%" & str & "%'"
  next
  sql = sql & ")"


 else
 
  if tipobusca = "E" then
   expr = " and "
  else
   expr = " or "
  end if
  
  strvet = split(str," ")
  
  sql = sql & " (("
  
  for i=0 to ubound(cmpPsq)
   if i <> 0 then
    sql = sql & ") or ("
   end if
   for j=0 to ubound(strvet)
    if j <> 0 then
     sql = sql & expr
    end if
    sql = sql & cmpPsq(i) & " like '%" & strvet(j) & "%'"
   next
  next


  sql = sql & "))"
 end if


 if condicoes <> "" then
  sql = sql & " and " & condicoes
 end if
 sql = sql & " order by " & ordem


 criaConsultaSQL = sql


end function


'E para utilizá-la:


pegaReg.Open criaConsultaSQL(frase, "campo1,campo2,campo3,campo4", "tabela", "campo=1", "E", "campo1,campo2", "campo1,campo2"), conex
%>



Esta matéria foi postada originalmente no ASP4Developers por Rafael Martins de Ascenção (site), que na época era "também conhecido como Iamaz do news do FX. Programador ASP, ColdFusion. ". Hoje, vai saber...

0 comentários: