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

Comparação com campo Moeda em Access e ASP


Alessandro Silva

Pergunta

Pessoal, gostaria da ajuda de vocês para um probleminha que já estou perdendo a cabeça e não consigo resolver.

Estou remodelando o site de uma imobiliaria e no painel de Busca por Imovel tem um campo Input no formulario de busca que estou precisando usar o conteudo dele na camparação com o que tenho armazenado no campo Valor de um banco de dados em Access e esta dando Erro de Tipo de Dado Incompativel e precisava da ajuda de você... é mais ou menos isso aqui:

If Request.Form("txt_valor") <> ":: INDIFERENTE ::" Then
Session("v_valor") = Request.Form("txt_valor")
End If

Comando = "Select * FROM imoveis Where valor <= '"& Session("v_valor") &"' Order By valor asc "

Set RecSet = DB.Execute(Comando)

OBS_1: Na tabela de Access o campo Valor esta no formato Moeda.

Tentei colocar o campo no access, do tipo Texto ou Numero mas na hora de ordenar crescente ou descrescente, não dá muito certo. O micro começa ordenando pelo primeiro digito, então fica tipo assim:

10

200

35

450

59

OBS_2: O campo Input do formulario está configurado para a digitação do usuario já ficar com pontuação, então o valor chega na página ASP com pontos e virgulas. Ex. 1.523,00

alguém pode me dar uma forcinha ai ?

valeu galera.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Alessandro,

Não entendi muito bem esse seu codigo:

If Request.Form("txt_valor") <> ":: INDIFERENTE ::" Then
Session("v_valor") = Request.Form("txt_valor")
End If

":: INDIFERENTE ::" ?

Está comparando o Request do form com que valor ?

Coloque o código da maneira que está assim podemos ter uma noção maior doque está acontecendo.

Obs: Procure colocar os codigos dentro da tag code assim fica fácil a identificação de scripts.

[]'s

Editado por Jonathan Queiroz
Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia dcoder, beleza? (vou mandar o codigo mais abaixo)

Olha, o que acontece é que Não estou conseguindo receber um valor através do Request.Form, guarda-lo em um variavel e depois comparar com o campo no banco de dados Access que é do tipo Moeda.

Não estou conseguindo montar o SELECT pois se dou o select, o resultado no navegador é tipo de dados incompativeis, e já tentei varias combinações de Ccur(), FormatNumber(), FormatCurrency() e nenhuma de minhas combinações deu certo.

O ":: INDIFERENTE ::" eu VOU usar para excluir a opção Valor depois na hora de dar o SELECT pois meu Select vai ter 5 Itens: Finalidade do imovel, Tipo do Imovel, Disponibilidade do Imovel, Nº de Dormitorios do Imovel e Valor, e uso a opção de o valor do campo ser Indiferente para excluir ele do Select.... Todos os outros 4 valores a serem comparados no Select já estão funcionando, ou seja, se eles vierem com o conteudo ":: INDIFERENTE ::" e sai do Select, senão ele entra no Select.... mas não estou conseguindo fazer com o VALOR por conta desse problema no tipo do dado.

<%@ LANGUAGE = VBScript %>

<%
'Modifica a configuração regional do servidor
Session.LCID = 1046

Response.Buffer = True 
Response.AddHeader "cache-control", "private" 
Response.AddHeader "pragma", "no-cache" 
Response.ExpiresAbsolute = #January 1, 1990 00:00:01# 
Response.Expires=0

Dim v_valor, cont

// Esses Responses são apenas para Debug, para ver o que esta vindo pelo Request.form ----------------------
   Response.Write "Finalidade: " & Request.Form("combo_finalidade") & "<br>"
   Response.Write "Imóvel: " & Request.Form("combo_imovel") & "<br>"
   Response.Write "Tipo: " & Request.Form("combo_tipo") & "<br>"
   Response.Write "Dormitorios: " & Request.Form("combo_dormitorios") & "<br>"
// ----------------------------------------------------------------------------------------------------------------------------

If Request.Form("txt_valor") <> ":: INDIFERENTE ::" Then
  Session("v_valor") = Request.Form("txt_valor")

  // Esse Response abaixo também é apenas para Debug, para ver o que esta vindo pelo Request.form ----
      Response.Write "Valor: " & Session("v_valor") &" - Variavel do Tipo: "& VarType(Session("v_valor")) &" - "& TypeName(Session("teste")) & "<br>"
End If


cont = 0

%>
  <!--#include file="conexao.asp" -->
<% 

    Comando = "Select * FROM imoveis Where valor <= ' "& Session("teste") &" '  Order By valor asc "
    Set RecSet = DB.Execute(Comando)

 If RecSet.Eof Then
   Response.Write "Não encontrado !!!"
 Else
   RecSet.MoveFirst
   Do While Not RecSet.EOF
   cont = cont + 1
   
   Response.Write "Referência: " & RecSet("referencia") & " - Valor: " & RecSet("valor") & " - Banco do tipo: " & VarType(RecSet("valor")) & "<br>"
   
   RecSet.MoveNext
   Loop
 End If

