Ir para conteúdo
Fórum Script Brasil
  • 0

Busca Avançada - Sem filtragem de dados


Yasmim

Pergunta

Prezados,

Apesar de revirar a net inteira atrás de uma solução para o meu caso não consegui nada. Estou começando com programação asp e tenho que fazer uma busca avançada para o meu cliente. Essa busca será atraves de uma tabela chamanda produtos e nela tem os seguintes campos que serão pesquisados: Especificação, Segmento, Categoria, Nome e Uso.

O form tem os cinco campos em separado.

Meu código é o que colocarei abaixo. Nele consigo puxar cada filtro(campo) em separado, se eu busco apenas por segmento, vem somente os produtos daquele segmento, até aí ok. Mas se eu peço um determinado segmento e um determinado uso, a pesquisa continua filtrando apenas por um deles e o outro campo vem todos (inclusive os produtos que não são dele). O que estou fazendo de errado no meu codigo?

Segue código:

<%

especifica = Ucase (Request.form("especifica"))

Segmento = Ucase (Request.form("Segmento"))

Uso = Ucase (Request.form("Uso"))

Nome = Ucase (Request.form("Nome"))

Categoria = Ucase (Request.form("Categoria"))

DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "

DSNtemp=dsntemp & "DBQ=" & server.mappath("dados.mdb")

sqlstmt = "SELECT * FROM Produtos WHERE especifica = '"& especifica & "' OR Segmento = '"& Segmento & "' AND Segmento = '"& Segmento & "' OR Uso = '"& Uso & "' AND Nome = '"& Nome & "' OR Categoria = '"& Categoria & "' "

%>

Como disse, não conheço ainda muito coisa de asp, cheguei à este codigo atraves de alguns posts na net e codigos prontos.

Agradeço desde já o auxilio de todos.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Olá Bareta,

Muito obrigada pelo seu auxilio, desculpe a demora em responder, mas quando li a sua sugestão passei a estudar mais sobre o if, revirei mais uma vez a net, li algumas apostilas e cheguei a montar um esqueminha, mas continua dando erro:

Agora é:

Erro de sintaxe (operador faltando) na expressão de consulta 'Nome = Selecione o Produto AND Uso = Selecione a utilização AND Segmento = Automotivo'.

Segue abaixo o meu código, sei que pode ser algo bem simples de se resolver, mas ainda não entendo muito bem de asp.

<%

Set Conn = Server.CreateObject("ADODB.Connection")

DSNtest="DRIVER={Microsoft Access Driver (*.mdb)}; "

DSNtest=dsntest & "DBQ=" & Server.MapPath("dados.mdb")

Conn.Open DSNtest

nome = request.form("nome")

segmento = request.form("segmento")

uso = request.form("uso")

sql = "SELECT * FROM Produtos"

If Nome <> "" and Segmento <> "" then

sql = "SELECT * FROM Produtos WHERE Nome = "& nome &" AND Segmento = "& segmento &""

End If

If Uso <> "" and Segmento <> "" then

sql = "SELECT * FROM Produtos WHERE uso = "& uso &" AND Segmento = "& segmento &""

End If

If nome <> "" and Uso <> "" and Segmento <> "" then

sql = "SELECT * FROM Produtos WHERE Nome = "& nome &" AND Uso = "& Uso &" AND Segmento = "& segmento &""

End If

set rs = conn.execute(sql) Obs.Ele menciona esta linha como erro

%>

Já estou ficando desesperada, pois não consigo entender o que está acontecendo. Pode me ajudar novamente?

muito obrigada.

Link para o comentário
Compartilhar em outros sites

  • 0

Faça assim:

<%

Set Conn = Server.CreateObject("ADODB.Connection")

DSNtest="DRIVER={Microsoft Access Driver (*.mdb)}; "

DSNtest=dsntest & "DBQ=" & Server.MapPath("dados.mdb")

Conn.Open DSNtest

nome = request.form("nome")

segmento = request.form("segmento")

uso = request.form("uso")

sql = "SELECT * FROM Produtos WHERE 1=1"

If Nome <> "" then

sql = " AND nome = '" & Nome & "'"

End If

If Uso <> "" then

sql = " AND uso= '" & Uso & "'"

End If

If Segmento <> "" then

sql = " AND Segmento= '" & Segmento & "'"

End If

set rs = conn.execute(sql) Obs.Ele menciona esta linha como erro

%>

Att;

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Meninos,

Desculpe a demora em responder.

Olha, coloquei o response.write sql conforme a orientação e na tela aparece o seguinte:

sql = "SELECT * FROM Produtos WHERE 1=1"

Não tendo esse response .write, ele continua trazendo todas a s informações ao invés de filtrar, conforme as confições.

Tem alguma outra forma de se fazer essa busca sem ser com if's?

Obrigada!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...