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

    Metodo Update del DataAdapter

    Ciao a tutti, devo aprire una connessione con un database Access 2003,
    creare un dataset, creare una tabella all'interno del dataset chiamata "Utenti" e
    creare un Dataadapter con la funzione di popolare la datatable "Utenti".
    per fare questo ho usato il codice seguente:

    Dim connessione As OleDbConnection 'dichiara la connessione Oledb
    Dim DataAdapter As New OleDbDataAdapter 'dichiara un dataadapter
    Dim DS As DataSet 'dichiara un dataset
    DS = New DataSet
    DS.Tables.Add("Utenti") 'aggiunge una datatable al dataset

    connessione = New OleDbConnection
    connessione.ConnectionString = My.Settings.StringaConnessione() 'imposta la stringa
    connessione.Open() 'apre la connessione
    MsgBox(connessione.State.ToString()) 'visualizza lo stato della connessione

    DataAdapter.Fill(DS.Utenti) 'il dataadapter popola la datatable

    nella form c'e un datagridview che visualizza il dataset, il problema è quando devo usare il metodo Update del datadapter

    Dataadapter.Update(DS.Utenti)

    quando viene eseguito questo codice si ottiene lo stesso effetto del codice scritto sopra.

    Come posso salvare sull'origine dati le modifiche apportate alla datagridview?

    Grazie per l'aiuto
    Ciao

  2. #2
    Alt, ma la DataGridView è impostata per consentire la modifica e l' aggiunta di record?
    Se si perchè passi la DataTable a mano, come puo' sapere l' Adapter a che tabella del Db ti riferisci se non la carichi dal FIll??

    Comunque, la DataSource della Grid come la imposti?

  3. #3
    --NON SPAVENTARTI PER LA LUNGHEZZA--

    hai ragione tempo di aver fatto confusione (sono inesperto e sto studiando su ADO.NET 2) e di averti fatto perdere tempo, scusami.

    Inizialmente il codice era il seguente:

    ------------------------------INIZIO CODICE------------------------------

    Imports System.Data
    Imports System.Data.OleDb

    Public Class Form1
    'dichiaro una connessione
    Dim connessione As OleDbConnection

    Friend WithEvents cmdSelect As New OleDbCommand
    Friend WithEvents cmdInsert As New OleDbCommand
    Friend WithEvents cmdUpdate As New OleDbCommand
    Friend WithEvents cmdDelete As New OleDbCommand
    Friend WithEvents DataAdapter1 As New OleDbDataAdapter

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
    _System.EventArgs) Handles Button3.Click

    'Creo un connessione valida
    connessione = New OleDbConnection
    connessione.ConnectionString = My.Settings.StringaConnessione

    'Creo il dataadapter
    DataAdapter1.SelectCommand = cmdSelect
    DataAdapter1.InsertCommand = cmdInsert
    DataAdapter1.UpdateCommand = cmdUpdate
    DataAdapter1.DeleteCommand = cmdDelete

    'Imposto la proprietà commandtext e connection del dataadapter
    cmdSelect.CommandText = "SELECT * FROM Utenti"
    cmdSelect.Connection = connessione

    'Creo un dataset e ci aggiungo una tabella chiamata TableUtenti
    Dim DS As DataSet
    DS = New DataSet
    DS.Tables.Add("TableUtenti")

    'Utilizzo il metodo fill del dataadapter
    DataAdapter1.Fill(DS.TableUtenti)

    ------------------------------FINE CODICE------------------------------

    Ho seguito passo passo il libro, nella form ho inserito un datagrid senza impostargli la proprietà Datasource ne Datameber e facendo una prova mi sono accorto che sembrava fosse automatica l'associazione dei dati a quel datagrid tanto è vero che ho provato ad inserire un'altro datagrid e in fase di debug quest'ultimo non veniva visualizzato.

    -Sbaglio qualcosa nell'operazione di recupero dati dal DB access?
    -Una volta apportate modifiche al datagrid come posso comunicarle al dataadapter per poi
    aggiornare la sorgente dati fisica (il DB reale)?
    -Devo impostare la proprietà Datasource del datagrid (Operazione gia provata)?

    Il libro lo sto leggendo ma nella versione Passo per passo è prestata piu attenzione alle procedure guidate che al codice.

    GRAZIE PER L'AIUTO

  4. #4
    Tu sbagli qui

    codice:
    DS.Tables.Add("TableUtenti")
    La tabella DS.TableUtenti e la tabella DS.Tables["TableUtenti"] sono due DataTable diverse ...
    ;-)
    Se fai fill del dataset senza passare la datatable vedrai che dopo funziona.

  5. #5
    Ok la correzzione è stata eseguita ma non ho ancora capito come aggiornare l'origine dati attraverso ul metodo update del dataadapter

    La routin che gestisce questa operazione è la seguente:

    Dataadapter.Update(DS.Tableutenti)

    eseguendo questo comando dopo aver modificato righe del datagrid , si riconfigura il datagrid con le informazioni inziali ed ovviamente non vengono modificati i dati nel DB.

    Sai indicarmi il codice per aggiornare i dati nel DB?

    Grazie

  6. #6
    [list=1][*]Carichi il dataset con un fill[*]Passi come datasource al datagrid il dataset[*]modifichi i campi[*]chiami il metodo update[*]richiami fill per ripopolare correttamente il tutto[/list=1]
    Se non va ancora controlla che la datatable abbia impostato il valore AcceptChanges ...

  7. #7
    Niente da fare,
    devo rileggere piu attentamente il manuale.

    Un'ultima cosa!

    Quando provo a fare il tutto con le creazioni guidate, credo che ci sia un errore nell'istallazione di visual studio perche quando trascino sulla form un oledbconnection e anche quando trascino un dataadapter si apre una finestra di errore con scritto:

    Chiave non utitlizzabile nello stato specificato.

    Sai qualcosa al riguardo

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.