Response.Write "<br>Foram encontrados: " & cont & " imóveis.<br>"

%>

Link para o comentário
Compartilhar em outros sites

  • 0

Bareta, essa sua sugestão de substituição ajudou, agora o select pega todos valores igual ou menor .... mas me deu outro problema... Agora, se no campo Input do formulario eu digito 5,00 e vem como 500,00. segue codigo:

Valor = Request.Form("txt_valor")

Valor = replace (Valor,".","")
Valor = replace (Valor,",","")

Session("v_valor") = Valor

    Comando = "Select * FROM imoveis Where valor <= "& Session("v_valor") &" Order By valor asc "
    Set RecSet = DB.Execute(Comando)
Pelo que estou entendendo, parece que depois do Replace ele esta jogando 2 zeros a mais... segue abaixo a Saida da Tela e o Código Fonte: SAIDA DA TELA: Finalidade: Indiferente Imóvel: Indiferente Tipo: Indiferente Dormitorios: Indiferente Valor que veio pelo Request.Form: 5,00 Valor após o comando Replace: 500,00 Referência: 001 - Valor: R$ 220,00 - Banco do tipo: 6 Referência: 002 - Valor: R$ 350,00 - Banco do tipo: 6 Referência: 003 - Valor: R$ 500,00 - Banco do tipo: 6 Foram encontrados: 3 imóveis. CÓDIGO:
Dim Valor, v_valor, cont

Response.Write "Finalidade: " & Request.Form("combo_finalidade") & "<br>"
Response.Write "Imóvel: " & Request.Form("combo_imovel") & "<br>"
Response.Write "Tipo: " & Request.Form("combo_tipo") & "<br>"
Response.Write "Dormitorios: " & Request.Form("combo_dormitorios") & "<br>"
Response.Write "Valor que veio pelo Request.Form: " & Request.Form("txt_valor") & "<br>"

Valor = Request.Form("txt_valor")

Valor = replace (Valor,".","")
Valor = replace (Valor,",","")

Session("v_valor") = Valor

Response.Write "<br>Valor após o comando Replace: " &FormatNumber(Session("v_valor"),2)& "<br><br>"

cont = 0

%>
  <!--#include file="conexao.asp" -->
<% 

    Comando = "Select * FROM imoveis Where valor <= "& Session("v_valor") &" Order By valor asc "
    Set RecSet = DB.Execute(Comando)
bareta, eu acho que consegui... veja: SAIDA DA TELA: Finalidade: Indiferente Imóvel: Indiferente Tipo: Indiferente Dormitorios: Indiferente Valor que veio pelo Request.Form: 150.000,00 Referência: 001 - Valor: R$ 220,00 Referência: 002 - Valor: R$ 350,00 Referência: 003 - Valor: R$ 500,00 Referência: 004 - Valor: R$ 750,00 Referência: 005 - Valor: R$ 830,00 Referência: 006 - Valor: R$ 125.000,00 Foram encontrados: 6 imóveis. CÓDIGO FONTE:
Valor = Request.Form("txt_valor")
Session("v_valor") = Ccur(Valor)

Response.Write "<br>"

cont = 0

%>
  <!--#include file="conexao.asp" -->
<% 

    Comando = "Select * FROM imoveis Where valor <= "& Session("v_valor") &" Order By valor asc "
    Set RecSet = DB.Execute(Comando)

 If RecSet.Eof Then
   Response.Write "Não encontrado !!!"
 Else
   RecSet.MoveFirst
   Do While Not RecSet.EOF
   cont = cont + 1
   
   Response.Write "Referência: " & RecSet("referencia") & " - Valor: " & FormatCurrency(RecSet("valor"),2) & "<br>"
   
   RecSet.MoveNext
   Loop
 End If

Response.Write "<br>Foram encontrados: " & cont & " imóveis.<br>"

Vou continuar com os testes e depois posto aqui para te dizer se funcionou tudo direitinho mesmo...

Pelo que tudo indica, parece que só o fato de jogar o Request.Form numa variavel e depois jogar essa variavel na Session já deu certo.

Obrigado por tudo mesmo... muito obrigado.

Alessandro.

Editado por Alessandro Silva
Link para o comentário
Compartilhar em outros sites

  • 0

E é estranho pois se eu colocasse o Ccur() no Select, conforme abaixo, não funcionava.

Select * FROM imoveis Where valor <= "& Ccur(Session("v_valor")) &" Order By valor asc
ai eu joguei o valor do Request em uma variavel e joguei essa variavel com Ccur() na Session, ai deu certo:
Valor = Request.Form("txt_valor")
Session("v_valor") = Ccur(Valor)

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,5k
×
×
  • Criar Novo...