1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

datagrid vb.net 2005

Discussão em 'Programação' iniciada por estrafalhote, 25 de Abril de 2007. (Respostas: 21; Visualizações: 3023)

  1. estrafalhote

    estrafalhote Power Member

    boas

    eu tenho uma datagrid que está ligada a uma base de dados, e que cada vez que insiro dados na base de dados esses mesmos dados não aparecem na datagrid e eu gostaria de saber como fazer um refresh automático cada vez que inserir dados na base de dados, porque para poder ver os dados que acabei de inserir na base de dados tenho de fechar esse form e voltar a abri-lo que aí já aparecem os dados.
     
  2. Kamolas

    Kamolas Power Member

    Após inserires os dados podes fazer chamar novamente o evento load do form, ou voltar a chamar o procedimento que faz a ligação da datagrid à BD.
     
  3. trikton

    trikton Power Member

    Boas,

    Essa datagrid não estará associada a uma tabela num dataset? Caso esteja, para actualizares os dados visiveis no datagrid, tens de actualizar o dataset. É que por exemplo, fazendo um INSERT Directamente na base de dados, não vai mudar o dataset carregado previamente.
     
    Última edição: 25 de Abril de 2007
  4. cabiros

    cabiros Power Member

    E já experimentaste fazer a formatação da datagrid? Cada campo da tabela associado a cada coluna na datagrid. E depois no load da Form chamas o metodo. do estilo "Formatacaodatagrid()" depois de fazer o try do dataset.
     
  5. estrafalhote

    estrafalhote Power Member

    vocês não me estão a perceber eu consigo inserir os dados na BD só que se eu inserir qualquer coisa na BD ela não aparece automáticamente no Datagrid só se eu fechar o form e abri-lo de novo aí é que aparecem os dados que eu inseri na BD.
     
  6. cabiros

    cabiros Power Member

    AH bom :)

    Então faz nomedatagridview.refresh() depois de gravar os dados. penso que resolve.
     
  7. asa_delta

    asa_delta Power Member

    pk é k ao fim de fazer um insert não fazes um Get á tabela onde inseris-te os valores, basta chamar a função no kal carregas a datagrid
     
  8. trikton

    trikton Power Member

    Inserir dados numa base de dados não significa necessáriamente que estejas a inserir os dados no dataset ao qual a datagrid esta associada..
    Uma coisa é a base de dados.. outra coisa é o dataset, que aparece como uma cópia total ou parcial da base de dados física, na memória do pc
     
  9. estrafalhote

    estrafalhote Power Member

    já que pareces entendido na matéria se não fosse pedir muito poderias explicar me a diferença e como resolver o meu problema?
     
  10. SoundSurfer

    SoundSurfer Power Member

    Há tantas maneirs de fazer o que explicaste em cima, que tens de explicar melhor exactamente o que estás a fazer.
     
  11. estrafalhote

    estrafalhote Power Member

    eu tenho um programa com acesso a uma BD que na qual eu quero inserir dados através do programa só que eu quando insiro dados no programa eles não aparecem logo no datagrig só eu fechando o form e tornando a abri lo é que aparecem todos os dados que eu inseri, e eu queria que eles aparecem mal eu os inserisse
     
  12. SoundSurfer

    SoundSurfer Power Member

    Vou reformular a minha pergunta... tens de explicar melhor Como o estás a fazer.
     
  13. estrafalhote

    estrafalhote Power Member

    eu tenho um datagrid que através de um dataset está ligado a uma BD.
    e para escrever na BD tenho este código:

    Código:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection()
    
            Try
                dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=bd pap.mdb;"
    
                Dim strQuery As String = "INSERT INTO produtos (nome, quantidadestock, preco, caracteristicas, idcategoria, idfornecedor) VALUES(@nome, @quantidadestock, @preco, @caracteristicas, @idcategoria, @idfornecedor)"
    
                Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn)
    
                dbCmd.Parameters.AddWithValue("@nome", txtnome.Text)
                dbCmd.Parameters.AddWithValue("@quantidadestock", txtquantidadestock.Text)
                dbCmd.Parameters.AddWithValue("@preco", txtpreco.Text)
                dbCmd.Parameters.AddWithValue("@caracteristicas", txtcaracteristicas.Text)
                dbCmd.Parameters.AddWithValue("@idcategoria", cbCategoria.SelectedValue)
                dbCmd.Parameters.AddWithValue("@idfornecedores", cbFornecedor.SelectedValue)
    
                dbConn.Open()
    
                dbCmd.ExecuteNonQuery()
    
                dbCmd = Nothing
    
                MessageBox.Show("Inseriu", "Inseriu", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
    
    
            Catch ex As Exception
    
                MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
    
            Finally
    
                dbConn.Close()
    
    
            End Try
        End Sub
    e eu agora gostaria de saber como fazer para aparecerem os dados mal eu os insira

    já fui explicito?
     
  14. SoundSurfer

    SoundSurfer Power Member

    falta o código de ler os dados para a datagrid, que em princípio terás de chamar outra vez depois do "dbConn.Close()"
     
  15. estrafalhote

    estrafalhote Power Member

    desculpa la ser chato mas como eu não percebo lá muito disto podias me dar uma ideia do código que tenho de usar?
     
  16. trikton

    trikton Power Member

    É o que te tinha dito.. o INSERT coloca os dados directamente na base de dados, mas não no dataset que tens em memória.
    Tens de ir ao tableadapter da tabela que está associada ao teu datagrid e executar o comando Fill, para preencheres o teu dataset com uma copia dos dados da BD.
    Isso tem de estar feito na função k carrega o datagrid, ou no load do formulário.
    Procura e faz um copy paste logo após o código de inserção.
     
  17. estrafalhote

    estrafalhote Power Member

    alguém me podia explicar isto mais explicitamente é que eu como estou a auto-aprender é complicado, por isso é que estou a pedir a vossa ajuda
     
  18. gooden

    gooden Power Member

    espero k isto te ajude

    Me.DataGridView1.DataSource = dataset
    Me.DataGridView1.DataMember = "dados"
     
  19. trikton

    trikton Power Member

    Basicamente é o que se segue, mas substitui pelos teus nomes de variaveis.
    ------------------------------------------------------------------------
    1 - Código de inserção de dados na Base de dados
    ' já feito por ti

    2 - Actualização do Dataset com os dados carregados
    'Fazer isto depois do código de inserção de dados

    me.tableadapter.Fill(mydataset, "Tabela de dados")

    'Atendendo a que:
    'Me.DataGridView1.DataSource = mydataset
    'Me.DataGridView1.DataMember = "Tabela de dados"
    '
    'e que o tableadapter foi criado com a connection string correcta e o comando sql que vai 'buscar a informação que pretendes á respectiva tabela associada á datagrid
    -----------------------------------------------------------------------------

    Isto deve de estar um pouco confuso, mas a informação tá toda aqui.
    Basicamente é voltares a correr o código de inicialização da datagrid, após a inserção de dados.
     
  20. estrafalhote

    estrafalhote Power Member

    funcionou perfeitamente com umas pequenas alterações mas já bomba.

    agora alguém me pode explicar como apagar dados da bd através do datagrid?
    só que eu queria tipo escolher um produto e carregar num botão e os dados desse produto apagavam se, alguem me pode ajudar?
     

Partilhar esta Página