none
Adicionar produto no DataGridView RRS feed

  • Pergunta

  • Tenho o seguinte problema tenho um TextBox que quando digito o codigo de barras ele puxa o Produto e Atribui ao DataGridView até ai ta beleza mas quando adiciono outro codigo de barras ao em vez de ele adicionar no DataGredView ele subistitui o que eu já tinha adicionado. O codigo que estou usando:
    Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged
            If TextBox6.Text = "" Then
            Else
                Dim comandosql As String
                Conexaobd.Open()
                comandosql = "SELECT nome, preco, fornecedor, idproduto FROM produto WHERE nome LIKE '" & TextBox6.Text & "%'  ORDER BY nome asc;"
                Dim da As New MySqlDataAdapter(comandosql, Conexaobd)
                Dim ds As New DataSet
                If da.Fill(ds) Then
                    DataGridView1.DataSource = ds.Tables(0)
                End If
                Conexaobd.Close()
                Conexaobd.Dispose()
            End If
        End Sub

    • Editado johnwesl quinta-feira, 19 de janeiro de 2012 10:37
    quinta-feira, 19 de janeiro de 2012 10:36

Respostas

  • Desculpa usei c#, aki vai em vb.net

    Private Sub button2_Click(sender As Object, e As EventArgs)
    
    
    	Dim query As String = "Select * From Table_Aluno Where ID =@ID"
    
    	Dim conecao As New OleDbConnection()
    
    	conecao.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data 
                         Source=C:\Users\Levi\Documents\Database_Desenvolvimento.accdb"
    
    
    
    	Dim comando As New OleDbCommand()
    
    	comando.CommandText = query
    
    	comando.CommandType = CommandType.Text
    
    	comando.Connection = conecao
    
    	Try
    
    
    		conecao.Open()
    
    		comando.Parameters.AddWithValue("@ID", textBox1.Text)
    
    		Dim ler As OleDbDataReader = comando.ExecuteReader()
    
    		While ler.Read()
    
    
    
    			dataGridView1.Rows.Add(ler(0).ToString(), ler(1).ToString(), ler(2).ToString())
    		End While
    
    
    		ler.Close()
    
    	Catch ex As OleDbException
    
    
    
    		MessageBox.Show(ex.Message.ToString())
    	Finally
    
    		conecao.Close()
    	End Try
    
    End Sub


    One word frees us of all the weight and pain of life: that word is love.
    quinta-feira, 19 de janeiro de 2012 12:06
    Moderador

