• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vasco16

Como fazer refresh após apagar um registo?

18 mensagens neste tópico

Boas pessoal tenho aqui um problema que é o seguinte, quando faço apagar um registo da minha BD na minha aplicação em vb.net através de um botão ele apaga mas só tira o registo quando eu sair da aplicação voltar a entrar, como posso resolver isto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O código do load da aplicação é:

Private Sub compras_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'tirar barra de minimizar, maximizar e fechar
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None


        'conecta com o banco de dados e abre a conexão
        Dim comprasConnection As OleDb.OleDbConnection = New OleDb.OleDbConnection()
        comprasConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=stand.mdb;")
        comprasConnection.Open()


        'define um objeto command 
        Dim comprasCommand As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT * FROM compras ORDER BY id_processo desc", comprasConnection)


        'define um dataAdapter 
        Dim comprasadapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter()
        comprasadapter = New OleDb.OleDbDataAdapter()
        comprasadapter.SelectCommand = comprasCommand


        'define e preenche um DataTable com os dados
        Dim comprastabela As DataTable
        comprastabela = New DataTable()
        comprasadapter.Fill(comprastabela)

        'vincula os dados aos controles do formulário
        id_compraTextBox.DataBindings.Add("Text", comprastabela, "ID_PROCESSO")
        matriculatextbox.DataBindings.Add("Text", comprastabela, "MATRICULA")
        marcaTextBox.DataBindings.Add("Text", comprastabela, "MARCA")
        modeloTextBox.DataBindings.Add("Text", comprastabela, "MODELO")
        datatextbox.DataBindings.Add("Text", comprastabela, "DATA_MATRICULA")
        categoriaTextBox.DataBindings.Add("Text", comprastabela, "CATEGORIA")
        cilindradaTextBox.DataBindings.Add("Text", comprastabela, "CILINDRADA")
        potenciaTextBox.DataBindings.Add("Text", comprastabela, "POTENCIA")
        combustivelTextBox.DataBindings.Add("Text", comprastabela, "COMBUSTIVEL")
        anoTextBox.DataBindings.Add("Text", comprastabela, "ANO")
        corTextBox.DataBindings.Add("Text", comprastabela, "COR")
        pesobrutoTextBox.DataBindings.Add("Text", comprastabela, "PESO_BRUTO")
        lugaresTextBox.DataBindings.Add("Text", comprastabela, "LUGARES")
        portasTextBox.DataBindings.Add("Text", comprastabela, "PORTAS")
        kilometrosTextBox.DataBindings.Add("Text", comprastabela, "KMS")
        cilindrosTextBox.DataBindings.Add("Text", comprastabela, "CILINDROS")
        localizacaoTextBox.DataBindings.Add("Text", comprastabela, "LOCALIZACAO_STAND")
        estadoTextBox.DataBindings.Add("Text", comprastabela, "ESTADO")
        extrasTextBox.DataBindings.Add("Text", comprastabela, "EXTRAS")
        situacaoTextBox.DataBindings.Add("Text", comprastabela, "SITUACAO")
        datacompratextbox.DataBindings.Add("Text", comprastabela, "DATA_COMPRA")
        precovendaTextBox.DataBindings.Add("Text", comprastabela, "PRECO_PREVISTO_DE_VENDA")
        nomefornecedorTextBox.DataBindings.Add("Text", comprastabela, "NOME_DE_FORNECEDOR")


        'estabelece o currencyManager
        Dim comprascmanager As CurrencyManager
        comprascmanager = DirectCast(Me.BindingContext(comprastabela), CurrencyManager)


    End Sub

e o codigo do botão apagar é:

    Private Sub apagar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles apagar.Click
        'tipo e caminho da BD
        Dim iSQLStatus As Integer
        Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection()
        dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=stand.mdb;"


        'instrução sql
        Dim strQuery As String = "Delete from compras where MATRICULA = '" & matriculatextbox.Text & "'"
        Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn)
        dbConn.Open()

        Try

            iSQLStatus = dbCmd.ExecuteNonQuery

            If iSQLStatus = 0 Then
                MsgBox("O registo falhou")
            Else
                MsgBox("O registo foi apagado com sucesso")
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
        End Try

        dbConn.Close()
        dbConn = Nothing
        dbCmd = Nothing
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no botao apagar experimenta colocar tudo dentro do try

nada, tive a pesquisar um pouco e tenho de fazer refresh á BD mas nao sei como faze-lo..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no fim do codigo do apagar chama o load do form

compras_Load(sender,e)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no fim do codigo do apagar chama o load do form

compras_Load(sender,e)

dá erro: "Desta forma, vai vincular à mesma propriedade duas vinculações na colecção.

Nome do parâmetro: binding"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao voltas a fazer o select de novo a bd para os teus campos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao voltas a fazer o select de novo a bd para os teus campos

no botao apagar e aseguir ao comando "end try" ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

depois disto        dbConn.Close()

        dbConn = Nothing

        dbCmd = Nothing

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja agora nao tens uma propriedade que e  teuform.Refresh()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja agora nao tens uma propriedade que e  teuform.Refresh()

tentei e nada:S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

qual deles das opcoes e que tentaste

como assim? no form escrevi compras.refresh

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao voltas a fazer o select de novo a bd para os teus campos

no fim do apagar faz isto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no fim do apagar faz isto

vai dar outra vez este erro: "dá erro: "Desta forma, vai vincular à mesma propriedade duas vinculações na colecção.

Nome do parâmetro: binding""

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no fim do apagar mete este bloco de codigo

Dim ctl As Control

For Each ctl In Me.Controls

ctl.Dispose()

ctl = Nothing

Next

InitializeComponent()

compras_Load(sender,e)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no fim do apagar mete este bloco de codigo

Dim ctl As Control

For Each ctl In Me.Controls

ctl.Dispose()

ctl = Nothing

Next

InitializeComponent()

compras_Load(sender,e)

dá para ver que o programa faz um refresh mas os dados continuam visiveis namesma.. será que está em conflito com o load que fiz? é que se carregar três vezes no botao apagar ele apaga-me 3 registos mas mostra-me sempre o ultimo registo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora