Gestione DatagridView

lunedì 23 luglio 2007 - 07.24

attilio Profilo | Junior Member

Salve a tutti in una mia applicazione ho esigenza di scrivere dati visualizzabili e editabili su una datagrid view temporanea fino al salvataggio, ho pensato di scrivere su una tabella di appoggio temp fino al salvataggio quando i dati vengono portati definitivamente nella tabella di destinazione.
Mi sapete dire come posso fare per spostare tutti i dati di questa tabella nella definitiva?
siccome nei dati forniti vi è anche un contatore che totalizza il contante totale per la transazione vorrei che sia unico per tutti i record e non che su ogni record inserito si scriva il totale, avete idee per come fare?
Grazie

SSUPERPIPPO Profilo | Guru

>Salve a tutti in una mia applicazione ho esigenza di scrivere dati visualizzabili e editabili su una datagrid view temporanea fino al >salvataggio, ho pensato di scrivere su una tabella di appoggio temp fino al salvataggio quando i dati vengono portati >definitivamente nella tabella di destinazione.
>Mi sapete dire come posso fare per spostare tutti i dati di questa tabella nella definitiva?

Non ho capito bene, hai bisogno di sincronizzare due DataTable di un DataSet?

>siccome nei dati forniti vi è anche un contatore che totalizza il contante totale per la transazione vorrei che sia unico per tutti i >record e non che su ogni record inserito si scriva il totale, avete idee per come fare?

Una volta calcolato il campo totale effetti un Update di tutti i record impostando il valore del campo totale.

Ciao,
Ale

attilio Profilo | Junior Member

Scusa effettivamente non mi sono spiegato...
Nella tabella temporanea tengo tutti i dati della transazione alla fine della vendita vorrey fare una query che esporta tutti i dati da questa tabella a quella definitiva...e anche il valore totale della colonna totale che si compilerà penso solo con il salvataggio finale in modo da non replicarne il valore.

SSUPERPIPPO Profilo | Guru

Scusami ma ancora non capisco il senso della tabella temporanea.

Se tu utilizzi ADO.NET in modalità disconnessa e crei un DataSet contenente un DataTable riempito con i dati della tabella del database (con il metodo Fill), potrai effettuare aggiornamenti, modifiche, eliminazioni senza che i dati originali del database vengano toccati fino a quando non deciderai di effettuare l'update attraverso il DataAdapter.

Se non hai mai utilizzato questi strumenti per la gestione del database, fammi sapere che ti posto un pò di codice con le dovute spiegazioni.

Se ho capito male scusami...

Ciao

Alessandro

attilio Profilo | Junior Member

ti ringrazio, io lo sto usando in questa modalità ma un pochino di codice mi aiuterebbe a meglio comprendere come gestirlo....

SSUPERPIPPO Profilo | Guru

Provo a spiegarti passo passo come devi fare:

1. Creazione di un DataSet contenente un DataTable che dovrai riempire con i dati della relativa tabella del database attraverso il DataAdaprer:

' Importa i namespaces necessari

Imports System
Imports System.Data.SqlClient

Private Sub CreaDataSet()

' Apre la connessione al database

Dim MySqlConnection As SqlConnection

Dim StrConnectionString As String = "Stringa di connessione..."
MySqlConnection = New SqlConnection(StrConnectionString)

Try
MySqlConnection.Open()
Catch ex As Exception
MsgBox("Problemi nell'apertura del database!")
exit sub
End Try

' Crea il DataTable

Dim SqlDS As DataSet
Dim SqlDA as New SqlDataAdapter

Dim MySqlCommand As New SqlCommand

MySqlCommand = "SELECT * FROM MiaTabella"
MySqlCommand.Connection = MySqlConnection
MySqlCommand.CommandTimeout = 30

SqlDA.SelectCommand = MySqlCommand

SqlDA.Fill(SqlDS, "TableName") ' Crea la tabella TableName nel Dataset riempendola (fill) con i dati del database

' Crea automaticamente le istruzioni INSERT/DELETE/UPDATE da assegnare al DataAdapter

Dim CmdBuilder As SqlCommandBuilder = New SqlCommandBuilder(SqlDA)

SqlDA.InsertCommand = CmdBuilder.GetInsertCommand
SqlDA.DeleteCommand = CmdBuilder.GetDeleteCommand
SqlDA.UpdateCommand = CmdBuilder.GetUpdateCommand

2. Effettua il binding del Dataset/DataTable alla DataGridView

Me.MyDataGrid.DataSource=SqlDA
Me.MyDataGrid.DataMember="TableName"

end sub

3. A questo punto, se esegui il programma vedrai visualizzati i dati nella tua DataGridView.
Potrai modificare, aggiungere nuovi record, eliminarli. Il DataTable è una copia lato client
della tabella che realmente risiede nel database per cui tutte le modifiche apportate non
avranno effetto nel database fino a quando deciderai di sincronizzarli.

4. Effettuare la sincronizzazione del database attraverso il metodo Update del DataTable:

' Questo metodo sincronizza il tuo DataTable con la tabella di origine del database

SqlDA .Update(DbDbase.SqlDS.Tables("TableName"))

Spero di essere stato abbastanza chiaro. L'argomento è abbastanza tosto e difficilmente
sintetizzabile in poche riche per cui ti consiglio di approfondire l'argomento, magari con
l'aiuto di un buon libro.

Ti posso consigliare un volume dell'Apogeo intitolato VB.NET Programmazione dei database,
che risulta essere molto semplice (alla portata di tutti) e allo stesso tempo completo.

Ciao

Alessandro
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5