KEYPRESS
faz assim:
t+
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyReturn
If Text1.Text <> "" Then
Dim tb As String
tb = "select Descricao, Valor from " _
& "tbmercadoria where Codigo like '" & txtdes.Text & "%'"
Set tbsql = con.Execute(tb)
If Not tbsql.EOF Then 'Nao coloquei em loop, pois acho que só existe uma marcadoria
txtdes.Text = tbsql("descricao")
txtval.Text = tbsql("valor")
Else
MsgBox ("Mercadoria não cadastrada")
End If
Else
Text1.SetFocus
End If
End Select
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then KeyAscii = 0
End Sub
t+
No exemplo que postei não deu certo?
Silvio o seu deu certo ele deixa digitar, mas ele não consulta no banco e mercadoria que digito ele da a mensagem de não cadastrada.
No keypress da certo mas acho que tenho que mexer em alguma propriedade não me lembro direito.
No keypress da certo mas acho que tenho que mexer em alguma propriedade não me lembro direito.
DENISSON,
Não entendi ainda qual o seu problema. O que vc está digitando na textbox? Tá saindo com TAB ou ENTER?
Se der coloca um projeto com um form e sua textbox pra download e detalha melhor a sua dúvida.
At,
Citação:Ele aparece escrito (tab) e não faz a pesquisa.
Não entendi ainda qual o seu problema. O que vc está digitando na textbox? Tá saindo com TAB ou ENTER?
Se der coloca um projeto com um form e sua textbox pra download e detalha melhor a sua dúvida.
At,
Em função disso (TAB) ou (ENTER) estou postando dois exemplos testados e funcionando, bastando apenas o DENISSON adaptar a necessidade dele, inclusive comentado.
obs.: para o Validate funcionar legal, tem que colocar a propriedade do Form (KeyPreview = True). E no caso do botão fechar (a propriedade CausesValidation = False, pois se não fizer isso, se o foco estiver no campo com validante e clicar no botão fechar, vai ficar pedindo para digitar algo, se tiver com crÃÂÂtica.
para o Validate, no form.
Aqui vem os exemplos testados:
KeyPress do TextBox (txtDes)
----------------------------
Validate do (txtDes)
--------------------
'Aqui no validete não precisa se preocupar com o SetFocus para outro campo, pois conforme configuração do KeyPreview do Form, os campos serão saltados automaticamente.
Espero que entenda a lógica.
obs.: para o Validate funcionar legal, tem que colocar a propriedade do Form (KeyPreview = True). E no caso do botão fechar (a propriedade CausesValidation = False, pois se não fizer isso, se o foco estiver no campo com validante e clicar no botão fechar, vai ficar pedindo para digitar algo, se tiver com crÃÂÂtica.
para o Validate, no form.
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
SendKeys "{TAB}"
End If
End Sub
Aqui vem os exemplos testados:
KeyPress do TextBox (txtDes)
----------------------------
Private Sub txtDes_KeyPress(KeyAscii As Integer)
'Só será acionado a pesquisa se a tecla pressionada for [ENTER]
If KeyAscii = vbKeyReturn Then
If Not Me.txtDes.Text = Empty Then
'Aqui você coloca seu código para pesquisa
If UCase(Me.txtDes.Text) = "PIOLHO" Then
'Se achou seu produto, exibe na TextBox
MsgBox "Piolho foi encontrado, favor limpar sua cabeça", vbCritical, Me.Caption
Else
'Se não achou, diz que produto não foi encontrado
MsgBox "Parabéns sua cabeça está limpa", vbInformation, Me.Caption
End If
Else
'Só deixa pesquisar se for informado o código do produto
MsgBox "Informe o Código do Produto", vbCritical, Me.Caption
End If
End If
End Sub
Validate do (txtDes)
--------------------
Private Sub txtDes_Validate(Cancel As Boolean)
'Neste evento será acionado a pesquisa quando a tecla pressionada for [ENTER] ou [TAB]
If Not Me.txtDes.Text = Empty Then
'Aqui você coloca seu código para pesquisa
If UCase(Me.txtDes.Text) = "PIOLHO" Then
'Se achou seu produto, exibe na TextBox
MsgBox "Piolho foi encontrado, favor limpar sua cabeça", vbCritical, Me.Caption
Cancel = True
Else
'Se não achou, diz que produto não foi encontrado
MsgBox "Parabéns sua cabeça está limpa", vbInformation, Me.Caption
End If
Else
'Só deixa pesquisar se for informado o código do produto
MsgBox "Informe o Código do Produto", vbCritical, Me.Caption
Cancel = True
End If
End Sub
'Aqui no validete não precisa se preocupar com o SetFocus para outro campo, pois conforme configuração do KeyPreview do Form, os campos serão saltados automaticamente.
Espero que entenda a lógica.
No evento validate ele não faz nada nem chega a entrar no validate, no keypress quando eu aperto o enter ele aparece escrito na frente a palavra (tab). anexei ele ai.
Tópico encerrado , respostas não são mais permitidas