none
Problemas ao atualizar informações no GRID RRS feed

  • Pergunta

  • Oi Pessoal....

     

    Estou eu aqui outra vez com mais um enrosco... rs

     

    Em uma tela há um GRID que mostra os dados de uma tabela.

    E há também um botão que quando o usuário clica, ele insere algumas informações nesta tabela.

     

    O botão está funcionando perfeitamente, quando clica no botão ele realmente insere a informação na tabela, porém essa informação não é exibida no GRID a não ser que eu feche e abra novamente a tela.

     

    Resumindo... preciso atualizar as informações do GRID depois de inserir as informações.

     

    Pesquisei na internet e achei várias sugestões, mas nenhuma delas deu certo.

     

    Segue o código completo deste botão... inclusive com a minha tentativa no final de fazer a atualização.

     

    Se alguém puder me ajudar com isso... agradeço :)

     

            Dim ConString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=ConexãoBancoDados.accdb; Persist Security Info =False; "
    
            Dim DBCon As New OleDb.OleDbConnection(ConString)
    
            DBCon.Open()
    
            Dim CodProduto As String = Grid_Produtos.Rows(Grid_Produtos.CurrentRow.Index).Cells(0).Value.ToString()
            Dim vCustoProduto As String = Grid_Produtos.Rows(Grid_Produtos.CurrentRow.Index).Cells(4).Value.ToString()
    
            'PEGAR ÚLTIMO CÓDIGO DA VENDA
            Dim vSQL As String = "SELECT Código FROM [Tab_Entrada Produtos] ORDER BY Código DESC"
    
            Dim cm As New OleDb.OleDbCommand(vSQL, DBCon)
    
            Dim dr As OleDb.OleDbDataReader
    
            dr = cm.ExecuteReader
    
            Dim vCodigoEntrada As Integer
    
            If (dr.HasRows) Then
                dr.Read()
                vCodigoEntrada = dr.Item("Código")
            Else
                vCodigoEntrada = 1
            End If
    
            Dim vQtd As String = InputBox("Digite a quantidade desejada:", "QUANTIDADE", "1")
    
            Dim cmd As New OleDb.OleDbCommand("INSERT INTO Tab_Entrada_Itens (Cod_Produto, Cod_Entrada, [Valor Unitário], Quantidade) VALUES (@CodProduto, @CodEntrada, @ValorUnitario, @Quantidade)", DBCon)
    
            cmd.Parameters.Add(New OleDb.OleDbParameter("@CodProduto", CodProduto.ToString))
            cmd.Parameters.Add(New OleDb.OleDbParameter("@CodEntrada", vCodigoEntrada.ToString))
            cmd.Parameters.Add(New OleDb.OleDbParameter("@ValorUnitario", vCustoProduto.ToString))
            cmd.Parameters.Add(New OleDb.OleDbParameter("@Quantidade", vQtd))
    
            cmd.ExecuteNonQuery()
    
            
            'DAQUI PRA BAIXO SÃO AS MINHAS TENTATIVAS FRUSTRADAS DE ATUALIZAR AS INFORMAÇÕES NO GRID
            Me.DataSet_Loja.Reset()
    
            Me.TableAdapterManager.UpdateAll(Me.DataSet_Loja)
    
            Me.Tab_Entrada_ItensTableAdapter.Dispose()
            Me.Tab_Entrada_ItensTableAdapter.Fill(Me.DataSet_Loja.Tab_Entrada_Itens)
    
            Me.Tab_ProdutosTableAdapter.Dispose()
            Me.Tab_ProdutosTableAdapter.Fill(Me.DataSet_Loja.Tab_Produtos)
    
            Me.Tab_Entrada_ProdutosTableAdapter.Dispose()
            Me.Tab_Entrada_ProdutosTableAdapter.Fill(Me.DataSet_Loja.Tab_Entrada_Produtos)
    
            Me.Tab_Entrada_ItensBindingSource.ResetBindings(False)
            Me.Tab_Entrada_ItensBindingSource.InitializeLifetimeService()
            Me.Tab_Entrada_ItensBindingSource.ResumeBinding()
    
            Grid_Entrada_Itens.Refresh()
    


    sexta-feira, 7 de outubro de 2011 22:20

