desculpa ae a amolacao… eh que eu to comecando…
Markao, olha soh o que eu achei aqui:
Sim isso é uma possibilidade…porem tem muitos condicionais nesse negocio ha de existir uma solução mais elegante e robusta :).
Aproveitando me responda o seguinte :
Uma lente possui mais de um material ?
Uma lente possui mais de um indice de refracao ?
Nao. Uma lente pode ter um unico Material. Um unico Indice de Refracao, enfim um unico valor para cada campo.
Eh que eu queria fazer uma consulta de precos. E essa consulta me retornaria os valores das lentes, por exemplo, Cristal e Acrilico.
Ok …porem primeiramente temos que organizar o seu banco de dados. Já que é de pouco valia uma consulta em uma base de dados incoerente.
[quote=douglasmorais]Nao. Uma lente pode ter um unico Material. Um unico Indice de Refracao, enfim um unico valor para cada campo.
Eh que eu queria fazer uma consulta de precos. E essa consulta me retornaria os valores das lentes, por exemplo, Cristal e Acrilico. [/quote]
Hum …bingo !!
seguinte voce tem que usar or no lugar de and ex :
SELECT * FROM lentes where (material='policarbonato' OR material='acrilico')
Essa consulta vai retornar todas as lentes em que o campo material possua o valor ‘policarbonato’ ou ‘acrilico’.
concorda …? sem corda ? qual a diferença dos operadores ?
Nao entendo. pq que vc acha que ta incoerente ? Vc acha que eu deveria ter uma outras tabelas ( Material, Tratamento, IndiceRefracao ) e linkar todas com a tabela produto por uma foreign key ?
mas o OR nao vai limitar ? tipo, cristal ou acrilico e nao os dois… ?
erro
o OR da certo sim, acabei de testar no netbeans, naquela parte do banco de dados do netbeans
Opa desculpa …fail aqui no forum
Quanto a incoerencia que eu me referia ficou fora do contexto. Esta tudo bem com sua base
<form method="post" action="Servlet">
<label>Esferico :</label><input type="text" name="esferico" size="5"></input>
<label>Cilindrico :</label><input type="text" name="cilindrico" size="5"></input><br></br>
<label>Produto :</label> <br></br>
<input type="text" name="produto" size="30" /><br></br>
<label> Material</label><br></br>
<input type="checkbox" name="material1" value="Acrilico"> Acrilico <br/>
<input type="checkbox" name="material2" value="Cristal"> Cristal <br/>
<input type="checkbox" name="material3" value="Transistions"> Transistions <br/>
<input type="checkbox" name="material4" value="High Lite"> High Lite <br/>
<input type="checkbox" name="material5" value="Trivex"> Trivex <br/>
<input type="checkbox" name="material6" value="Policarbonato"> Policarbonato <br/>
<input type="checkbox" name="material7" value="Stylis"> Stylis<br/>
<br/>
<br/>
Tratamento<br/>
<input type="checkbox" name="tratamento1" value="Anti-Reflexo"> Anti-Reflexo<br/>
<input type="checkbox" name="tratamento2" value="Incolor"> Incolor<br/>
<br/>
<br/>
Indice de Refracao<br/>
<input type="checkbox" name="ir" value="1.49">1.49<br/>
<input type="checkbox" name="ir" value="1.56">1.56<br/>
<input type="checkbox" name="ir" value="1.61">1.61<br/>
<input type="checkbox" name="ir" value="1.67">1.67<br/>
<input type="checkbox" name="ir" value="1.80">1.80<br/>
<input type="checkbox" name="ir" value="1.90">1.90<br/>
<input type="submit" value="Gravar" />
</form>
</body>
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StringBuilder sql = new StringBuilder("select * from lentes where ( ");
Set<String> set = request.getParameterMap().keySet();
for (String nameParameter : set) {
if(nameParameter.startsWith("material")){
sql.append("material").append("=").append("'"+request.getParameter(nameParameter).concat("'").concat(" or "));
}
}
System.out.println(sql.toString().substring(0, (sql.toString().length()-5)).concat(" )"));
processRequest(request, response);
}
Saida:
select * from lentes where ( material='Acrilico' or material='Cristal' or material='Policarbonato' )
Isso resolve o problema quanto aos materias, agora só falta verificar e montar a consulta com os demais campos. Se baseia nisso e tenta fazer para os demais.
Muito Obrigado !