Como passar String como parametro para filtro?

Delphi

SQLite

18/12/2020

Olá, estou com uma dificuldade, precisopassar uma string como parametro, mas não estou conseguindo, a situação é a seguinte.
O Edit recebe o codigo (codigo esta em varchar), que é chave
Um Label ao lado recebe a descrição do codigo em questão
Tenho outros campos que fiz o mesmo procedimento, onde eles deram 100% certo, pois são campos LargeInt, este é o unico que não esta em funcionamento, como passo string como parametro e localizo a descrição dela?
Utilizo SQLite e Delphi 10.2 Tokyo

Deste ja agradeço
Ramboli

Ramboli

Curtidas 0

Melhor post

Natanael Ferreira

Natanael Ferreira

18/12/2020

Olá, estou com uma dificuldade, precisopassar uma string como parametro, mas não estou conseguindo, a situação é a seguinte.
O Edit recebe o codigo (codigo esta em varchar), que é chave
Um Label ao lado recebe a descrição do codigo em questão
Tenho outros campos que fiz o mesmo procedimento, onde eles deram 100% certo, pois são campos LargeInt, este é o unico que não esta em funcionamento, como passo string como parametro e localizo a descrição dela?
Utilizo SQLite e Delphi 10.2 Tokyo

Deste ja agradeço


Se puder, poste seu código para analisarmos
GOSTEI 2

Mais Respostas

Nomad

Nomad

18/12/2020

Verifique se isso ajuda na sua situação:

https://www.andrecelestino.com/delphi-trabalhando-com-parametros-na-query/
GOSTEI 1
Ramboli

Ramboli

18/12/2020

Verifique se isso ajuda na sua situação:

https://www.andrecelestino.com/delphi-trabalhando-com-parametros-na-query/



Huum, é muito util, muito obrigado, mas infelizmente não resolveu na situação, mas agradeço pelo link
GOSTEI 1
Ramboli

Ramboli

18/12/2020

Olá, estou com uma dificuldade, precisopassar uma string como parametro, mas não estou conseguindo, a situação é a seguinte.
O Edit recebe o codigo (codigo esta em varchar), que é chave
Um Label ao lado recebe a descrição do codigo em questão
Tenho outros campos que fiz o mesmo procedimento, onde eles deram 100% certo, pois são campos LargeInt, este é o unico que não esta em funcionamento, como passo string como parametro e localizo a descrição dela?
Utilizo SQLite e Delphi 10.2 Tokyo

Deste ja agradeço


Se puder, poste seu código para analisarmos



Opa, eu consegui resolver, fiz assim

xQry.SQL.Text := 'SELECT CODIGO, DESCRICAO FROM TABELA WHERE CODIGO LIKE :CODIGO';
xQry.ParamByName('CODIGO').AsString := '%' +EditCod.Text+ '%';


funcionou, vi este exemplo em uma das minhas pesquisas, porem não entendi como funciona e por que funciona, já que se eu colocar o '%' so antes de passar o valor do edit nao funciona e se colocar depois tambem não, por que tem que ser em conjunto? E pq o Like funcionou? Sou meio iniciante então não sei de muita coisa

agradeço a atenção e o apoio, grande sucesso a todos

"Uma jaguatirica machucada não deixa de ser uma jaguatirica "
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

18/12/2020

Que bom que funcionou.

O operador Like é usado em pesquisas SQL que filtram strings e o '%' é um sinal usado para definir a posição deste filtro parcial.

Exemplos práticos do uso do Like com '%':

LIKE 'Juca%' = Qualquer string que iniciem com Juca.
LIKE '%Silva' = Qualquer string que terminem com Silva.
LIKE '%Santos%' = Qualquer string que tenha Santos em qualquer posição.


Veja o link pra melhor entendimento: https://www.devmedia.com.br/operador-like-em-consultas-sql-no-delphi/26995
GOSTEI 1
Nomad

Nomad

18/12/2020

Cara, não sei se é realmente sua dúvida... mas tem um artigo explicando o like.

https://www.devmedia.com.br/operador-like-em-consultas-sql-no-delphi/26995
GOSTEI 0
Ramboli

Ramboli

18/12/2020

Que bom que funcionou.

O operador Like é usado em pesquisas SQL que filtram strings e o '%' é um sinal usado para definir a posição deste filtro parcial.

Exemplos práticos do uso do Like com '%':

LIKE 'Juca%' = Qualquer string que iniciem com Juca.
LIKE '%Silva' = Qualquer string que terminem com Silva.
LIKE '%Santos%' = Qualquer string que tenha Santos em qualquer posição.


Veja o link pra melhor entendimento: https://www.devmedia.com.br/operador-like-em-consultas-sql-no-delphi/26995



Entendi, muito obrigado, vejo que da forma que o utilizei me pode ser um problema talvez, por que o codigo numerico esta sendo armazenado em um campo string, dessa forma caso seja selecionado digamos que o codigo 14, existe a possibilidade de chamar a descrição do codigo 4? Já que da forma que utilizei ele busca o numero em qualquer possição, existe algo que faça ele buscar exatamente o 14 (exemplo) sem passar pelo 4?

Muito obrigado pelo link, realmente, a programação é algo que vc constantemente se aprende, muito obrigado pela ajuda
GOSTEI 0
Ramboli

Ramboli

18/12/2020

Cara, não sei se é realmente sua dúvida... mas tem um artigo explicando o like.

https://www.devmedia.com.br/operador-like-em-consultas-sql-no-delphi/26995



