Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

faivic

valor nulo na consulta

Recommended Posts

e ae pessoalé o seguinte, tenho uma consulta com três itens para serem escolhidos, até ai beleza, funcionou tudo, mas queria q se um dos itens fosse nulo a consulta fosse realizada.Exemplo:se a pessoa escolher de 1980 a 2005, 4 portas, combustivel "todos", aparecessem os dados, ou se, escolhesse de 1980 a 2005, numero de portas todos, combustivel alcool, aparecessem os dados, ou se o intervalo do ano fosse escolhido, mas o numero de portas e combustivel fossem todos, tb aparecessem os dados.puts, será q da pra entender? tentei fazer sqls distintas, mas naum da, naum tem como usar AND OR junto, como eu resolvo isso?a minha sql é essa

Executar = "SELECT * FROM db_table WHERE modelo = '"&(modelo)&"' and anomod >='"&(ano1)&"' and anofab <= '"&(ano2)&"' and numero_portas = '"&(portas)&"' and combustivel = '"&(combustivel)&"' "

me ajudem por favor, já aprendi muita coisa aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você quer mais ou menos uma pesquisa avançada, tente usar da seguinte forma.

 

sql_rs = "SELECT * FROM db_table WHERE 1 = 1"if modelo <> "" then sql_rs = sql_rs &" and modelo = '"&(modelo)&"' "if anomod <> "" then sql_rs = sql_rs &" and anomod >='"&(ano1)&"' "if anofab <> "" then sql_rs = sql_rs &" and anofab <= '"&(ano2)&"' "if numero_portas <> "" then sql_rs = sql_rs &" and numero_portas = '"&(portas)&"' "if combustivel <> "" then sql_rs = sql_rs &" and combustivel = '"&(combustivel)&"' "Executar = sql_rs

Não testei mas acredito que seja isso mesmo, qualquer coisa poste ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado Allan, valeu pela tentiva, mas não deu certona combo onde se seleciona os dados, tentei colocar<option value="" selected></option>ou<option selected></option>mas não deu, pelo que eu entendi da sua sql, dizia: "Se dado for diferente de vazio, executar sql", deveria funcionar, mas sei la. funcionou tudo, só esse detalhe de executar a consulta com valor nulo, ta ai o code da página

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%><script language="javascript"> caixa=''; for(x=2006;x>=1950;x--){ caixa=caixa+'<option value="'+x+'">'+x+'</option>'} </script><% marca=request.form("marca")Set DB = Server.CreateObject("ADODB.Connection")DB.Open "DBQ=C:\inetpub\wwwroot\bdasp\db_folder\db_file1.mdb;Driver={Microsoft Access Driver (*.mdb)};"sql_rs = "SELECT * FROM db_table WHERE marca_carro="&(marca)if modelo <> "" then sql_rs = sql_rs &" and modelo = '"&(modelo)&"' "if anomod <> "" then sql_rs = sql_rs &" and anomod >='"&(ano1)&"' "if anofab <> "" then sql_rs = sql_rs &" and anofab <= '"&(ano2)&"' "if numero_portas <> "" then sql_rs = sql_rs &" and numero_portas = '"&(portas)&"' "if combustivel <> "" then sql_rs = sql_rs &" and combustivel = '"&(combustivel)&"' "Executar = sql_rsSet RecSet = DB.Execute(Executar)%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css"><!--body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px;}--></style></head><body><%If RecSet.EOF Then%><center>Veículo não encontrado.</center> <%Else%><table width="755" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td> <div align="center"> <form name="form1" method="post" action="consulta_ano.asp" target="_top"> <div align="center"> <table width="248" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="265"> <div align="left"> <div align="center"> <div align="center"> <p align="left"> <select name="modelo" size="1" class="style48" id="select9"> <%Do While Not RecSet.EOF%> <option name=""><%= RecSet("modelo")%></option> <% RecSet.MoveNext%> <%Loop%> </select> <br> Selecione o Ano: <br> <select name="ano1" id="select10"> <option value="1980">1980</option> <script>document.write(caixa)</script> </select> até <select name="ano2" id="select11"> <script>document.write(caixa)</script> </select> </p> </div> <p align="left"> Nº de portas <select name="portas" id="select12"> <option selected></option> <option value="2">2</option> <option value="4">4</option> </select> </p> <p align="left"> Combustível<br> <select name="combustivel" id="select13"> <option selected></option> <option value="álcool">álcool</option> <option value="álcool e gás natural">álcool e gás natural</option> <option value="diesel">diesel</option> <option value="gás natural">gás natural</option> <option value="gasolina">gasolina</option> <option value="gasolina e álcool">gasolina e álcool</option> <option value="gasolina e gás natural">gasolina e gás natural</option> <option value="gasolina, álcool e gás natural">gasolina, álcool e gás natural</option> </select> </p> <p align="left"> <input type="submit" name="Submit" value="Submit"></p> </div> </div></td> </tr> </table> </div> </form> </div> </td> </tr></table> <%end if%><p> </p><p> </p></body></html>

desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

e ae Allannaum da erro nenhum, ele não acha os registros por causa dos valores nulos, só funciona quando eu escolho todos os dados.Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce terá de montar sua sql a partir do que vem no formIF CampoTXT <> "" THENSQL = SQL & " AND CAMPO = " & CampoTXTEND IFse for vazio não faz nada ai pega tudo

Compartilhar este post


Link para o post
Compartilhar em outros sites

puts, to usando 3 paginas asp pra fazer essa consulta, tava colocando na pagina errada, agora sim, mas deu o mesmo problema, não da erro nenhum e não encontra os registros por causa do valor nulo.no combo onde é escolhido o nº de portas e combustivel, coloquei a option com value="" ... é isso né?o script atual

<% modelo = request.form("modelo")ano1 = request.form("ano1")ano2 = request.form("ano2")portas = request.form("portas")combustivel = request.form("combustivel")Set DB = Server.CreateObject("ADODB.Connection")DB.Open "DBQ=C:\inetpub\wwwroot\bdasp\db_folder\db_file1.mdb;Driver={Microsoft Access Driver (*.mdb)};"sql_rs = "SELECT * FROM db_table WHERE modelo = '"&(modelo)&"' and anomod >='"&(ano1)&"' and anofab <= '"&(ano2)&"' and numero_portas = '"&(portas)&"' and combustivel = '"&(combustivel)&"' "if portas <> "" then sql_rs = sql_rs &" and numero_portas = '"&(portas)&"' "if combustivel <> "" then sql_rs = sql_rs &" and combustivel = '"&(combustivel)&"' "Executar = sql_rsSet RecSet = DB.Execute(Executar)%> <%if RecSet.EOF then%> <%else%> <%do while NOT RecSet.EOF%> <form method="post" action="consulta_click.asp"> <table width="757" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF"> <tr class="mao" onClick="go('consulta_click.asp?cod=<%=RecSet("cod")%>&codloja=<%=RecSet("codloja")%>')"> <td width="62" bgcolor="#E5E5E5"><div align="center"><span class="style2"><img src="<%= RecSet("foto")%>" width="62"" height="50" border="0"></span></div></td> <td width="138" bgcolor="#E5E5E5"><div align="center" class="style2"><%= RecSet("modelo")%></div></td> <td width="142" bgcolor="#CACACA"><div align="center" class="style2"><%= RecSet("versão")%></div></td> <td width="127" bgcolor="#CACACA"><div align="center" class="style2"><%= RecSet("marca_carro")%></div></td> <td width="64" bgcolor="#CACACA"><div align="center" class="style2"><%= RecSet("anomod")%></div></td> <td width="210" bgcolor="#CACACA"><div align="center"><%= RecSet("nomeloja")%></div></td> </tr> </table> </form> <p align="center"> <%RecSet.MoveNext%> <%loop%> <%end if%> <p align="center"><a href="index.asp"><a href='java script:window.history.go(-1)'><img src="seta.jpg" alt="voltar" width="35" height="32" border="0"></a> </td> </tr> </table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae Explore, é isso ae, até eu tb ja testei e deu certo, com um ou com outro, o problema é tudo junto:

 

se porta for nulo mostra todos os registros de acordo com combustivel, modelo e ano

 

se combustivel for nulo mostra todos os registros de acordo com portas, modelo e ano

 

se porta e combustivel forem nulos mostra todos os registros de acordo com modelo e ano

 

 

ou seja, modelo e ano obrigatoriamente serão escolhidos, portas e combustivel é opcional

Compartilhar este post


Link para o post
Compartilhar em outros sites

por isso voce deve montar sua sql a partir do que é passado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.