Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[vba] codice per non salvare i dati

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[vba] codice per non salvare i dati

Messaggioda yeah782000 » mar mar 08, 2005 8:29 pm

ragazzi ho bisogno di voi !
In un db access ho una maschera di inserimento record ...
In questamaschera c'e' un pulsante di chiusura con questo codice:

Private Sub Comando34_Click()
On Error GoTo Err_Comando34_Click
Dim Risposta As Integer
Risposta = MsgBox("Vuoi chiudere la maschera?", vbQuestion + vbYesNo, Me.Caption)
If Risposta = vbYes Then DoCmd.Close



Exit_Comando34_Click:
Exit Sub

Err_Comando34_Click:
MsgBox Err.Description
Resume Exit_Comando34_Click

End Sub

Questo codice purtroopo ha un bug ...cioe' ... se io inserisco correttamente tutti i dati nella maschera e poi clicco sul pulsante di chiusura, il buon access mi salva comunque i record inseriiti nella maschera ...

Io invece vorrei un pulsante che sul click mi facesse apparire un bel messaggio tipo "Eventuali modifiche NON saranno salvate. Si vuole proseguire ?" ... questo lo so fare ...! quello che non so fare e' l'uscita dalla maschera senza salvare i dati ...!!!!
Come si fa per favore ?
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda Robby78 » mer mar 09, 2005 8:35 am

In quello che hai scritto non c'è nessun riferimento ad un salvataggio dati. Riporta la parte di codice (se c'è) di salvataggio dei dati così ti possiamo aiutare. Nel caso che nel programma usi una datagrid, probabilmente questa è collegata direttamente al database; dovresti scollegare la datagrid dal database e poi "compilarla" tramite un recordset aperto da codice, e successivamente gestire la modifica dei singoli record tramite una interfaccia utente (textbox, combobox ecc...). Potresti anche provare -tenendo la datagrid collegata- con begintrans e rollback / commit trans, ma sono un po' arrugginito su questa tecnica ed ora non ho tempo di riguardarla.
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda yeah782000 » mer mar 09, 2005 10:33 am

Robby78 ha scritto:In quello che hai scritto non c'è nessun riferimento ad un salvataggio dati. Riporta la parte di codice (se c'è) di salvataggio dei dati così ti possiamo aiutare. Nel caso che nel programma usi una datagrid, probabilmente questa è collegata direttamente al database; dovresti scollegare la datagrid dal database e poi "compilarla" tramite un recordset aperto da codice, e successivamente gestire la modifica dei singoli record tramite una interfaccia utente (textbox, combobox ecc...). Potresti anche provare -tenendo la datagrid collegata- con begintrans e rollback / commit trans, ma sono un po' arrugginito su questa tecnica ed ora non ho tempo di riguardarla.


ti ringrazio dell' interessamento roby pero' di vba non ci capisco molto !!!
Ho semplicemente fatto un copia-incolla del codice che e' associato al pulsante di chiusura ... In effetti non c'e' nessun riferimento al salvataggio dati eppure se inserisco i dati nella maschera e successivamente la chiudo , il sistema salva il record inserito .. !
Se puo' esserti d'aiuto ecco il codice associato al pulsante di salvataggio dati:
Private Sub Comando37_Click()
On Error GoTo Err_Comando37_Click

Dim Risposta As Integer
Risposta = MsgBox("Sei sicuro di voler salvare il movimento?", vbQuestion + vbYesNo, Me.Caption)
If Risposta = vbYes Then DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70





Exit_Comando37_Click:
Exit Sub

Err_Comando37_Click:
MsgBox Err.Description
Resume Exit_Comando37_Click

End Sub


Help me !
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am


Messaggioda Robby78 » mer mar 09, 2005 10:48 am

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70


DoCmd che tipo di oggetto è?
elencami le costanti ac...... che hai; potresti provare a copiare nel comando di chiusura form la stessa istruzione riportata sopra sostituendo il parametro acSaveRecord con un parametro che invece annulli la transazione...
Stò azzardando eh... non è facile parlare sulla base di pure ipotesi; bisognerebbe sapere almeno un minimo cosa ci stà sotto; gli oggetti usati, altrimenti aiutarti è una cosa pressochè impossibile...
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda yeah782000 » mer mar 09, 2005 11:43 am

Caro Robby...ancora graazie x il tuo aiuto ...

Credo che la cosa migliore sia quello di postarti il db ...

In allegato troverai una forma molto molto ridotta e semplificata del db ... ma dovrebbe bastare per il problema in questione...

grazie ancora
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda yeah782000 » mer mar 09, 2005 11:56 am

non rieesco ad inserire l'allegato (.zip 40 k) ...
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda yeah782000 » mer mar 09, 2005 11:59 am

ci riprovo
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda Robby78 » mer mar 09, 2005 12:09 pm

no, io mi riferivo agli oggetti usati nell'applicazione vb; del database x ora nn ne ho bisogno
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda yeah782000 » mer mar 09, 2005 1:22 pm

azz ... !! non ti seguo ...!::!:
Nel caso della maschera gli oggetti non sono i pulsanti la maschera stessa, etc ......