Muito obrigado, toda fonte de conhecimento é bem vinda, muito obrigado por fazer parte do meu crescimento como profissional, amador, mas profissionalmente amador kk
GOSTEI 1
Natanael Ferreira

Natanael Ferreira

18/12/2020

Que bom que funcionou.

O operador Like é usado em pesquisas SQL que filtram strings e o '%' é um sinal usado para definir a posição deste filtro parcial.

Exemplos práticos do uso do Like com '%':

LIKE 'Juca%' = Qualquer string que iniciem com Juca.
LIKE '%Silva' = Qualquer string que terminem com Silva.
LIKE '%Santos%' = Qualquer string que tenha Santos em qualquer posição.


Veja o link pra melhor entendimento: https://www.devmedia.com.br/operador-like-em-consultas-sql-no-delphi/26995



Entendi, muito obrigado, vejo que da forma que o utilizei me pode ser um problema talvez, por que o codigo numerico esta sendo armazenado em um campo string, dessa forma caso seja selecionado digamos que o codigo 14, existe a possibilidade de chamar a descrição do codigo 4? Já que da forma que utilizei ele busca o numero em qualquer possição, existe algo que faça ele buscar exatamente o 14 (exemplo) sem passar pelo 4?

Muito obrigado pelo link, realmente, a programação é algo que vc constantemente se aprende, muito obrigado pela ajuda


O ideal é que você troque o tipo de dados do seu campo de String pra um tipo numérico (já que o conteúdo sempre será numérico).

Mas se quiser manter da maneira com está, para fazer uma busca exata em um campo string basta remover o caracter '%' do parâmetro:

xQry.SQL.Text := 'SELECT CODIGO, DESCRICAO FROM TABELA WHERE CODIGO LIKE :CODIGO';
xQry.ParamByName('CODIGO').AsString := EditCod.Text; // removi os caracteres %
GOSTEI 1
Ramboli

Ramboli

18/12/2020

Que bom que funcionou.

O operador Like é usado em pesquisas SQL que filtram strings e o '%' é um sinal usado para definir a posição deste filtro parcial.

Exemplos práticos do uso do Like com '%':

LIKE 'Juca%' = Qualquer string que iniciem com Juca.
LIKE '%Silva' = Qualquer string que terminem com Silva.
LIKE '%Santos%' = Qualquer string que tenha Santos em qualquer posição.


Veja o link pra melhor entendimento: https://www.devmedia.com.br/operador-like-em-consultas-sql-no-delphi/26995



Entendi, muito obrigado, vejo que da forma que o utilizei me pode ser um problema talvez, por que o codigo numerico esta sendo armazenado em um campo string, dessa forma caso seja selecionado digamos que o codigo 14, existe a possibilidade de chamar a descrição do codigo 4? Já que da forma que utilizei ele busca o numero em qualquer possição, existe algo que faça ele buscar exatamente o 14 (exemplo) sem passar pelo 4?

Muito obrigado pelo link, realmente, a programação é algo que vc constantemente se aprende, muito obrigado pela ajuda




O ideal é que você troque o tipo de dados do seu campo de String pra um tipo numérico (já que o conteúdo sempre será numérico).

Mas se quiser manter da maneira com está, para fazer uma busca exata em um campo string basta remover o caracter '%' do parâmetro:

xQry.SQL.Text := 'SELECT CODIGO, DESCRICAO FROM TABELA WHERE CODIGO LIKE :CODIGO';
xQry.ParamByName('CODIGO').AsString := EditCod.Text; // removi os caracteres %


Opa, infelizmente vou precisar manter o tipo do campo, meus superiores criaram desta forma para poder tratar lá na frente, não sei exatamente como e o porque kkk

xQry.SQL.Text := 'SELECT CODIGO, DESCRICAO FROM TABELA WHERE CODIGO LIKE :CODIGO';
xQry.ParamByName('CODIGO').AsString := EditCod.Text; // removi os caracteres %


desta forma eu já testei, e infelizmente assim não tras nenhum resultado, se eu filtrar pelos outros campos chaves ele apenas carrega o primeiro registro da tabela, com os dois "%" eu consegui resolver, só não sei se pode causar erro lá pra frente

Mas muito obrigado pela ajuda, desejo muito sucesso pro senhor e um feliz natal e ano novo, abraços

GOSTEI 0
Claudio Andrade

Claudio Andrade

18/12/2020

Veja se funciona dessa forma

xQry.SQL.Text := Format('SELECT CODIGO, DESCRICAO FROM TABELA WHERE CODIGO LIKE %s', QuotedStr(EditCod.Text));

Sugiro que revise a forma de fazer sua consulta porque a media que o banco for sendo alimentado, vai ficar extremamente lento o retorno dos dados da forma que está fazendo.

Abraço
GOSTEI 1
Ramboli

Ramboli

18/12/2020

Veja se funciona dessa forma

xQry.SQL.Text := Format('SELECT CODIGO, DESCRICAO FROM TABELA WHERE CODIGO LIKE %s', QuotedStr(EditCod.Text));

Sugiro que revise a forma de fazer sua consulta porque a media que o banco for sendo alimentado, vai ficar extremamente lento o retorno dos dados da forma que está fazendo.

Abraço



Opa, tudo certo?
A tabela em questão não é exatamente a de cliente, é uma tabela que ja vai ter os registros pré preenchidos, são mais ou menos 10 registros nesta tabela, não vai ser possivel cadastrar nela.
Mas muito obrigado pela ajuda, revisei aqui e mudei o banco, desta forma não acontecerá mais problemas
Estou muito grato pela ajuda de todos
Abraços e sucesso a todos!
GOSTEI 0
POSTAR