Gestionale con Visual c# e Access Problema aggiornamento Tabella

di Anonimizzato23320 il
8 risposte
Salve a tutti,
innanzi tutto mi scuso se ho commesso qualche errore nel impostazione del Post.
Premetto che ho studiato c per dos, ormai vent' anni fa a scuola,
eppure mi sono messo in testa di ricominciare a programmare. Nella fattispece si tratta di un programma gestionale per l' ufficio con cui collaboro, in cui vorrei gestire Allievi e Corsi di un Agenzia formativa.
Ora il problema più grosso (a parte milioni di altri piccoli inconvenienti)è che una volta richiamata la tabella, riesco a modificarla, ma i cambiamenti non vengono salvati. Il codice del pulsante "Salva" è più o meno questo:
 private void btnSalva_Click(object sender, EventArgs e)
        {


            OleDbCommand resultsCommand = null;
            OleDbDataAdapter resultsAdapter = new OleDbDataAdapter();
            DataTable resultsTable = new DataTable();

            //Connessione al db dei corsi
            courseConnection = new OleDbConnection(Properties.Settings.Default.Percorso.ToString());
            //Apertura Connessione
            courseConnection.Open();
            try
            {
               
               
               
               
                resultsCommand = new OleDbCommand("UPDATE Allievi SET Corso ='" + comboBox1.SelectedValue + "'"+"where Codice_Fiscale= '									    "+txtCodiceFiscale.Text+"'", courseConnection); 
                resultsAdapter.UpdateCommand = resultsCommand;
               
                resultsAdapter.Update(resultsTable);
               
               
               
                grdAllievi.DataSource = resultsTable;
               
               

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Errore nel Proccessare SQL", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }
            resultsCommand.Dispose();
            resultsAdapter.Dispose();
            resultsTable.Dispose();

        }
Non so se si capisce qualcosa...

8 Risposte

  • Da quel che ricordo del DataAdapter dovrebbe mancare:
    resultsAdapter.Fill(resultsTable);
    prima dell'update.
    Veifica anche la query dove la where viene scritta attaccata al valore del combo ed il codice fiscale...ma presumo sia un problema di copia/incolla.
  • Grazie,
    Ho provato ad aggiungere
    resultsAdapter.Fill(resultsTable);
    ma credo che funzioni solo con la propietà SelectCommand impostata, che come suggerisce il nome viene impostata con una query di tipo
    SELECT
    ...
    Provato comunque ad impostare .SelectCommand ma stesso problema, li pe li salva, ma al riavvio del programma le modifiche non vengono salvate.
  • Se per Tabella intendi il datatable devi chiamare il metodo .AcceptChanges()
  • Grazie,
    ho provato ad aggiungere .AcceptChanges() ma non funziona...
  • Verifica nella finestra Proprietà del file MDB la proprietà [Copia nella directory di output ...] sia impostata su Non copiare.
  • Ottoemmezzo ha scritto:


    Provato comunque ad impostare .SelectCommand ma stesso problema, li pe li salva, ma al riavvio del programma le modifiche non vengono salvate.
    dataAdpater.UpdateCommand = new SqlCommand(
    "UPDATE Categories SET CategoryName = @CategoryName " +
    "WHERE CategoryID = @CategoryID", connection);

    dataAdpater.UpdateCommand.Parameters.Add(
    "@CategoryName", SqlDbType.NVarChar, 15, "CategoryName");

    SqlParameter parameter = dataAdpater.UpdateCommand.Parameters.Add(
    "@CategoryID", SqlDbType.Int);
    parameter.SourceColumn = "CategoryID";
    parameter.SourceVersion = DataRowVersion.Original;

    DataTable categoryTable = new DataTable();
    dataAdpater.Fill(categoryTable);

    DataRow categoryRow = categoryTable.Rows[0];
    categoryRow["CategoryName"] = "New Beverages";

    dataAdpater.Update(categoryTable);
    Da msdn
  • Grazie per l' aiuto ma continua a non Salvare. Possibile che il problema sia dovuto al fatto che la tabella che voglio aggiornare sia legata da una relazione molti a molti con un' altra, e che quindi bisogni agire anche sui figli?
  • Ottoemmezzo ha scritto:


    Grazie per l' aiuto ma continua a non Salvare. Possibile che il problema sia dovuto al fatto che la tabella che voglio aggiornare sia legata da una relazione molti a molti con un' altra, e che quindi bisogni agire anche sui figli?
    Innanzi tutto: Hai verificato il suggerimento di Gibra? Se no, inutile pensare ad altre soluzioni.
    Prova prima a spostare la directory del db esternamente al progetto
    Già una relazione molti a molti mi lascia perplesso, ma tant'è, non voglio entrare nel merito.
    Ovviamente non puoi aggiornare più tabelle se lette in JOIN ma questo dovrebbe sollevarti un'eccezione.
Devi accedere o registrarti per scrivere nel forum
8 risposte