Notifications
Clear all

BUSCAR SELECT WHERE EM MAIS DE UM LIKE

6 Posts
3 Usuários
0 Reactions
2,331 Visualizações
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Atualmente uso esse código para fazer uma busca no meu banco de dados a partir de um critério.

ComandoSQL2 = "select * from TB_TABELA where CAMPOA like '" & ID & "' "

TABELA ------------------

como posso fazer para que ele me considere dois critérios de busca para me trazer um resultado apenas?

CAMPO A --------------- CAMPO B --- ID
1020 ------------------------3030 ----- 1
1030 ------------------------3030 ----- 1

Seria algo assim.. eu busco o campo A e o Campo B e retorno o campo C no meu select.

andei estudando mas não consegui resultado, me parece q seria apenas acrescentar um and no código mas não consegui fazer com q ele considere o resultado da coluna C.

 
Postado : 20/03/2018 10:12 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

wfranca,

Bom dia!

Acredito que seja apenas acrescentar um And, tipo:

And CAMPOB like '" & ID & "' "
 
Postado : 21/03/2018 7:07 am
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Wagner, obrigado pela resposta.

tentei assim, mas não tive exito..

 Dim ComandoSQL As String

 Dim ID As String

 ID1 = 1010
 ID1 = TXT_MATERIAL

ComandoSQL = "select * from TB_MATERIAL where MATERIAL like '" & ID1 & "' and where GRUPO like '" & ID & "' "

Set consulta = banco.OpenRecordset(ComandoSQL)


CONSULTA("ID") = ME.TXT_ID

...

A consulta deve me retornar o valor do campo C quando eu fizer o select atribuindo o campo A e o Campo B

CAMPOA -------- CAMPOB ------------- CAMPOC
1010 -------- MATERIAL1 ----------- 1
2020 -------- MATERIAL2 ------------2
2020 -------- MATERIAL2 ------------2

 
Postado : 21/03/2018 10:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu ainda não entendi o que deseja o que considera "atribuindo"?
Ao utilizar o "*" no select, todos os campos da tabela serão carregados no record set; se CampoC for um campo da tabela, ele está "presente" . ou não ?
Ao inves de "like" não deveria utilzar "EQ" ou "="?

Disponibilize seu modelo com alguns dados (mesmo que ficticios) indicando manualmente o que espera de retorno.

 
Postado : 21/03/2018 1:02 pm
(@wfranca)
Posts: 297
Honorable Member
Topic starter
 

Reinaldo / Wagner.

Anexei um arquivo de exemplo pra ficar melhor o entendimento.

 
Postado : 21/03/2018 4:45 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Observação: A biblioteca "Microsoft DAO X.X Object library" deve estar habilitada (Ferramentas --> Referencias....)
Vamos por partes:
Sua tabela modelo e composta por quatro campos/fields; sendo ID e ITEM --> Numerico; Material e Grupo --> String
Ao montar um SQL deve-se levar em conta o nome do Campo e seu tipo. Não nomeie Variáveis com nome de campos da tabela, isso pode induzir/produzir erros.
Para itens numéricos não se utiliza Like e preferivel utilizar o "=" (igual/equal). Itens auto numeração como o campo ID, se chave primaria da tabela, não devem ser alterados por consulta.

Em consultas SQL as expressões com strings mais usadas são as checagens para verificação de coincidências de pares, usando o operador LIKE combinado com os caracteres especiais porcentagem (%) e sublinhado (_). O caractere % é utilizado para indicar a posição (no início, em qualquer posição ou no final) que um conteúdo será procurado no valor string do campo especificado

https://www.devmedia.com.br/operador-like-em-consultas-sql-no-delphi/26995
Uma string simples select pode ser:

Private Sub CommandButton1_Click()
Dim ComandoSQL As String
Dim mI As String
 mI = Me.TXT_ITEM
   
ComandoSQL = "select * from TB_TESTE where Item = " & mI
     
'Chama a rotina que faz a conexão ao Banco de Dados
Call conecta
    
'Atribui a variável global do tipo Recorset, os comandos SQL que devem ser executados
Set consulta = Banco.OpenRecordset(ComandoSQL)

MsgBox "O ID é: consulta.Fields(1)
End Sub

Utilizando 2 campos como "filtro"

Private Sub CommandButton1_Click()
Dim ComandoSQL As String
Dim mI As String, mAt As String
 
mI = Me.TXT_ITEM
mAt = Me.TXT_ID
   
'ComandoSQL = "select * from TB_TESTE where Item = " & mI
ComandoSQL = "select * from TB_TESTE where Item = " & mI & " and Material like '*" & mAt & "*'"
     
'Chama a rotina que faz a conexão ao Banco de Dados
Call conecta
    
'Atribui a variável global do tipo Recorset, os comandos SQL que devem ser executados
Set consulta = Banco.OpenRecordset(ComandoSQL)

MsgBox consulta.Fields(3)
End Sub
 
Postado : 22/03/2018 5:29 am