Ir para conteúdo

POWERED BY:

Arquivado

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

ZioNN

Comparar CEP com faixa de cep

Recommended Posts

Estou com um problema esquisito aqui.

 

Preciso determinar à qual intervalo pertence um dado CEP.

 

A tabela com as faixas de CEP para os estados contém os campos cep_inicio_area_atendida e cep_final_area_atendida, ambos do tipo char(8), pois o comprimento é fixo.

 

O CEP informado pelo usuário chega no formato de uma string, também com 8 caracteres de comprimento.

 

Porém, quando faço o seguinte select obtenho erro:

 

"SELECT estado_area_atendida, prazo_entrega_area_atendida" & _
" FROM tb_frete_areas_atendidas" & _
" WHERE cep_inicio_area_atendida <= " & CEPDestino & " AND cep_final_area_atendida >= " & CEPDestino & _
" AND transportadora_area_atendida = " & codTransportadora

 

O erro que recebo é:

 

ADODB.Recordset error '800a0bb9'

 

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

Agradeço quem puder me dizer como comparar esses valores e determinar se o cep informado pertence a um intervalo de ceps.

Compartilhar este post


Link para o post
Compartilhar em outros sites

escreve este select na tela antes de executar e poste aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mario,

 

Obrigado mais uma vez por sua ajuda. Consegui agora há pouco resolver o problema. Felizmente não tinha nada a ver com a query. Mesmo ela impressa com os dados dinamicos estava correta. Foi uma distração minha em outro ponto do código.

 

Aproveito para te perguntar: Não preciso fazer coerção de tipos quando comparo valores numericos (como o CEP, por ex) armazenados em campos do tipo string como o char que uso nesse caso?

 

Eu fiz a comparação direta de string contra string, usando >= e <= e o SQL entendeu como campo numerico, ou não? A comparação por string tem o mesmo efeito?

 

Grande abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao entende nao

 

Ele compara strings se voce nao converter

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for sql server ou um outro sgdb, normalmente ele identifica o tipo de dados e trata sozinho, mas é sempre recomendado tratar antes de jogar na query pra evitar dor de cabeça

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao entende nao

 

Ele compara strings se voce nao converter

Como eu faria a conversão do CEP para um numero na query SQL?

 

Da forma que está neste momento, sem a conversão, os resultados obtidos são perfeitos. Não sei se é coincidência com os CEPs que utilizei nos testes, mas todos os intervalos foram encontrados com precisão.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

no asp você tenta com clng(cep)

 

caso dê algum erro de estouro tente direto no sql, se for sql server procure pelas funções CAST e CONVERT

Compartilhar este post


Link para o post
Compartilhar em outros sites

no asp você tenta com clng(cep)

 

caso dê algum erro de estouro tente direto no sql, se for sql server procure pelas funções CAST e CONVERT

obrigado Jonathan,

 

No ASP eu já tinha convertido utilizando Cdbl, mas poderia ser Csng, pois intervalo é pequeno. No SQL eu tentei com CAST e CONVERT e não tinha dado certo. Precisava encontrar um exemplos práticos do uso destas funções adequadas ao meu problema. Não parece ser complicado, pelo contrário. Vou continuar pesquisando. Apesar de estar funcionando bem o sistema agora, quero entender e aprender a maneira correta de se fazer, sem gambiarras.

 

Abs

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.