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

(Resolvido) Varios filtros 1 select


LGcs

Pergunta

Bom é o seguinte pessoal tenho o seguinte formulário.

data inicial [ ] tada final [ ]

contrato [ ]

os [ ]

matricula [ ]

entaum se trata de um formulário complexo.

ai a página recebe esses valores vai no banco de dados e execulta a busca.

o problema é o seguinte por exemplo: se a pessoa usar todos os campos ai vai ter que executar um determinado select, se a pessoa por exemplo usar somente o campo matricula e os ai vai executar outro tipo de select, se a pessoa usar data e contrato ai vai executar outro tipo de select.

Bom a duvida é a seguinte, vou ter que fazer varios tipos de combinações ou da pra fazer um select agrupando caso seja usado um determinado campo para a busca.

Obrigado a todos.

Espero que tenham entendido.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
LGcs, boa tarde.

Baste você usar a cláusula where com OR, exemplo:

SQL = "select * from regrashora where campo1 = '"&variavel1&"' OR campo2 = '"&variavel2&"'"

Sacou?

[]'s Rafael Spilki

Pois é cara, eu fiz isso, so q tipo, se eu buscar so por matricula por exemplo, ai aparece, so os dados daquela pessoa mesmo, mas se eu buscar por matricula e por contrato ai aparece todas as matriculas com aquele contrato entendeu. Parece que o OR faz a busca só por um tipo, ai eu tentei com AND tb, só q ai ele não busca se não tiver todos os campos completos.

Link para o comentário
Compartilhar em outros sites

  • 0

você pode criar tb com condicionais...

mas aí entra naquela de combinações...

if variavel1 = "" then
sql = "..."
elseif variavel2 = "" then
sql = "..."
end if

E pode ainda trocar o igual por Like, para aumentar o espectro de buscas...

Outra ainda... você pode com a mesma variavel consultar em varios campos do bd... desta forma pode usar o OR...

Isso resolve?

Link para o comentário
Compartilhar em outros sites

  • 0

Cara muito obrigado pela atenção,

Então no caso eu vou ter q fazer 16 combinaçoes mesmo né dessa forma q você fez ai né.

Dexa eu te mostrar como q ta o meu codigo pra ver se você pode me dar uma ajudada nisso, claro se você puder.

<%

  matricula =request.form("matricula")
  contrato =request.form("contrato")
  os =request.form("os")
  
  Set conexao = Server.CreateObject("ADODB.Connection")
  Conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Server.MapPath("apropriacao.mdb")  
  Set rs = Server.CreateObject("ADODB.Recordset")
  rs.CursorType = adOpenKeyset

  rs.Open  "SELECT * FROM apropriacao where matricula= '" & matricula & "' or contrato= '" & contrato & "' or os= '" & os & "' order by data ", conexao

  
%>

valeu

Link para o comentário
Compartilhar em outros sites

  • 0

Ficaria mais ou menos assim:

<%

  matricula =request.form("matricula")
  contrato =request.form("contrato")
  os =request.form("os")
  
  Set conexao = Server.CreateObject("ADODB.Connection")
  Conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Server.MapPath("apropriacao.mdb")  
  Set rs = Server.CreateObject("ADODB.Recordset")
  rs.CursorType = adOpenKeyset


if matricula = "" and contrato <> "" and os <> "" then 'se matricula for nulo e contrato e os não forem nulos então
rs.Open  "SELECT * FROM apropriacao where matricula= '" & matricula & "' or contrato= '" & contrato & "' or os= '" & os & "' order by data ", conexao
elseif matricula <> "" and contrato = "" and os = "" then
rs.Open "Select...
end if 

  
%>

Isso é meio trabalhosinho... do contrário so repensando a lógica...

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Cara entendi certi,

Muito obrigado, tava faltando basicamente só isso pra terminar a intranet aqui.

Porque q ta dando esse erro aqui?

Tipo de erro:

Erro de compilação do Microsoft VBScript (0x800A03EA)

Erro de sintaxe

/Apropriacao/conff_registro.asp, line 17, column 7

else if

------^

_________________________________________________________________________

CODIGO:

<%

  matricula =request.form("matricula")
  contrato =request.form("contrato")
  os =request.form("os")
  
  Set conexao = Server.CreateObject("ADODB.Connection")
  Conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Server.MapPath("apropriacao.mdb")  
  Set rs = Server.CreateObject("ADODB.Recordset")
  rs.CursorType = adOpenKeyset

 if matricula <>"" and contrato <> "" and os <> "" then 
  rs.Open  "SELECT * FROM apropriacao where matricula= '" & matricula & "' AND contrato= '" & contrato & "' AND os= '" & os & "' order by data ", conexao

elseif 
  matricula <> "" and contrato <>"" and os = "" then
rs.Open "SELECT * FROM apropriacao where (matricula= '" & matricula & "' AND contrato= '" & contrato & "') OR os= '" & os & "' order by data ",conexao

elseif 
  matricula <> "" and contrato = "" and os = "" then
rs.Open "SELECT * FROM apropriacao where matricula= '" & matricula & "' OR contrato= '" & contrato & "' OR os= '" & os & "' order by data ",conexao

elseif 
  matricula <> "" and contrato = "" and os = "" then
