Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    salvare DataTable nel database

    Non uso mai salvare un DataTable nel database, ma adesso ne ho la necessità.

    In pratica, leggo una tabella Access in un DataTable, faccio modifiche (modifico campi, cancello righe, aggiungo righe).

    Come salvo i dati nel database?

    Che cosa ci guadagno se uso il controllo BindingSource? :master:

    Pietro

  2. #2
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    il bindingsource è una cosa il datatable è un altra. Per salvare il datatable di solito si usa un DataAdapter e a quest'ultimo li vengono dati i commandi di insert delete e update.
    ecco un esempio
    http://msdn.microsoft.com/it-it/libr...edbdataadapter(VS.80).aspx
    In questo caso è stato utilizzato OLEDB ma esiste anche OdbcDataAdapter, SqlDataAdapter...etc

    il bindingsource invece serve per collegare un controllo a una sorgente dati. Per esempio una grid con un datatable, oppure una textbox con un campo di un record.
    I got the remedy

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti ringrazio

    Se non abuso ti prego di darmi una mano perchè non ne vengo fuori.

    Ho un DataGridView su un form

    Il mio obiettivo è quello di selezionare una cella, immettere un valore, aggiornare la fonte dati sottostante.

    Questo codice va:

    Me.DataGridView1.CurrentCell = Me.DataGridView1(1, 0)
    Me.DataGridView1.BeginEdit(False)
    Me.DataGridView1.CurrentCell.Value = 999
    Me.DataGridView1.EndEdit()
    Me.CheckBox1.Focus()

    ma l'ultima istruzione (Me.CheckBox1.Focus() ) proprio non mi piace: toglie il focus dal controllo e questo immette il nuovo valore della cella nel datatable sottostante

    La domanda è se esista un metodo migliore

    ciao
    Pietro

  4. #4
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    da quello che ho capito, imposti il focus in una checkbox perchè hai capito che in questo modo scrive i dati nel datatable. Se è cosi', non serve fare questa operazione ma semplicemente chiamare il metodo Update() del datagridview. Questo metodo fa si che venga aggiornata il datasource della griglia che in questo caso è il datatable.

    Altrimenti dovresti dirmi a cosa serve l'operazione di focus nella checkbox..
    I got the remedy

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Hai capito benissimo Adesso provo il tuo suggerimento.
    Pietro

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Purtroppo non va

    codice:
    Private Sub LinkLabel_seleziono_cella_attiva_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel_seleziono_cella_attiva.LinkClicked
    	'cella 0, 1
    	Me.DataGridView1.CurrentCell = Me.DataGridView1(1, 0)
    	Me.DataGridView1.BeginEdit(False)
    	Me.DataGridView1.CurrentCell.Value = 999
    	Me.DataGridView1.EndEdit()
    	'DirectCast(sender, Control).Focus()
    	'Me.DataGridView1.Focus()
    	Me.DataGridView1.Update()
    End Sub
    nella paginetta di prova ho un timer che chiede la proprietà GetChanges del DataTable sottostante.
    L'unico modo per vedere true è quello di cambiare riga col tasto freccia, oppure facendo perdere il focus alla griglia

    Pietro

  7. #7
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    come hai collegato il datagrid al datatable?
    se hai utilizzato un bindingsource non serve fare

    Me.DataGridView1.CurrentCell = Me.DataGridView1(1, 0)
    Me.DataGridView1.BeginEdit(False)
    Me.DataGridView1.EndEdit()
    I got the remedy

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Si, così funziona. In pratica non aggiorni la griglia ma la fonte dati sottostante:

    Me.dt.Rows(0)(1) = 999
    Me.DataGridView1.Update()
    Me.DataGridView1.CurrentCell = Me.DataGridView1(1, 0)
    Me.DataGridView1.Focus()


    Ciao
    Pietro

  9. #9
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    importante è che funzioni
    I got the remedy

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da albgen
    importante è che funzioni
    Certo, ma quando ti danno una mano è anche meglio

    ciao
    Pietro

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.