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

    [C#] Aggiornamento gerarchico

    Salve ragazzi.

    Ho da poco iniziato a studiare C# e sono ancora agli inizi.

    Sto cercando di capire come funziona l'aggiornamento gerarchico mediante il componente TabelAdapterManager, ma ho trovato delle difficoltà. Nel mio database ho due tabelle correlate con una relazione uno a molti quindi di tipo "padre" -> "figlio".

    Su un Form ho trascinato i nodi del dataset di entrambe le tabelle, dallo stesso nodo gerarchico, la tabella padre in formato dettagli e la tabella figlio in formato dataGrid.

    Se modifico un record esistente sulla tabella figlio e clicco sul pulsante save della bindingNavigator non ho nessun problema, ma quando voglio aggiungere un nuovo record padre e contemporaneamente dei record figli, non ottengo il risultato sperato.

    Allora ho seguito questa procedura su msdn: Aggiornamento gerarchico

    Quindi ho aggiunto le righe di codice necessarie indicate dalla procedura ma il problema si presenta sempre.

    Io ho risolto in questo modo: aggiungendo all'evento AddingNew del bindigSource della tabella figlio oltre al padreBindingSource.EndEdit() anche padreTableAdapter.Update().

    Visto questo volevo chiedervi se esiste un modo più raffinato per ottenere lo stesso.

    P.S. La procedura in msdn funziona correttamente con il database d'esempio NorthWind perche la chiave primaria della tabella customers non è autoincrementante, e qundi devi inserire manualmente l'id. Nel mio caso la chiave primaria è autoincrementante.

    Grazie a tutti in anticipo per la disponibilità!

  2. #2
    ho fatto delle prove sia con MySql che con Sql Server. Dicevo di aver risolto ma in effetti mi accorgo che il tutto funziona solo su Sql Server, su MySql no. Vi posto il codice:

    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void protocollo_corrispondenzaBindingNavigatorSaveItem_ Click(object sender, EventArgs e)
    {
    this.Validate();
    this.protocollo_corrispondenzaBindingSource.EndEdi t();
    this.allegatiBindingSource.EndEdit();
    this.tableAdapterManager.UpdateAll(this.gestione_e dileDataSet);

    }

    private void Form1_Load(object sender, EventArgs e)
    {
    // TODO: questa riga di codice carica i dati nella tabella 'gestione_edileDataSet.allegati'. È possibile spostarla o rimuoverla se necessario.
    this.allegatiTableAdapter.Fill(this.gestione_edile DataSet.allegati);
    // TODO: questa riga di codice carica i dati nella tabella 'gestione_edileDataSet.protocollo_corrispondenza'. È possibile spostarla o rimuoverla se necessario.
    this.protocollo_corrispondenzaTableAdapter.Fill(th is.gestione_edileDataSet.protocollo_corrispondenza );

    }

    private void Form1_FormClosed(object sender, FormClosedEventArgs e)
    {
    Program.mainForm.frmForm1Attivo = null;
    }

    private void allegatiBindingSource_AddingNew(object sender, AddingNewEventArgs e)
    {
    this.protocollo_corrispondenzaBindingSource.EndEdi t();
    this.protocollo_corrispondenzaTableAdapter.Update( gestione_edileDataSet.protocollo_corrispondenza);
    }
    }

    la tabella padre è "prorocollo_corrispondenza" e "allegati" quella correlata.
    Io procedo in questo senso, premendo il pulsante sul bindingNavigator per aggiungere un nuovo record, sul controllo agganciato al capo id_protocollo appare un -1, quando clicco sulla riga della dataGrid, viene esguito l'evento addingNew. Utilizzando SqlServer viene subito resituito l'id della riga assegnato e quindi associato alla chiave esterna della tabella allegati, infatti questo appare subito sulla nuova riga della dataGrid. Utilizzando Mysql, questo non accade, sull'id_protocollo rimane quel -1 che viene associato alla chiave esterna della tabella allegati.

    Qualcuno conosce il motivo?

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.