Dialog Box

lunedì 18 settembre 2006 - 10.07

ennekappa Profilo | Newbie

Scusate se vi riempio il forum con domende stupide ma non so proprio come e dove cercare la soluzione al mio problema.
Nel mio programma ho una windows form con un datagrid per aggiornare un database e nel menù file c'è un pulsante ESCI.
Volevo che all'uscita mi chiedesse se voglio salvare le modifiche, ignorarle ed uscire comunque o annullare l'uscita però solo se sono state effettuare delle modifiche sul data grid.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

blood Profilo | Senior Member

>Volevo che all'uscita mi chiedesse se voglio salvare le modifiche,
>ignorarle ed uscire comunque o annullare l'uscita però solo se
>sono state effettuare delle modifiche sul data grid.

Devi crearti un tuo datatable ed associargli il metodo Dataset.GetChanges() , che ritorna un datatable contenente esclusivamente le modifiche, dopodichè se non è nothing allora vuoldire che sono state fatte le modifiche e se clicka SI gli fai un application.exit() altrimenti se clicka No gli dai un exit Sub
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

ennekappa Profilo | Newbie

Con Me.Db1DataSet.GetChanges() Is Nothing funziona, grazie mille, però resta un problema: se c'è stata una modifica ad un record esistente deve partire la query di modifica, se invece è stato aggiunto un nuovo record allore deve partire la query di aggiunta. Come faccio a distinguere le due cose?

blood Profilo | Senior Member

>ok, smanettando ho trovato il metodo HasChanges().
>Però il problema resta: se c'è stata una modifica ad un record
>esistente deve partire la query di modifica, se invece è stato
>aggiunto un nuovo record allore deve partire la query di aggiunta.
>Come faccio a distinguere le due cose?

scusa eh...e allora io cosa te l'ho detto a fare di prendere solo i cambiamenti così poi ci fai diretamente un DataAdapter.Update(datatable_con_modifiche) ?????
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

ennekappa Profilo | Newbie

Scusa con HasChanges non funzionava.
Però DataAdapter.Update(datatable_con_modifiche) funziona solo con le modifiche, non se ho aggiunto un record sul database.

blood Profilo | Senior Member

>Scusa con HasChanges non funzionava.
>Però DataAdapter.Update(datatable_con_modifiche) funziona solo
>con le modifiche, non se ho aggiunto un record sul database.

Ma no che dici...se tu fai :

'Sincronizzo il mio dataset terminando la fase di modifica Me.BindingContext(ds, Nometabella).EndCurrentEdit() Dim t As DataTable = ds.Tables(0).GetChanges If Not t Is Nothing Then 'Se ci sono modifiche, aggiorno e metto in pari da.Update(t) ds.AcceptChanges() End If

così lui ti aggiorna tutte le modifiche...anche la creazione o la eliminazione di record...non solo le "modifiche" ai record...
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

ennekappa Profilo | Newbie

Ma la query di modifica non mi inserisce un nuovo record nel database (o sbaglio?)
Io pensavo di fare un controllo sulle righe del datagrid:

Dim righe = Me.DataGridView1.RowCount al caricamento inizial della tabella ... Me.DataGridView1.EndEdit() Me.DataGridView1.Refresh() Me.Db1DataSet.AcceptChanges() ... If Me.DataGridView1.RowCount = righe Then Me.PilcheTableAdapter.UpdateQuery(modifica) MsgBox("Modifiche effettuate") Else Me.PilcheTableAdapter.InsertQuery(inserimento) MsgBox("Inserimento avvenuto con successo") End If

così funziona però se secondo te è superfluo lo cambio come dici tu.

totti240282 Profilo | Guru

se tu usi

Me.Db1DataSet.AcceptChanges()

il dataadapter non aggiornerà mai i dati....
C'è solo un capitano !!!!!!

blood Profilo | Senior Member

devi metterlo dopo l'update
---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5