DUVIDA-LÓGICA

 Tópico anterior Próximo tópico Novo tópico

DUVIDA-LÓGICA

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#498885 - 27/12/2021 16:42:28

FUTURA
.
Cadast. em:Maio/2004


Última edição em 27/12/2021 20:01:54 por FUTURA

Pessoal,  em uma busca em dois campos, pesquiso por um, se achei ok, senão busco no outro, porém o primeiro, só busco se for numérico, montei a seguinte lógica:

se campo é numérico busca
se não achou
   busca pelo segundo
se campo não é numérico
busca só pelo segundo

Notem que pela condição da pesquisa, repito um bloco sql que seria pelo segundo campo, tentei achar uma lógica para diminuir o código ou deixar mais limpo, alguma dica ?




#498886 - 27/12/2021 20:12:13

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


se definir o inicio da query fora das condições, e conforme a condição q cair concatena o campo e critério na query do inicio?
não entendi bem o q quer

Cada dia vejo surgirem novos []programadores[] de cdigo pronto aqui



#498887 - 27/12/2021 20:20:17

FUTURA
.
Cadast. em:Maio/2004


acho q com if no exemplo é mais fácil, como o primeiro campo pode ou não ser numérico, e só busco se ele for, tenho q testar com um IF. Com isso, a consulta pelo segundo campo pode ocorrer ou não, porém preciso repetir ela, e onde esta descrito buscasegundocampo é uma instrução sql com alguns campos e critérios, e eu repito o código duas vezes, funciona certinho, só estou vendo se tem uma lógica para enxugar o código.

if campoénumérico then
buscaprimeirocampo
if não achou
   buscasegundocampo
endif
else
buscasegundocampo
endif



#498888 - 27/12/2021 21:16:01

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
A lógica me parece ok, o que vai pegar é determinar se o campo é ou não numérico. Se for usar reflection e/ou Data Annotations, pode ficar um pouco lento. Se tiver o metadata da tabela, pode ser mais rápido, mas pra isso, vai precisar escrever o metadata de alguma forma e manter atualizado.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#498889 - 27/12/2021 21:16:37

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Tem a possibilidade de descrever a tabela e comparar.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#498897 - 28/12/2021 15:33:12

FUTURA
.
Cadast. em:Maio/2004


Essa rotina de select fica dentro de um for - next, percorre um list fazendo a pesquisa..  acho que não tem como fugir muito disso não..



#498898 - 28/12/2021 16:49:01

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Então não busca no banco, mas sim numa lista, isso?

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#498901 - 28/12/2021 21:30:05

FUTURA
.
Cadast. em:Maio/2004


Não,  os códigos estão em um list, vindos de um arquivo, ai percorro esse list em um for-next, verificando se o item existe no banco, buscando primeiro pelo ean, e depois pela referência.



#498905 - 29/12/2021 12:13:10

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Então tem sim procura no banco... e é dessa tabela do banco que você verifica o tipo de dados do campo.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#498916 - 29/12/2021 17:52:21

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 29/12/2021 17:56:56 por JABA

Se as funções de busca estão retornando valores boleanos, então uma possível refatoração ficaria mais ou menos assim:

    Public function VerificaCampos() as Boolean
        If isNumeric(campo) then return IIF(buscaprimeirocampo, true, buscasegundocampo)
        return buscasegundocampo
    End sub



_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



#498923 - 30/12/2021 10:15:21

FUTURA
.
Cadast. em:Maio/2004


Eu acho que criei uma confusão no exemplo citando campos, na vdd são as variáveis de busca. Detalhando melhor, eu importo um xml da nfe e jogo em um listview, na sequência disparo uma rotina que busca os produtos na base, essa busca é feita primeiro pelo ean e caso não encontre, faz pela referência, até ai normal... mas antes de fazer pelo ean, checo se ele é válido ou se é numérico, caso não seja, eu faço só a segunda busca, então, fica assim, caso seja válido busco por ele, se não encontrar busco pela referência, e caso ele não seja válido busco só pela referência, lembrando que essas buscas estão dentro de um for-next percorrendo o listview. Funciona muito bem, só estou procurando uma lógica para enxugar o código e eliminar a escrita da segunda busca, se é q existe.



 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário