datagrid vb.net 2005

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.
 
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.
 
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:
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.
 
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.
 
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
 
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.

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
 
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

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?
 
Há tantas maneirs de fazer o que explicaste em cima, que tens de explicar melhor exactamente o que estás a fazer.

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
 
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

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

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?
 
É 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.
 
É 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.

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
 
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.
 
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.

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?
 
Back
Topo