rs.Open "SELECT * FROM apropriacao where matricula= '" & matricula & "' OR contrato= '" & contrato & "' OR os= '" & os & "' order by data ",conexao

elseif 
  matricula = "" and contrato <> "" and os = "" then
rs.Open "SELECT * FROM apropriacao where matricula= '" & matricula & "' OR contrato= '" & contrato & "' OR os= '" & os & "' order by data ",conexao

elseif 
  matricula ="" and contrato = "" and os <> "" then
rs.Open "SELECT * FROM apropriacao where matricula= '" & matricula & "' OR contrato= '" & contrato & "' OR os= '" & os & "' order by data ",conexao

elseif 
  matricula <> "" and contrato = "" and os  <>"" then
rs.Open "SELECT * FROM apropriacao where (matricula= '" & matricula & "' AND os= '" & os & "') OR contrato= '" & contrato & "' order by data ",conexao

elseif 
  matricula ="" and contrato <>"" and os <>"" then
rs.Open "SELECT * FROM apropriacao where matricula= '" & matricula & "' OR (contrato= '" & contrato & "' AND os= '" & os & "') order by data ",conexao

end if 

  
%>

valeu

Tudo bom

Editado por Rafael Spilki
inclusão das tags code
Link para o comentário
Compartilhar em outros sites

  • 0

AAAA DEU CERTO..

PRA QUEM TIVER A MESMA DUVIDA QUE EU, O ERRO ERA porque O CODIGO não ESTAVA NA MESMA LINHA DO ELSEIF..

Vo postar o codigo aqui pra se alguém quizer.

valeu

<%

  matricula =request.form("matricula")
  contrato =request.form("contrato")
  os =request.form("os")
  
  Set conexao = Server.CreateObject("ADODB.Connection")
  Conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Server.MapPath("apropriacao.mdb")  
  Set rs = Server.CreateObject("ADODB.Recordset")
  rs.CursorType = adOpenKeyset

  'rs.Open  "SELECT * FROM apropriacao where matricula= '" & matricula & "' or contrato= '" & contrato & "' or os= '" & os & "' order by data ", conexao

 if matricula <>"" and contrato <> "" and os <> "" then 
  rs.Open  "SELECT * FROM apropriacao where matricula= '" & matricula & "' AND contrato= '" & contrato & "' AND os= '" & os & "' order by data ", conexao

elseif matricula <> "" and contrato <>"" and os = "" then
rs.Open "SELECT * FROM apropriacao where (matricula= '" & matricula & "' AND contrato= '" & contrato & "') OR os= '" & os & "' order by data ",conexao

elseif matricula <> "" and contrato = "" and os = "" then
rs.Open "SELECT * FROM apropriacao where matricula= '" & matricula & "' OR contrato= '" & contrato & "' OR os= '" & os & "' order by data ",conexao

elseif  matricula <> "" and contrato = "" and os = "" then
rs.Open "SELECT * FROM apropriacao where matricula= '" & matricula & "' OR contrato= '" & contrato & "' OR os= '" & os & "' order by data ",conexao

elseif matricula = "" and contrato <> "" and os = "" then
rs.Open "SELECT * FROM apropriacao where matricula= '" & matricula & "' OR contrato= '" & contrato & "' OR os= '" & os & "' order by data ",conexao

elseif matricula ="" and contrato = "" and os <> "" then
rs.Open "SELECT * FROM apropriacao where matricula= '" & matricula & "' OR contrato= '" & contrato & "' OR os= '" & os & "' order by data ",conexao

elseif matricula <> "" and contrato = "" and os  <>"" then
rs.Open "SELECT * FROM apropriacao where (matricula= '" & matricula & "' AND os= '" & os & "') OR contrato= '" & contrato & "' order by data ",conexao

elseif matricula ="" and contrato <>"" and os <>"" then
rs.Open "SELECT * FROM apropriacao where matricula= '" & matricula & "' OR (contrato= '" & contrato & "' AND os= '" & os & "') order by data ",conexao

end if 

  
%>

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, Rafael

Aproveitando este assunto, será que você pode me ajudar ?

Tenho um problema parecido:

Preciso fazer uma página de consulta de uma tabela enorme, de aproximadamente 40 campos, onde no campo para que a pessoa digite e faça a busca, ela deverá digitar informações que estão registradas nessa tabela enorme.

Ou seja, tem o campo nome, sexo, data de nascimento, endereço, telefone, entre outros, tudo isso cadastrado. Então na consulta deverá haver um único campo onde a pessoa vai digitar informações contidas nesse cadastro enorme e o resultado da busca, será somente o campo nome e e-mail.

Pelo que aprendi, fiz uma página com a caixa de entrada de texto (nomeada como pesquisa) e o botão submeter. Depois fiz a tabela dinâmica com nome e e-mail, para apresentar os dados buscados. Após fiz o Recordset, mas este eu só sei fazer com um único filtro pelo campo Nome, ao lado contains, Form Variable, e ao lado digitei pesquisa (nome do campo de entrada de texto. Fazendo assim, dá tudo certo.

Só que eu preciso criar vários filtros e não somente um. Pelo que vi na web, acredito que seja aquele WHERE, mas eu tentei e não deu certo.

Você poderia me ajudar ?

Grata, Joana

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...