Scusa ma non sono afferrato in VBA .... [sedia]
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda Robby78 » mer mar 09, 2005 1:35 pm

yeah782000 ha scritto:azz ... !! non ti seguo ...!::!:
Nel caso della maschera gli oggetti non sono i pulsanti la maschera stessa, etc ......

Scusa ma non sono afferrato in VBA .... [sedia]


Neanch'io ho mai usato VBA, ma conosco bene VB. Gli oggetti che mi interessano sono quelli che vengono usati x interfacciarsi col database sia grafici (datagrid, datacontrol ecc...) che non (recordset, connessioni ecc..); altrimenti non posso sapere come funziona il tuo programma, e di conseguenza non posso aiutarti... ad esempio ti avevo chiesto cos'è quel "DoCmd" che viene usato nella sub Comando37_Click().
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda yeah782000 » mer mar 09, 2005 1:57 pm

Non lo so caro roby cosa sia Do.Cmd !!!
Come ti ho detto prima io ho fatto tutto utilizzano Access e le varie procedure guidate che mette a dsiposizione ad esempio per la creazione di pulsanti.
Nel db che ti ho postato puoi vedere nel pulsante Chiudi (cliccando col destro -- Proprieta'--- sotto la scheda Evento -- Su Click), dove c'e' routine evento, il codice del pulsante ... scritto, ripeto, da Access ...

Io ho avuto la tua stessa intuizione ... Dove dici di sostituire acSaveRecord ... Penso che sia un intuizione giusta ...

E' che non so come scrivere il codice.... Come potrei fare una negazione di acSaveRecord .... Tipo Not acSaveRecord ...qualcosa del genere ....
In effetti il pulsante Salva funziona bene in quanto anche se io inserisco tutti i dati , clicco su Salva e poi su No, il sistema NON mi salva il record ...

Giustamente come dici tu, nel pulsante Chiudi, non c'e' nessun riferimento a salvataggio dati ..... !!!! [cry+]
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda Robby78 » mer mar 09, 2005 2:17 pm

scusami.... mi era sfuggito il dettaglio che il codice è DENTRO al database.... [:I]

prova a sostituire questa parte di codice:

Private Sub Comando34_Click()
Dim Risposta As Integer

On Error GoTo Err_Comando34_Click

Risposta = MsgBox("Vuoi chiudere la maschera? (i dati non salvati andranno persi!)", vbQuestion + vbYesNo, Me.Caption)
If Risposta = vbYes Then
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
DoCmd.Close
End If


Exit_Comando34_Click:
Exit Sub

Err_Comando34_Click:
MsgBox Err.Description
Resume Exit_Comando34_Click

End Sub

fammi sapere...
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda yeah782000 » mer mar 09, 2005 8:48 pm

grandissimo roby !!! ancora una volta hai fatto centro !!!!!! [applauso]
mi hai risolto un problema quasi esistenziale !!!!!!!!!!!!!!!!!!!!! [:-D]

grazie
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda yeah782000 » gio mar 10, 2005 10:32 am

Caro Roby...
il tuo codice funziona perfettamante x non salvare i dati chiudendo la maschera.
Il problema e' che se apro la maschera, non inserisco nessun record e provo a chiuderla, non succede nulla...o meglio mi esce fuori l'allert "comando azione o annulla non diponibile" ...

Che fo '???? [cry]
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda Robby78 » gio mar 10, 2005 10:43 am

Il problema è che se non fai nulla, tu annulli il nulla, e questo non è logico, quindi il programma se la prende un po'. Per risolvere la cosa in maniera ineccepibile, bisognerebbe controllare quando tu fai un inserimento o una modifica e controllare quando questo inserimento/modifica viene portato a termine; eseguire poi la riga che ti ho fatto aggiungere soltanto se l'operazione è iniziata, ma nn è mai terminata. Tuttavia... c'è una scorciatoia poco elegante ma -almeno in questo caso- efficace e senza controindicazioni particolari. Devi aggiungere 2 righe al codice che ti ho postato:

Private Sub Comando34_Click()
Dim Risposta As Integer

On Error GoTo Err_Comando34_Click

Risposta = MsgBox("Vuoi chiudere la maschera? (i dati non salvati andranno persi!)", vbQuestion + vbYesNo, Me.Caption)
If Risposta = vbYes Then
On Error Resume Next
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
On Error GoTo Err_Comando34_Click
DoCmd.Close
End If


Exit_Comando34_Click:
Exit Sub

Err_Comando34_Click:
MsgBox Err.Description
Resume Exit_Comando34_Click

End Sub
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda yeah782000 » gio mar 10, 2005 11:17 am

ok sei grande !!!
Non abbiate paura di accogliere Gesù nella vostra vita (Karol Wojtyla)
Avatar utente
yeah782000
Silver Member
Silver Member
 
Messaggi: 1385
Iscritto il: lun apr 19, 2004 10:06 am

Messaggioda Robby78 » gio mar 10, 2005 11:33 am

[:-H] heheheh troppo buono!
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising