+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Aggiornamento da Datagrid a MDB

  1. #1
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Luogo
    Prato
    Post
    2,600

    Aggiornamento da Datagrid a MDB

    Parlando del diavolo sull'altro thread, spuntano le corna su questo!
    Per riprendere il discorso sulla manipolazione dei file mdb (ma questa penso valga anche per altri database), mi sto annodando su una piccola stranezza, che come al solito, ho trovato via alternative x risolvere, ma che mi rimane indigesta in quanto incompresa. Vengo al dunque: Ho una tabella (TabContatti), cui accedo con i consueti strumenti e che mostro in un datagrid. Data l'età e la necessità di occhiali al di sotto di una certa distanza dallo schermo, anzichè lavorare sulla griglia, preferisco copiare i dati della riga in diverse textbox e poi ricopiare il tutto nella griglia ed eseguire l'update. Nel fare ciò mi sono accorto di una cosa: Se eseguo l'editing nella cella del datagrid (es. entrando con F2), l'origine dati viene aggiornata. Se invece copio i valori da codice nel datagrid, i nuovi valori non si propagano all'origine dati, anche se, mi verrebbe da dire che dal momento che nella cella c'è un determinato valore, il tutto dovrebbe funzionare nell'identico modo.

    Ecco il codice di aggiornamento:

    codice:
     'Private Sub BtnSalvaAggiunteModifiche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalvaAggiunteModifiche.Click
        '    DaControlliARigaDiTabella(Me.DGContatti.SelectedRows(0))
        '    Me.Dat.Update(Me.DS.Tables(0))
        '    Me.DGContatti.DataSource = DS.Tables(0)
        '    Me.BtnSalvaAggiunteModifiche.Enabled = False
        'End Sub
    
        Private Sub BtnSalvaAggiunteModifiche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalvaAggiunteModifiche.Click
            'DaControlliARiga(Me.DGContatti.SelectedRows(0)) 'Copia i valori dalle textbox nelle celle del datagrid
            'Me.DGContatti.Update()
            'Me.DS.Tables(0).AcceptChanges()
            Me.Dat.Update(Me.DS.Tables(0))
            Me.BtnSalvaAggiunteModifiche.Enabled = False
        End Sub
    La routine completamente commentata è quella che funziona comunque, però prende una strada diversa, in quanto aggiorna la tabella, poi i dati e poi riporta i nuovi dati nel datagrid

    La seconda versione, così com'è funziona bene se edito i campi direttamente nella griglia. Se però scommento le 3 righe iniziali, nel tentativo di far funzionare l'applicazione come vorrei, ottengo che la prima riga, mi aggiorna il datagrid (pensavo che sarebbe stato lo stesso che farlo a mano nella griglia...invece no!) con i nuovi valori. La seconda e la terza riga sono state aggiunte per disperazione, ma senza alcun risultato utile. A occhio, scrivendo 'da codice' non viene propagato il valore alla data table, cosa che invece sembra avvenire quando il valore della cella viene introdotto 'a mano'.
    Chi può darmi qualche lume?

  2. #2
    Luogo
    Padova
    Post
    4,379
    Blogs
    36
    Beh il mio esempio
    Un esempio di gestione del databinding Windows Forms ADO.NET e Access
    Gestisce una form con una datagrid con tutti i records ed una textbox per ogni campo del record su cui si è posizionati.

  3. #3
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Luogo
    Prato
    Post
    2,600
    Grazie...ho dato un'occhiata, ma vedo che tu imposti il databinding delle textbox su un campo del datagrid. Sicuramente funziona, ma il verso di farlo funzionare l'ho già trovato. In genere le mie domande, ahimè, sono sempre speculative: Perchè...perchè...perchè... A volte mi sembro un bambino di 4 anni E' che mi piace scavare a fondo nelle cose. Ora sto 'giocando' con ADO.Net e rompo le scatole a tutto il forum. Mi toccherà auto-bannarmi!
    Comunque il senso della mia domanda è: perchè scrivendo un valore nel datagrid e da lì procedendo con le medesime istruzioni che uso quando il valore l'ho scritto a mano, il risultato è diverso? L'idea è che la scrittura diretta scateni una procedura che manca nell'altro caso. Sarei curioso di sapere se esiste un'istruzione, o più d'una, che possa colmare questa differenza. Che so...una chiamata a un metodo? Beh, ammesso che importi a qualcuno oltre a me, se scoprirò qualcosa di più, lo posterò senz'altro.
    Comunque grazie in ogni caso, caro Cteniza. E se poi trovi qualcosa tu...fammelo sapere, mi raccomando!

  4. #4
    Luogo
    Padova
    Post
    4,379
    Blogs
    36
    Ti sbagli se dici che ho usato il binding su un campo della datagrid.
    Se guardi bene c'è
    - un dataset
    - un dataview
    - il datagrid con il binding sul dataview
    - le textbox con il binding sul dataview
    Se vuoi scrivere qualche cosa secondo me devi utilizzare il bindingmanager, altrimenti rischi di annullare o non riportare le modifiche.

  5. #5
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Luogo
    Prato
    Post
    2,600

  6. #6
    Luogo
    Padova
    Post
    4,379
    Blogs
    36
    Se vuoi vederlo ho a disposizione un esempio (una vera schifezza) che ho fatto a suo tempo per provare i nuovi oggetti di vs 2005.
    Ultima modifica di Cteniza; 11-12-2005 18:16 

  7. #7
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Luogo
    Prato
    Post
    2,600
    Grazie, ci vado. Nel frattempo ti aggiorno sul fatto che ne ho provate diverse per vedere se riuscivo a riprodurre l'effetto della compilazione manuale. Ho definito la cella che stavo per cambiare come cella corrente, ho dato l'inizio e la fine dell'edit della cella, ovviamente scrivendoci il valore nel mezzo, ma evidentemente NON E' la stessa cosa. Chissà come diavolo hanno costruito quell'oggetto? Quale misteriosa via viene attivata quando con F2 entro nella cella per scrivere...boh? Ci vorrebbe una talpa in casa microsoft !

  8. #8
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Luogo
    Prato
    Post
    2,600
    Uhmmm....strano...cliccando sul link dell'esempio, mi dice che non ho le autorizzazioni per visualizzare la pagina!

  9. #9
    Luogo
    Padova
    Post
    4,379
    Blogs
    36
    Mi spiace, anch'io non riesco a capire.
    Sarà probabilmente che è un file direttamente che non manda a nessuna pagina.
    Ora lo tolgo dal sito.

  10. #10
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Luogo
    Prato
    Post
    2,600
    Grazie lo stesso!

+ Rispondi al Thread

Discussioni simili

  1. Modificare Datagrid da un'altro Form
    Da netsky nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 12-03-2006, 17:00
  2. aggiornamento DataGrid
    Da angelo34 nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 28-04-2005, 11:59
  3. aggiornamento DataGrid
    Da stefano_ nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 28-01-2004, 12:06

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi