Ir para conteúdo

POWERED BY:

Arquivado

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

hao

Busca com varios selects

Recommended Posts

fala galera!

 

to voltando e com duvidas como sempre!

 

intaum to fazendo uma busca para um site de imoveis com varios dados, meu formulario a maioria ta como select e apenas um como textfield.

 

Bem minha sql ta assim:

 

SQL = "SELECT * FROM imoveis WHERE referencia LIKE '%" & referencia & "%' AND tipo LIKE '%" & tipo & "%' AND finalidade LIKE '%" & finalidade & "%' AND uso LIKE '%" & uso & "%' AND dormitorios LIKE '%" & dormitorios & "%' AND suites LIKE '%" & suites & "%' AND vagas = '%" & vagas & "%' AND valor > '" & valor_minimo & "' AND valor < '" & valor_maximo & "' ORDER BY id"

porem sempre da erro, e acho q ta errado o jeito q to fazendo pra procurar o valor, q este esta sendo gravado tipo assim "150.200,00".

 

agradeço desde ja!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria bom se tu colasse o erro pra nós, mas posso tentar te adiantar algo:

 

SQL = "SELECT * FROM imoveis WHERE referencia LIKE '%" & referencia & "%' AND tipo LIKE '%" & tipo & "%' AND finalidade LIKE '%" & finalidade & "%' AND uso LIKE '%" & uso & "%' AND dormitorios LIKE '%" & dormitorios & "%' AND suites LIKE '%" & suites & "%' AND vagas = '%" & vagas & "%' AND valor > '" & valor_minimo & "' AND valor < '" & valor_maximo & "' ORDER BY id"

se os campos 'vagas' e 'valor' são campos numéricos (inteiro ou float), você não deve usar as aspas simples na consulta, elas saum necessárias para campos com strings e usando assim pode ocasionar erro com os tipos de dados incompatíveis. também é bom tu formatar o número antes de gravar no banco.

 

para campos numéricos no banco de dados:

'valor = request.form("valor_lido")   'levando em conta que o valor lido do textbox foi 120.370,13valor = Replace(Replace(valor, ".", ""), ",", ".")  'aqui vai deixar o valor como sendo 120370.13 e dae tu insere no banco'Se tu fizeres um insert sem a formatação acima, vai dar erro pois o sql vai entender a ',' do valor como um separador de valores do comando insert, e vai dizer que o numero de campos com valores é maior que o numero de campos existentes.

e na hora de ler o número salvo no banco tu podes usar a função:

 

valor = formatNumber(valor_do_banco, -1)

a função acima formata o número conforme as configurações regionais da máquina onde a página asp está sendo executada. E então retornará o valor 120.370,13, porém sem dar problema na hora de salvar.

 

se as configurações da máquina estiverem como padrão dos estados unidos, por exemplo, coloqueo o comando <% session.lcid = 1046%> no toppo da página que irá trabalhar com os números. isso força as funções do asp tratar numeros como formato brasileiro.

 

 

mas como eu disse lá em cima, os passos anteriores são necessários se o campo de valor for numérico no banco de dados. se caso for tudo campo de texto, o erro está em usar os operadores '>' e '<' para testá-lo. Teria que ser '=' ou o 'LIKE', mas daí tu não conseguirá pegar um intervalo de valores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala Schneider!

 

agradeço msm pela sua ajuda!

 

como eu tava fazendo errado, fiz tudo do jeito q você disse, qdo eu pesquiso um valor q naum chegue ao valor no banco de dados tudu bem, porem qdo tento fazer a pesquisa ultrapassando o valor naum da certo, tipo assim:

 

valor minimo=15000.00

valor maximo=200000.00

valor q esta no banco de dados = 150000.00

 

acontece essa mensagem:

 

