Jump to content

Recommended Posts

Posted

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?

Posted

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
Posted

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"

Posted

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

Posted

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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.