none
Reiniciar um comando Infinitamente RRS feed

  • Pergunta

  • Olá pessoal, meu primeiro post no forum, hehehe

    Sou iniciante em programação e estou fazendo um trabalho em Vb.net e bando de dados Mysql, é apenas um form de consulta

    onde ele busca o valor digitado no textbox no bd e retorna dos valores em 2 labels.

    meu codigo funciona apenas na primeira pesquisa, apos isso ele não muda os labels e nem faz uma nova busca.

    queria que ele fizesse essa busca infinitamente. rsrsrsrsr.

    Queria tb ao final da pesquisa limpar o TextBox mas com o comando Clear eu não consigo digitar depois ele apaga sozinho.

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim DataSet1 As New DataSet
            If e.KeyCode = Keys.Enter Then
                Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
                Dim da As New MySqlDataAdapter(sql, conexao)
                conexao.Open()
                da.Fill(DataSet1, "mrs")
                Label2.DataBindings.Clear()
                Label7.DataBindings.Clear()
                Label2.DataBindings.Add("text", DataSet1, "bd.nome")
                Label7.DataBindings.Add("text", DataSet1, "bd.preco_venda")
                TextBox1.Clear()
                conexao.Close()
            End If
        End Sub

    sexta-feira, 13 de janeiro de 2017 13:14

Respostas

  • Olá, tenta assim:

       Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            If e.KeyCode = Keys.Enter Then
                Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
                Dim da As New MySqlDataAdapter(sql, conexao)
                conexao.Open()
                Reader = da.ExecuteReader
                While READER.Read()
                   Label2.Text = Reader.GetString("nome")
                   Label7.Text = Reader.GetString("preco_venda")
                End While
                TextBox1.Clear()
                conexao.Close()
            End If
        End Sub


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta Leandro Filipini sexta-feira, 13 de janeiro de 2017 14:50
    sexta-feira, 13 de janeiro de 2017 13:37
  • Ok, tenta alterar, usando MySqlCommand. Deixa assim:

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            If e.KeyCode = Keys.Enter Then
                Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
                Dim da As New MySqlCommand(sql, conexao)
                conexao.Open()
                Reader = da.ExecuteReader
                While READER.Read()
                   Label2.Text = Reader.GetString("nome")
                   Label7.Text = Reader.GetString("preco_venda")
                End While
                TextBox1.Clear()
                conexao.Close()
            End If
        End Sub


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta Leandro Filipini sexta-feira, 13 de janeiro de 2017 17:00
    sexta-feira, 13 de janeiro de 2017 15:39
  • Ah realmente, acabei nem me atentando a esse detalhe.

    Para consultar no momento que digitar o 13º dígito, pode fazer assim:

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
         If Textbox1.Text.Length = 13 Then   
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
            Dim da As New MySqlCommand(sql, conexao)
            conexao.Open()
            Reader = da.ExecuteReader
            While Reader.Read()
                Label2.Text = Reader.GetString("nome")
                Label7.Text = Reader.GetString("preco_venda")
            End While
            conexao.Close()
            TextBox1.Clear()
         End If 
    End Sub

    Ou se preferir pode colocar o código anterior no evento Click de um botão, fica a seu critério. Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    sexta-feira, 13 de janeiro de 2017 17:30
  • É estranho não estar pesquisando, mas se quer pesquisar toda a vez que pressiona o enter (quando estiver com o foco no TextBox1) você deve apenas substituir o If que faz a verificação da quantidade de dígitos. Seu código ficaria assim:

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
         If e.KeyCode = Keys.Enter Then   
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
            Dim da As New MySqlCommand(sql, conexao)
            conexao.Open()
            Reader = da.ExecuteReader
            While Reader.Read()
                Label2.Text = Reader.GetString("nome")
                Label7.Text = Reader.GetString("preco_venda")
            End While
            conexao.Close()
            TextBox1.Clear()
         End If 
    End Sub


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta Leandro Filipini sexta-feira, 13 de janeiro de 2017 18:24
    sexta-feira, 13 de janeiro de 2017 18:22
  • Leandro,

    Procure marcar como resposta, apenas a que resolveu o problema, afim de mantermos o fórum organizado.

    Seguindo com o seu problema, podemos fazer uma dupla verificação então. Se for pressionado enter e contiver números na textbox, então será pesquisado. Testa com esse código:

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
         If e.KeyCode = Keys.Enter AndAlso Not String.IsNullOrEmpty(TextBox1.Text) Then   
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
            Dim da As New MySqlCommand(sql, conexao)
            conexao.Open()
            Reader = da.ExecuteReader
            While Reader.Read()
                Label2.Text = Reader.GetString("nome")
                Label7.Text = Reader.GetString("preco_venda")
            End While
            conexao.Close()
            TextBox1.Clear()
         End If 
    End Sub


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    sexta-feira, 13 de janeiro de 2017 18:37