<font style="color: rgb(0, 0, 0); font-family: verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 8pt; line-height: 11pt; font-size-adjust: none; font-stretch: normal;">  Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)  [Microsoft][Driver ODBC para Microsoft Access] Tipo de dados imcompatível na expressão de critério.  <b>/lider/resultados-busca.asp, line 36</b></font>
nesta linha 36 eh onde esta o set rs q chama a sql da pesquisa.

 

e no meu select q esta os valores estao assim:

 

<select name="valor_minimo" class="txtcomum" id="valor_minimo">						<option value="" selected>Todos </option>						<option value="250">R$ 250,00 </option>						<option value="400">R$ 400,00 </option>						<option value="600">R$ 600,00 </option>						<option value="800">R$ 800,00 </option>						<option value="1000">R$ 1.000,00 </option>						<option value="1250">R$ 1.250,00 </option>						<option value="1500">R$ 1.500,00 </option>						<option value="2000">R$ 2.000,00 </option>						<option value="3000">R$ 3.000,00 </option>						<option value="4000">R$ 4.000,00 </option>						<option value="5000">R$ 5.000,00 </option>						<option value="8000">R$ 8.000,00 </option>						<option value="15000">R$ 15.000,00 </option>						<option value="25000">R$ 25.000,00 </option>						<option value="40000">R$ 40.000,00 </option>						<option value="60000">R$ 60.000,00 </option>						<option value="80000">R$ 80.000,00 </option>						<option value="125000">R$ 125.000,00 </option>						<option value="200000">R$ 200.000,00 </option>						<option value="500000">R$ 500.000,00 </option>						<option value="1000000">R$ 1 milhão </option>					  </select>
desde ja agradeço muita sua atenção!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza cara! mas estamos aqui pra isso mesmo, trocar idéias e ir aprendendo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

mas continuando com o problema, acho que o que está acontecendo é por causa dos tipos de dados no banco. Dá uma olhada no exemplo abaixo pressupondo que a estrutura do teu banco de dados seja assim:

 

tabela: imoveis

colunas:

referencia (varchar, char ou text)

tipo (varchar, char ou text)

finalidade (varchar, char ou text)

uso (varchar, char ou text)

dormitorios (inteiro)

suites (inteiro)

vagas (inteiro)

valor (float ou double)

 

dae o select ficaria assim:

SQL = "SELECT * FROM imoveis WHERE referencia LIKE '%" & referencia & "%' AND tipo LIKE '%" & tipo & "%' AND finalidade LIKE '%" & finalidade & "%' AND uso LIKE '%" & uso & "%' AND dormitorios = " & dormitorios & " AND suites = " & suites & " AND vagas = " & vagas & " AND (valor >= " & valor_minimo & " AND valor <= " & valor_maximo & ") ORDER BY id"
pelo erro que tu colou no post acima, parece que o campo valor esá definido como texto na tabela do banco de dados. Dá um revisada aí, e qualquer coisa cola a estrutura da tabela e a forma como tu ta pegando os dados que estão nas variáveis da consulta.

 

 

Falow aí cara!

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala Schneider!

 

intaum, naum se faz diferença mas estou trabalhando com o banco de dados access, e minha tabela imoveis ta assim:

 

Imagem Postada

 

e na parte onde ta o valor, coloquei o tipo numero, mas em baixo tem um monte de tipo olhe soh:

 

Imagem Postada

 

agora naum sei qual tamanhho do campo com acima, mas como inteiro longo ja tentei e acontece o msm erro.

 

agora voltando na pagina q faz a busca ta certo colocar o valor assim msm?

 

<option value="250">R$ 250,00 </option>
e mais uma vez obrigado msm!! eh isso q faz o forum imasters ser o melhor!!!

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

WOW CONSEGUI!!!

 

o q eu tava fazendo de errado tava na sql msm!!!

 

na onde era numero o certo eh colocar "=" e eu tava procurando com o "LIKE"!!!

 

valew msm pela ajuda Schneider!! sempre q eu puder tbm ajudar estarei aaki!!!

 

abraços

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.