Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET 2010 Express] Eliminare un record dal database

    Ciao a tutti, questo è il mio primo messaggio in questo forum. Sto cercando di lavorare in un mio progetto VB.NET 2010 Express con un database di MS Access. Sono riuscito a fare tutto quello che mi interessava tranne ad eliminare i record dal database. In effetti apparentemente se elimino un record questo viene rimosso dal database, ma quando vado a chiudere il programma e succesivamente a riavviarlo ecco che il record ritorna. Per quanto ne ho capito l'eliminazione avviene sul dataset "MioDataSet" ma poi non viene riportata sul database originale malgrado io abbia usato il metodo "update".

    Ecco quello che ho fatto in sintesi, queste le dichiarazioni:

    codice:
    Private MiaConnection As New OleDb.OleDbConnection
    Private MioDataSet As New DataSet
    Private MioDataAdapter As OleDb.OleDbDataAdapter
    Private MioIndex As Integer = 0
    Questo è quello che faccio all'avvio del programma:

    codice:
    Private Sub FormMain_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        MiaConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""PrimaProva.accdb"""
        MiaConnection.Open()
        MioDataAdapter = New OleDb.OleDbDataAdapter("SELECT* FROM PrimaTabella", MiaConnection)
        MioDataAdapter.Fill(MioDataSet, "NomeQualunque")
        MiaConnection.Close()
    End Sub
    Questo, ad esempio, per modificare un record (e funziona):
    codice:
        Private Sub ButtonUpdate_Click(sender As System.Object, e As System.EventArgs) Handles ButtonUpdate.Click
            MioDataSet.Tables("NomeQualunque").Rows(MioIndex).Item("Nome") = TextBoxNome.Text
            MioDataSet.Tables("NomeQualunque").Rows(MioIndex).Item("Cognome") = TextBoxCognome.Text
            Dim MioCommandBuilder As New OleDb.OleDbCommandBuilder(MioDataAdapter)
            MioDataAdapter.Update(MioDataSet, "NomeQualunque")
        End Sub
    Questo invece per eliminare un record. Come ho detto sembra funzionare, ma non elimina il record dal file originale e quindi questo ricompare al successivo avvio del programma:

    codice:
        Private Sub ButtonDelete_Click(sender As System.Object, e As System.EventArgs) Handles ButtonDelete.Click
            MioDataSet.Tables("NomeQualunque").Rows(MioIndex).Delete()
            MioDataSet.Tables("NomeQualunque").AcceptChanges()
            Dim MioCommandBuilder As New OleDb.OleDbCommandBuilder(MioDataAdapter)
            MioDataAdapter.Update(MioDataSet, "NomeQualunque")
        End Sub
    Dove sto sbagliando a vostro avviso?

  2. #2
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Questo comando AcceptChanges lo devi lanciare dopo che hai aggiornato il database col dataadapter.

  3. #3
    Originariamente inviato da cassano
    Questo comando AcceptChanges lo devi lanciare dopo che hai aggiornato il database col dataadapter.
    Che dire? Sintetico ed efficace. Hai assolutamente ragione: ho invertito i due comandi ed il problema si e' risolto. Mi sembra abbastanza evidente che non ho capito bene come funziona questa cosa dei dataset, ma per ora mi accontento del risultato. Grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.