Todas as Respostas

  • Chame o método que preenche o grid logo após fazer o cadatro.

    //faz o insert
    //Carrega o controle
    CarregarMeusDados();


    --
    Marque as respostas e ajude a melhorar a busca do fórum. pcfviana@gmail.com
    sábado, 8 de outubro de 2011 16:31
  • Deixa eu ver se consigo explicar meu problema, pra ver se alguém tem alguma solução pra ele... pq já estou ficando louco aqui... rs

     

    Nesta tela eu preciso que quando eu clique no botão indicado... o sistema jogo o produto selecionado no grid da esquerda para o grid da direita:

     

    O código deste botão segue abaixo:

            Dim ConString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=ConexãoBancoDados.accdb; Persist Security Info =False; "
    
            Dim DBCon As New OleDb.OleDbConnection(ConString)
    
            DBCon.Open()
    
            Dim CodProduto As String = Grid_Produtos.Rows(Grid_Produtos.CurrentRow.Index).Cells(0).Value.ToString()
            Dim vCustoProduto As String = Grid_Produtos.Rows(Grid_Produtos.CurrentRow.Index).Cells(4).Value.ToString()
    
            'PEGAR ÚLTIMO CÓDIGO DA VENDA
            Dim vSQL As String = "SELECT Código FROM [Tab_Entrada Produtos] ORDER BY Código DESC"
    
            Dim cm As New OleDb.OleDbCommand(vSQL, DBCon)
    
            Dim dr As OleDb.OleDbDataReader
    
            dr = cm.ExecuteReader
    
            Dim vCodigoEntrada As Integer
    
            If (dr.HasRows) Then
                dr.Read()
                vCodigoEntrada = dr.Item("Código")
            Else
                vCodigoEntrada = 1
            End If
    
            Dim vQtd As String = InputBox("Digite a Quantidade Desejada:", "QUANTIDADE", "1")
    
            Dim cmd As New OleDb.OleDbCommand("INSERT INTO [Tab_Entrada Itens] (Cód_Produto, Cód_Entrada, [Valor Unitário],Quantidade) VALUES (@CodProduto, @CodEntrada, @ValorUnitario, @Quantidade)", DBCon)
    
            cmd.Parameters.Add(New OleDb.OleDbParameter("@CodProduto", CodProduto.ToString))
            cmd.Parameters.Add(New OleDb.OleDbParameter("@CodEntrada", vCodigoEntrada.ToString))
            cmd.Parameters.Add(New OleDb.OleDbParameter("@ValorUnitario", vCustoProduto.ToString))
            cmd.Parameters.Add(New OleDb.OleDbParameter("@Quantidade", vQtd))
    
            cmd.ExecuteNonQuery()
    
    
            Me.DataSet_Loja.Reset()
    
            Me.TableAdapterManager.UpdateAll(Me.DataSet_Loja)
    
            Me.Tab_Entrada_ItensTableAdapter.Dispose()
            Me.Tab_Entrada_ItensTableAdapter.Fill(Me.DataSet_Loja.Tab_Entrada_Itens)
    
            Me.Tab_ProdutosTableAdapter.Dispose()
            Me.Tab_ProdutosTableAdapter.Fill(Me.DataSet_Loja.Tab_Produtos)
    
            Me.Tab_Entrada_ProdutosTableAdapter.Dispose()
            Me.Tab_Entrada_ProdutosTableAdapter.Fill(Me.DataSet_Loja.Tab_Entrada_Produtos)
    
            Me.Tab_Entrada_ItensBindingSource.ResetBindings(False)
            Me.Tab_Entrada_ItensBindingSource.InitializeLifetimeService()
            Me.Tab_Entrada_ItensBindingSource.ResumeBinding()
    
            Grid_Entrada_Itens.Refresh()
    
            Tab_Entrada_ItensBindingSource.Filter = "Cód_Entrada = " & vCodigoEntrada
    
    

     

    O problema é que... Quando o usuário insere o primeiro item... ele não atualiza. Vejam na imagem abaixo:

    Informação Importante: Na tabela dentro do banco de dados produto está sendo gravado! O problema parece estar na atualização da informação no GRID.

     

     

     

    sexta-feira, 14 de outubro de 2011 22:48
  • Continuando a postagem acima, pois lá eu só podia colocar 2 imagens... hehe

     

    Quando eu clico pela segunda vez no botão para adicionar, é que acontece o mais estranho:

    Ele mostra o primeiro produto adicionado no passo anterior (figura acima). Mas o segundo produto que eu acabei de adicionar ele não mostra.

    Mas uma vez importante ressaltar que na tabela está gravado os dois produtos, o 1º e o 2º q adicionei. Mas no GRID ele só mostra o primeiro.

     

    Se eu adicionar um terceiro produto... ele mostra os dois primeiros... O último adicionado não.

     

    Se eu adicionar um quarto produto... ele mostra os três primeiros... O último não...

     

    Está muito estranho ele não atualizar a informação completa... O último produto nunca aparece no GRID da direita.

    E não consigo resolver o problema.

     

    Apesar de trabalhar com programação há um tempo... Sou bem iniciante no Visual basic.... e não estou conseguindo solucionar o problema...

     

    Alguém pode me dar uma luz?!?! hehe

     

    Valeu.... Conto com a ajuda de vcs!




    sexta-feira, 14 de outubro de 2011 22:51