Todas as Respostas

  • Eu nunca usei DATASET nem ADO.NET, quando comecei programar já existiam outras tecnologias.

    Mas Creio que se você declarar isso.

      Dim ds As New DataSet
    

    Vai dar tudo certo.

     

     

    Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged
            If TextBox6.Text = "" Then
            Else
                Dim comandosql As String
                Conexaobd.Open()
                comandosql = "SELECT nome, preco, fornecedor, idproduto FROM produto WHERE nome LIKE '" & TextBox6.Text & "%'  ORDER BY nome asc;"
                Dim da As New MySqlDataAdapter(comandosql, Conexaobd)
              
                If da.Fill(ds) Then
                    DataGridView1.DataSource = ds.Tables(0)
                End If
                Conexaobd.Close()
                Conexaobd.Dispose()
            End If
        End Sub
    


     


    Artigos e Dicas VB.NET, C#, SQL, Report viewer e WPF
    @PauloHDeSousa
    quinta-feira, 19 de janeiro de 2012 10:46
  • @Johnwest

    como tu estas a fazer, ele vai sempre limpar o que existe no datagridview. Voce precisa do metodo addnew. Este vai ser responsavel do novo registo. Vias ter de ter um datatable e um dataset. 

     

     


    One word frees us of all the weight and pain of life: that word is love.
    quinta-feira, 19 de janeiro de 2012 11:37
    Moderador
  • Existe uma outra forma de se fazer isto. Nao sei se tu es iniciante. Mais aki vai um exemplo de como fazer sem usar dataset ou datatable.

    Eu uso comandos do oledb, a tecnica e a mesma so tens de trocar pra mysql comandos. 

    Com este exemplo tu vais de acrescentar as colunas manualmente no teu datagridview. Com o dataset ou table as colunas sao acrescentadas automaticamente. 

    Com este exemplo vais ter de editar e escrever as colunas, Nome, Preco, Fornecedor, Id Produto, depois e so fazer assim:

    private void button2_Click(object sender, EventArgs e)

            {

                string query ="Select * From Table_Aluno Where ID =@ID";

                OleDbConnection conecao = new OleDbConnection();

                conecao.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data                      Source=C:\Users\Levi\Documents\Database_Desenvolvimento.accdb";

     

                OleDbCommand comando = new OleDbCommand();

                comando.CommandText = query;

                comando.CommandType = CommandType.Text;

                comando.Connection = conecao;

                try

                {

                    conecao.Open();

                    comando.Parameters.AddWithValue("@ID", textBox1.Text);

                    OleDbDataReader ler = comando.ExecuteReader();

                    while (ler.Read())

                    {

                        dataGridView1.Rows.Add(ler[0].ToString(), ler[1].ToString(), ler[2].ToString());

                    }

                    ler.Close();               

                }

                catch(OleDbException ex)

                {

                  MessageBox.Show(ex.Message.ToString());

                }

                finally {conecao .Close();}

            }


    One word frees us of all the weight and pain of life: that word is love.
    quinta-feira, 19 de janeiro de 2012 12:03
    Moderador
  • Desculpa usei c#, aki vai em vb.net

    Private Sub button2_Click(sender As Object, e As EventArgs)
    
    
    	Dim query As String = "Select * From Table_Aluno Where ID =@ID"
    
    	Dim conecao As New OleDbConnection()
    
    	conecao.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data 
                         Source=C:\Users\Levi\Documents\Database_Desenvolvimento.accdb"
    
    
    
    	Dim comando As New OleDbCommand()
    
    	comando.CommandText = query
    
    	comando.CommandType = CommandType.Text
    
    	comando.Connection = conecao
    
    	Try
    
    
    		conecao.Open()
    
    		comando.Parameters.AddWithValue("@ID", textBox1.Text)
    
    		Dim ler As OleDbDataReader = comando.ExecuteReader()
    
    		While ler.Read()
    
    
    
    			dataGridView1.Rows.Add(ler(0).ToString(), ler(1).ToString(), ler(2).ToString())
    		End While
    
    
    		ler.Close()
    
    	Catch ex As OleDbException
    
    
    
    		MessageBox.Show(ex.Message.ToString())
    	Finally
    
    		conecao.Close()
    	End Try
    
    End Sub


    One word frees us of all the weight and pain of life: that word is love.
    quinta-feira, 19 de janeiro de 2012 12:06
    Moderador
  • Existe uma outra forma de se fazer isto. Nao sei se tu es iniciante. Mais aki vai um exemplo de como fazer sem usar dataset ou datatable.

    Eu uso comandos do oledb, a tecnica e a mesma so tens de trocar pra mysql comandos. 

    Com este exemplo tu vais de acrescentar as colunas manualmente no teu datagridview. Com o dataset ou table as colunas sao acrescentadas automaticamente. 

    Com este exemplo vais ter de editar e escrever as colunas, Nome, Preco, Fornecedor, Id Produto, depois e so fazer assim:

     

    private void button2_Click(object sender, EventArgs e)

            {

                string query ="Select * From Table_Aluno Where ID =@ID";

                OleDbConnection conecao = new OleDbConnection();

                conecao.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data                      Source=C:\Users\Levi\Documents\Database_Desenvolvimento.accdb";

     

                OleDbCommand comando = new OleDbCommand();

                comando.CommandText = query;

                comando.CommandType = CommandType.Text;

                comando.Connection = conecao;

                try

                {

                    conecao.Open();

                    comando.Parameters.AddWithValue("@ID", textBox1.Text);

                    OleDbDataReader ler = comando.ExecuteReader();

                    while (ler.Read())

                    {

                        dataGridView1.Rows.Add(ler[0].ToString(), ler[1].ToString(), ler[2].ToString());

                    }

                    ler.Close();               

                }

                catch(OleDbException ex)

                {

                  MessageBox.Show(ex.Message.ToString());

                }

                finally {conecao .Close();}

            }

     


    One word frees us of all the weight and pain of life: that word is love.

    Para converter de C# para VB.NET e de VB.NET para C#

    http://www.paulohdsousa.blogspot.com/2012/01/c-para-vbnet-vbnet-para-c.html


    Artigos e Dicas VB.NET, C#, SQL, Report viewer e WPF
    @PauloHDeSousa
    quinta-feira, 19 de janeiro de 2012 12:24
  • Nessa parte vc tem que mudar pra while, pq se colocar if vai executar o que tiver no data set uma vez apenas.

    Ja usando o while, ele vai executar tudo o que tiver dentro do data set, assim fará um loop até acabar os itens do banco

     

                 If da.Fill(ds)Then
                     DataGridView1.DataSource = ds.Tables(0)
                 End If

                While da.Fill(ds)
                    DataGridView1.DataSource = ds.Tables(0)
                End While


    Jean Felipe
    Email: jeanfelipfiais@hotmail.com
    Twitter: @JeanFelipe_


    quinta-feira, 19 de janeiro de 2012 17:32
  • Valew Ai pessoal Consegui resolver !!!
    sexta-feira, 20 de janeiro de 2012 10:47
  • marca o que te ajudou como responda pra fechar a pergunta.
    Jean Felipe
    Email: jeanfelipfiais@hotmail.com
    Twitter: @JeanFelipe_

    sexta-feira, 20 de janeiro de 2012 14:29