Todas as Respostas

  • Olá, tenta assim:

       Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            If e.KeyCode = Keys.Enter Then
                Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
                Dim da As New MySqlDataAdapter(sql, conexao)
                conexao.Open()
                Reader = da.ExecuteReader
                While READER.Read()
                   Label2.Text = Reader.GetString("nome")
                   Label7.Text = Reader.GetString("preco_venda")
                End While
                TextBox1.Clear()
                conexao.Close()
            End If
        End Sub


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta Leandro Filipini sexta-feira, 13 de janeiro de 2017 14:50
    sexta-feira, 13 de janeiro de 2017 13:37
  • Estou tentando rodar o codigo mas da erro

    Error    1    'ExecuteReader' is not a member of 'MySql.Data.MySqlClient.MySqlDataAdapter'. 

    Desde ja Obrigado

    sexta-feira, 13 de janeiro de 2017 15:08
  • Ok, tenta alterar, usando MySqlCommand. Deixa assim:

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            If e.KeyCode = Keys.Enter Then
                Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
                Dim da As New MySqlCommand(sql, conexao)
                conexao.Open()
                Reader = da.ExecuteReader
                While READER.Read()
                   Label2.Text = Reader.GetString("nome")
                   Label7.Text = Reader.GetString("preco_venda")
                End While
                TextBox1.Clear()
                conexao.Close()
            End If
        End Sub


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta Leandro Filipini sexta-feira, 13 de janeiro de 2017 17:00
    sexta-feira, 13 de janeiro de 2017 15:39
  • O código rodou, mas quando consulto novamente nada acontece :/

    sexta-feira, 13 de janeiro de 2017 17:00
  • Mas na segunda vez que busca, está consultando com outro código de barras, certo?

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    sexta-feira, 13 de janeiro de 2017 17:17
  • Caro André, o código dessa forma faz as consultas o problema que o textbox após a primeira consulta não me deixa digitar mais de um numero, preciso no minimo 13. Como posso proceder?

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
            Dim da As New MySqlCommand(sql, conexao)
            conexao.Open()
            Reader = da.ExecuteReader
            While Reader.Read()
                Label2.Text = Reader.GetString("nome")
                Label7.Text = Reader.GetString("preco_venda")
            End While
            conexao.Close()
            TextBox1.Clear()
        End Sub

    Desde já agradeço

    sexta-feira, 13 de janeiro de 2017 17:19
  • Ah realmente, acabei nem me atentando a esse detalhe.

    Para consultar no momento que digitar o 13º dígito, pode fazer assim:

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
         If Textbox1.Text.Length = 13 Then   
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
            Dim da As New MySqlCommand(sql, conexao)
            conexao.Open()
            Reader = da.ExecuteReader
            While Reader.Read()
                Label2.Text = Reader.GetString("nome")
                Label7.Text = Reader.GetString("preco_venda")
            End While
            conexao.Close()
            TextBox1.Clear()
         End If 
    End Sub

    Ou se preferir pode colocar o código anterior no evento Click de um botão, fica a seu critério. Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    sexta-feira, 13 de janeiro de 2017 17:30
  • André, após a primeira pesquisa que faz ok, após digitar ou outro código de barras ele não retorna outra pesquisa.

    como posso repetir esse processo toda vez que o Enter é acionado?

    estou muito gratificado pelo seu esforço em me ajudar, muito obrigado

    sexta-feira, 13 de janeiro de 2017 17:53
  • É estranho não estar pesquisando, mas se quer pesquisar toda a vez que pressiona o enter (quando estiver com o foco no TextBox1) você deve apenas substituir o If que faz a verificação da quantidade de dígitos. Seu código ficaria assim:

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
         If e.KeyCode = Keys.Enter Then   
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
            Dim da As New MySqlCommand(sql, conexao)
            conexao.Open()
            Reader = da.ExecuteReader
            While Reader.Read()
                Label2.Text = Reader.GetString("nome")
                Label7.Text = Reader.GetString("preco_venda")
            End While
            conexao.Close()
            TextBox1.Clear()
         End If 
    End Sub


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta Leandro Filipini sexta-feira, 13 de janeiro de 2017 18:24
    sexta-feira, 13 de janeiro de 2017 18:22
  • Estranho mesmo, percebi um erro que o leitor de codigo de barras manda 2 sinais de Enter.


    OU seja o segundo comando enter faz todo o procedimento novamente, e por não tem nenhum valor no textbox ele não realiza mais buscas, seguindo isso quando o a consulta não encontrar o dado no campo ela deve recomeçar tudo de novo
    sexta-feira, 13 de janeiro de 2017 18:25
  • Leandro,

    Procure marcar como resposta, apenas a que resolveu o problema, afim de mantermos o fórum organizado.

    Seguindo com o seu problema, podemos fazer uma dupla verificação então. Se for pressionado enter e contiver números na textbox, então será pesquisado. Testa com esse código:

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
         If e.KeyCode = Keys.Enter AndAlso Not String.IsNullOrEmpty(TextBox1.Text) Then   
            Dim conexao As New MySqlConnection("server=localhost;User Id=root;password=1234;Persist Security Info=True;database=bd;Convert Zero Datetime=True")
            Dim Reader As MySqlDataReader
            Dim sql As String = "SELECT * FROM produto where cod_barras='" & TextBox1.Text & "'"
            Dim da As New MySqlCommand(sql, conexao)
            conexao.Open()
            Reader = da.ExecuteReader
            While Reader.Read()
                Label2.Text = Reader.GetString("nome")
                Label7.Text = Reader.GetString("preco_venda")
            End While
            conexao.Close()
            TextBox1.Clear()
         End If 
    End Sub


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    sexta-feira, 13 de janeiro de 2017 18:37
  • André, Funcionou.!!!!!

    o fato de não estar pesquisando repetidamente, era que o textbox estava com multiple lines marcado.

    De resto tudo funcionando

    Muito Obrigado!

    sexta-feira, 13 de janeiro de 2017 19:57