ATUALIZAR CAMPOS LOGICA
Private Sub cboIdentificacao_Click()
Call CarregarDataeQTD
End Sub
e na consulta vc faz assim
e na consulta so altere a query assim
sSQL = [Ô]SELECT dtentrada, dtretirada, qtd FROM RAMALQTD WHERE identificacao = [ô][Ô] & cboIdentificacao.List(cboIdentificacao.ListIndex) & [Ô][ô][Ô]
RSRamalItens.Open sSQL, CNN, adOpenDynamic, adLockOptimistic
veja agora se funciona
use o evento CLICK do combo para ver se vai dar certo!
Porém, notei que o SELECT está apenas listando um único item.
Preciso que seja pesquisado dois itens em uma mesma tabela: [Ô]Se no cboIdentificação = [Ô]Loja 208[Ô] e o CodProduto = [Ô]00001[Ô] ele vai carregar os itens. Assim tentei usar o comando select da seguinte forma:
sSQL = [Ô]SELECT RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD FROM RAMALQTD WHERE RAMALQTD.Identificacao = [ô][Ô] & cboIdentificacao.List(cboIdentificacao.ListIndex) & [Ô][ô] AND RAMALQTD.CodProduto = [ô][Ô] & txtCodigo.Text & [Ô][ô][Ô]
Fiz um debug.print sSql e me retornou dessa forma:
Citação:SELECT RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD FROM RAMALQTD WHERE RAMALQTD.Identificacao = [ô]LOJA 208[ô] AND RAMALQTD.CodProduto = [ô]00000000000000000003[ô]
Segue o Código para carregar os dados....
Sub CarregarDataeQTD()
sSQL = [Ô]SELECT RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD FROM RAMALQTD WHERE RAMALQTD.Identificacao = [ô][Ô] & cboIdentificacao.List(cboIdentificacao.ListIndex) & [Ô][ô] AND RAMALQTD.CodProduto = [ô][Ô] & txtCodigo.Text & [Ô][ô][Ô]
RSRamalItens.Open sSQL, CNN, adOpenDynamic, adLockOptimistic
With RSRamalItens
If (.BOF = True And .EOF = True) Then
.Close
txtDTEntradaR.Text = [Ô][Ô]
txtDTRetiradaR.Text = [Ô][Ô]
txtQTDR.Text = [Ô][Ô]
Exit Sub
Else
txtDTEntradaR.Text = VBA.Format(RSRamalItens([Ô]dtentrada[Ô]), [Ô]dd/MM/yyyy[Ô])
txtDTRetiradaR.Text = VBA.Format(RSRamalItens([Ô]dtretirada[Ô]), [Ô]dd/MM/yyyy[Ô])
txtQTDR.Text = RSRamalItens([Ô]qtd[Ô])
RSRamalItens.Close
Set RSRamalItens = Nothing
End If
End With
End Sub
Sinceramente, não vi o meu erro...
Mas, sua tabela não tem chave primária
e o Código é varchar.
Código=000000000000001.
Vai ter um pouco de dor de cabeça com esta tabela.
sSQL = [Ô]SELECT RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD FROM RAMALQTD WHERE RAMALQTD.Identificacao = [ô][Ô] & cboIdentificacao.List(cboIdentificacao.ListIndex) & [Ô][ô] AND RAMALQTD.CodProduto Like[ô]%[Ô] & txtCodigo.Text & [Ô][ô][Ô]
faz um teste ai pela minha logica se em código você colocar apenas um 3 ele será localizado
1º. A query de Consulta
sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]SELECT [Ô]
sSQL = sSQL & [Ô] RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD [Ô]
sSQL = sSQL & [Ô] FROM RAMALQTD [Ô]
sSQL = sSQL & [Ô] WHERE RAMALQTD.Identificacao = [ô][Ô] & cboIdentificacao.List(cboIdentificacao.ListIndex) & [Ô][ô][Ô]
sSQL = sSQL & [Ô] AND RAMALQTD.CodProduto = [ô][Ô] & txtCodigo.Text & [Ô][ô][Ô]
Para localizar o CodProduto [ô]00000000000000000003[ô] AND Identificacao = [ô]LOJA 208[ô] vai retornar somente uma linha mesmo
2º. Seu cadastro baseiasse em uma Identificação para vários produtos, então sua query vai retornar somente 1 item mesmo!
-------------------------------------------------------------------------------------------------
Detalhes Estrutura da Tabela
CODIGO |CODPRODUTO |IDENTIFICACAO
1 |3 |LOJA 208
1 |2 |LOJA 471
2 |1 |LOJA 208
3 |2 |LOJA 208
2 |2 |LOJA 471
Querys:
[ô]Listar por IDENTIFICACAO
sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]SELECT [Ô]
sSQL = sSQL & [Ô] RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD [Ô]
sSQL = sSQL & [Ô] FROM RAMALQTD [Ô]
sSQL = sSQL & [Ô] WHERE RAMALQTD.IDENTIFICACAO = [ô]LOJA 208[ô]
Resultado:
CODIGO |CODPRODUTO |IDENTIFICACAO
1 |3 |LOJA 208
2 |1 |LOJA 208
3 |2 |LOJA 208
[ô]Listar por CODIGO PRODUTO
sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]SELECT [Ô]
sSQL = sSQL & [Ô] RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD [Ô]
sSQL = sSQL & [Ô] FROM RAMALQTD [Ô]
sSQL = sSQL & [Ô] WHERE RAMALQTD.CODPRODUTO = [ô]2[ô]
Resultado:
CODIGO |CODPRODUTO |IDENTIFICACAO
1 |2 |LOJA 471
3 |2 |LOJA 208
2 |2 |LOJA 471
[ô]Listar por CODIGO
sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]SELECT [Ô]
sSQL = sSQL & [Ô] RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD [Ô]
sSQL = sSQL & [Ô] FROM RAMALQTD [Ô]
sSQL = sSQL & [Ô] WHERE RAMALQTD.CODIGO = [ô]1[ô]
Resultado:
CODIGO |CODPRODUTO |IDENTIFICACAO
1 |3 |LOJA 208
1 |2 |LOJA 471
[ô]Listar por CODIGO PRODUTO ou IDENTIFICACAO
sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]SELECT [Ô]
sSQL = sSQL & [Ô] RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD [Ô]
sSQL = sSQL & [Ô] FROM RAMALQTD [Ô]
sSQL = sSQL & [Ô] WHERE RAMALQTD.IDENTIFICACAO = [ô]LOJA 471[ô] OR RAMALQTD.CODPRODUTO = [ô]1[ô]
sSQL = sSQL & [Ô] GROUP BY RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD
Resultado:
CODIGO |CODPRODUTO |IDENTIFICACAO
1 |2 |LOJA 471
2 |1 |LOJA 208
2 |2 |LOJA 471
Esses são exemplos para você entender que a maneira com que esta fazendo não esta errada, mas esta inconsistente para o que você pretende
Repare na ultima query de consulta é basecamente a que você fez, porém não usei o AND e sim o OR e agrupei os resultados, pois poderia retornar mais de uma linha para o mesmo registro!
Qualquer duvida poste ai
Espero ter ajudado
Sobre a questão do VarChar no campo código:
Utilizo, pois a autonumeração é realizada por meio de código; a chave primária é indexada via código por conveniência.
Sobre a Query sSQL:
A intenção mesmo, ao filtrar o nome presente no cboIdentificação + (and) txtCodigo é de apresentar um único resultado mesmo, porém quando altero o nome do cboIdentificacao (que tem o produto cadastrado com o referido código), os dados não são carregados nos textboxs.
Filman, cito esta parte da sua colaboração:
Citação:
1º. A query de Consulta
sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]SELECT [Ô]
sSQL = sSQL & [Ô] RAMALQTD.Identificacao, RAMALQTD.CodProduto, RAMALQTD.DTEntrada, RAMALQTD.DTRetirada, RAMALQTD.QTD [Ô]
sSQL = sSQL & [Ô] FROM RAMALQTD [Ô]
sSQL = sSQL & [Ô] WHERE RAMALQTD.Identificacao = [ô][Ô] & cboIdentificacao.List(cboIdentificacao.ListIndex) & [Ô][ô][Ô]
sSQL = sSQL & [Ô] AND RAMALQTD.CodProduto = [ô][Ô] & txtCodigo.Text & [Ô][ô][Ô]
Para localizar o CodProduto [ô]00000000000000000003[ô] AND Identificacao = [ô]LOJA 208[ô] vai retornar somente uma linha mesmo
2º. Seu cadastro baseiasse em uma Identificação para vários produtos, então sua query vai retornar somente 1 item mesmo!
é exatamente o que quero: Um único resultado para o produto do código 00000000000000000003 conforme cada seleção de Ramal. Assim, a medida que eu alterar o nome no cboIdentificacao, ele buscará e preencherá os textboxs com os dados referentes ao código do produto conforme o ramal (cboidentificacao).
O que tá acontecendo é que a medida que altero o nome no cboidentificacao, ele preenche somente os dados do primeiro nome selecionado. Se seleciono outro nome (que sei que tem o mesmo produto cadastrado Cod) ele não carrega os dados....
[txt-color=#e80000]Como fazer?[/txt-color]
Mas deu para compreender a questão da alteração dos nomes no cboIdentificacao e a necessidade que, quando essa alteração acontecesse, os campos textboxs se preencherem com os respectivos dados?
Conto com vocês, que estou pesquisando em um site especializado em sql, e tudo o que eu encontro está de acordo plenamente com a query que postei.... estou sem saber...
se seleciono a loja 208 ele preenche... se seleciono a loja 471 fica em branco, snedo que tem produto cadastrado com esse código