best_king (Normal User)
Rookie
Messaggi: 25
Iscritto: 09/11/2012
|
Salve a tutti,sto creando un programma gestionale in vb e access;ho inserito un datagridview per l'inserimento dei dati nel database,dopo di che ho creato due pulsanti :salva e elimina,con i rispettivi codici.
Allora io vorrei che se l'utente ha inserito dati nella datagridview però si è dimenticato di salvare ,vorrei che all'uscita del form il software capisse che non ha salvato e gli farebbe uscire un messaggio con scritto "non hai salvato,vuoi farlo adesso si o no?COme posso fare ?Grazie a tutti in anticipo
Ultima modifica effettuata da best_king il 09/11/2012 alle 22:06 |
|
Renny (Normal User)
Expert
Messaggi: 231
Iscritto: 30/07/2011
|
Ciao
Io di solito creo una variabile, magari di tipo enum, che tiene conto dello stato del programma.. Ad esempio, puoi avere "nuovo", "modificato", "salvato", "in chiusura", ecc.
Nel tuo caso, devi settare lo status "modificato" come istruzione in un evento collegato all'inserimento dati nella tua datagrid.
Se l'utente salva, imposti lo status su "salvato".
Quando l'utente preme "esci", verifichi lo status e fai apparire una messagebox se è necessario salvare le motifiche.
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Ultima modifica effettuata da LittleHacker il 10/11/2012 alle 0:47 |
|
best_king (Normal User)
Rookie
Messaggi: 25
Iscritto: 09/11/2012
|
Salve e grazie a tutti per le risposte;allora per Renny...ho trovato questo evento che verifica se i valori delle celle sono cambiati,questo
Private Sub CellValueChanged(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) _
Handles DataGridView1.CellValueChanged
End Sub
Però non so come continuare,mi puoi dare una mano se no disturbo?Grazie.
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Esempio:
Codice sorgente - presumibilmente VB.NET |
Dim save As Boolean = False Private Sub CellValueChanged(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) _ Handles DataGridView1.CellValueChanged save = False End Sub Private Sub Form1_Closing(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) _ Handles Form1.FormClosing 'Non mi ricordo bene If(save = False) Then 'Messaggio Else 'Chiudi End If End Sub
|
Ma usi VB o VB.NET, perché se usi VB.NET, hai sbagliato sezione, per questa volta fa niente, ma la prossima posta nella sezione giusta
Ultima modifica effettuata da LittleHacker il 10/11/2012 alle 14:37 |
|
best_king (Normal User)
Rookie
Messaggi: 25
Iscritto: 09/11/2012
|
Ciao,grazie er la risposta adesso lo provo e poi vi faccio sapere....scusa la prossima volta posterò nella sezione giusta...grazie ancora
Ultima modifica effettuata da best_king il 11/11/2012 alle 0:56 |
|
best_king (Normal User)
Rookie
Messaggi: 25
Iscritto: 09/11/2012
|
Ciao,l'ho appena provato ma non funziona, in pratica anche se non modifico nessuna cella mi esce il messaggio che mi dovrebbe uscire soltanto se la modifico..secondo me non funziona bene l'evento cellvaluechange perchè non rileva se il valore è stato modificato o meno....cosa posso fare?grazie ..
|
|
Renny (Normal User)
Expert
Messaggi: 231
Iscritto: 30/07/2011
|
Ciao..
Uhm.. forse perché anche quando carica il dati col binding, viene comunque scatenato l'evento..
Prova a valutare di usare qualche altro evento, il datagrid ne ha tanti.. magari puoi intercettare quando utente clicca su una cella, che in questo modo riceve il focus e diventa "editabile"...
|
|
best_king (Normal User)
Rookie
Messaggi: 25
Iscritto: 09/11/2012
|
ciao,grazie per la pazienza,ho provato anche altri eventi come il doppioclick sulla cella per editarla,ma niente..poi mi sono accorto dell'errore della variabile save,che quando veniva inizializzata era gia false,cioè sempre per questo,quindi l'ho inizializzata a true e va erfettamente...
Codice sorgente - presumibilmente VB.NET |
Dim save As Boolean = True Private Sub DataGridView1_CellMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseClick save = False End Sub Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing Dim msg1 As MsgBoxResult If (save = False) Then msg1 = MsgBox("Vuoi uscire senza salvare?", MsgBoxStyle.YesNo, "Uscita") Else 'Chiudi End If End Sub
|
Spero sia di aiuto ad altri...grazie ancora a tutti..ciaooo
Ultima modifica effettuata da best_king il 11/11/2012 alle 21:50 |
|