Discussione:
pulsante salva record
(troppo vecchio per rispondere)
Access
2007-03-24 22:31:50 UTC
Permalink
ho un database con all'interno un pulsante denominato "salva" che a seguito
della sua pressione effettua una serie di controlli sui dati inseriti nelle
textboxe poi salva il tutto impostando la maschere a non modificabile.
Dunque, accanto a questo tasto ne ho creato un altro denominato "annulla" al
fine di annullare l'eventuale inserimento di dati in corso.
In quest'ultimo contesto ho riscontrato quanto segue:

se un utente inserisce dei dati errati, alla pressione del tasto salva verrà
avvertito ed indirizzato nella textbox incriminata; a seguito di cio, se
tale utente decide di annullare le modifiche il record rimane comunque
salvato.

Stessa cosa accade se desidero modificare dei dati inseriti.

Ad esempio voglio modificate il campo CAP e durante la modifica inserisco 4
cifre invece di cinque, premo "salva" mi viene segnalato, allora decido di
annulare ma i dati errati rimangono li non mi viene restituito il dato
precedente. Come mai?

Qualcuno puo darmi una mano. GRAZIE
Cinzia
2007-03-25 08:45:02 UTC
Permalink
Post by Access
ho un database con all'interno un pulsante denominato "salva" che a
seguito della sua pressione effettua una serie di controlli sui dati
inseriti nelle textboxe poi salva il tutto impostando la maschere a non
modificabile.
Dunque, accanto a questo tasto ne ho creato un altro denominato "annulla"
al fine di annullare l'eventuale inserimento di dati in corso.
se un utente inserisce dei dati errati, alla pressione del tasto salva
verrà avvertito ed indirizzato nella textbox incriminata; a seguito di
cio, se tale utente decide di annullare le modifiche il record rimane
comunque salvato.
Stessa cosa accade se desidero modificare dei dati inseriti.
Ad esempio voglio modificate il campo CAP e durante la modifica inserisco
4 cifre invece di cinque, premo "salva" mi viene segnalato, allora decido
di annulare ma i dati errati rimangono li non mi viene restituito il dato
precedente. Come mai?
Qualcuno puo darmi una mano. GRAZIE
Ciao Access,
puoi dirci il codice che usi per Salvare/Annullare le modifiche?
Se questi controlli li facessi nell'evento Prima di Aggiornare della
maschera, non avresti bisogno dei pulsanti e impostando il parametro Cancel
a true annulleresti modifiche e inserimento.
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
----------------------------------------
Access
2007-03-25 09:10:50 UTC
Permalink
Post by Cinzia
Post by Access
ho un database con all'interno un pulsante denominato "salva" che a
seguito della sua pressione effettua una serie di controlli sui dati
inseriti nelle textboxe poi salva il tutto impostando la maschere a non
modificabile.
Dunque, accanto a questo tasto ne ho creato un altro denominato "annulla"
al fine di annullare l'eventuale inserimento di dati in corso.
se un utente inserisce dei dati errati, alla pressione del tasto salva
verrà avvertito ed indirizzato nella textbox incriminata; a seguito di
cio, se tale utente decide di annullare le modifiche il record rimane
comunque salvato.
Stessa cosa accade se desidero modificare dei dati inseriti.
Ad esempio voglio modificate il campo CAP e durante la modifica inserisco
4 cifre invece di cinque, premo "salva" mi viene segnalato, allora decido
di annulare ma i dati errati rimangono li non mi viene restituito il dato
precedente. Come mai?
Qualcuno puo darmi una mano. GRAZIE
Ciao Access,
puoi dirci il codice che usi per Salvare/Annullare le modifiche?
Se questi controlli li facessi nell'evento Prima di Aggiornare della
maschera, non avresti bisogno dei pulsanti e impostando il parametro
Cancel a true annulleresti modifiche e inserimento.
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
----------------------------------------
Ciao Cinzia e grazie per l'attenzione.

Allora il pulsante salva:

Private Sub Comando44_Click()
On Error GoTo Err_Comando44_Click



DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Testo86.Value = Testo72.Value
Provincia.Value = Prov.Value
ProvRes.Value = Prov1.Value
CapRes.Value = Cap.Value
CasellaCombinata73.Value = Estensore.Value
Testo75.Value = tprovvguida_Estensore.Value
Comando46.Enabled = True
Me.Refresh

CONTROLLA 'funzione che controlla la correttezza dei i dati inseriti nelle
textbox


Application.SetOption "Confirm Record Changes", False
Application.SetOption "Confirm Document Deletions", False
Application.SetOption "Confirm Action Queries", False

'------- esegue la query di pulizia _
cioè cancella ogni record presente nella tabella provvisoria
DoCmd.OpenQuery "qProvvGuidaQ"

'------- copia il record corrente nella tabella provvisoria
DoCmd.OpenQuery "tProvvGuida Query"

Application.SetOption "Confirm Record Changes", True
Application.SetOption "Confirm Document Deletions", True
Application.SetOption "Confirm Action Queries", True

Exit_Comando44_Click:
Exit Sub

Err_Comando44_Click:
MsgBox Err.Description
Resume Exit_Comando44_Click

End Sub



Mentre il pulsante modifica:

Private Sub Comando45_Click()
On Error GoTo Err_Comando45_Click

Comando46.Enabled = True

DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70



Comando43.Enabled = True
Comando44.Enabled = False
Comando47.Enabled = True
Comando43.SetFocus
Comando45.Enabled = False

CasellaControllo83.Value = True
Me.AllowEdits = False
If Comando48.Enabled = False Then Comando48.Enabled = True

Dim ctrl As Control
On Error Resume Next
For Each ctrl In Controls

ctrl.BackColor = RGB(300, 300, 350)
Next
Exit_Comando45_Click:
Exit Sub

Err_Comando45_Click:
'MsgBox "Nessuna modifica e' stata EFFETTUATA", vbInformation,
"Attenzione"
Comando43.Enabled = True
Comando44.Enabled = False
Comando47.Enabled = True
Comando43.SetFocus
Comando45.Enabled = False
CasellaControllo83.Value = True
Me.AllowEdits = False
If Comando48.Enabled = False Then Comando48.Enabled = True
Resume Exit_Comando45_Click

End Sub


Ecco questo è il codice che uso.

Ciao e ancora grazie
Cinzia
2007-03-25 11:59:56 UTC
Permalink
Post by Access
Post by Cinzia
Post by Access
ho un database con all'interno un pulsante denominato "salva" che a
seguito della sua pressione effettua una serie di controlli sui dati
inseriti nelle textboxe poi salva il tutto impostando la maschere a non
modificabile.
Dunque, accanto a questo tasto ne ho creato un altro denominato
"annulla" al fine di annullare l'eventuale inserimento di dati in corso.
se un utente inserisce dei dati errati, alla pressione del tasto salva
verrà avvertito ed indirizzato nella textbox incriminata; a seguito di
cio, se tale utente decide di annullare le modifiche il record rimane
comunque salvato.
Stessa cosa accade se desidero modificare dei dati inseriti.
Ad esempio voglio modificate il campo CAP e durante la modifica
inserisco 4 cifre invece di cinque, premo "salva" mi viene segnalato,
allora decido di annulare ma i dati errati rimangono li non mi viene
restituito il dato precedente. Come mai?
Qualcuno puo darmi una mano. GRAZIE
Ciao Access,
puoi dirci il codice che usi per Salvare/Annullare le modifiche?
Se questi controlli li facessi nell'evento Prima di Aggiornare della
maschera, non avresti bisogno dei pulsanti e impostando il parametro
Cancel a true annulleresti modifiche e inserimento.
Ciao Cinzia e grazie per l'attenzione.
Private Sub Comando44_Click()
On Error GoTo Err_Comando44_Click
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Testo86.Value = Testo72.Value
Provincia.Value = Prov.Value
ProvRes.Value = Prov1.Value
CapRes.Value = Cap.Value
CasellaCombinata73.Value = Estensore.Value
Testo75.Value = tprovvguida_Estensore.Value
Comando46.Enabled = True
Me.Refresh
CONTROLLA 'funzione che controlla la correttezza dei i dati inseriti nelle
textbox
Application.SetOption "Confirm Record Changes", False
Application.SetOption "Confirm Document Deletions", False
Application.SetOption "Confirm Action Queries", False
'------- esegue la query di pulizia _
cioè cancella ogni record presente nella tabella provvisoria
DoCmd.OpenQuery "qProvvGuidaQ"
'------- copia il record corrente nella tabella provvisoria
DoCmd.OpenQuery "tProvvGuida Query"
Application.SetOption "Confirm Record Changes", True
Application.SetOption "Confirm Document Deletions", True
Application.SetOption "Confirm Action Queries", True
Exit Sub
MsgBox Err.Description
Resume Exit_Comando44_Click
End Sub
Private Sub Comando45_Click()
On Error GoTo Err_Comando45_Click
Comando46.Enabled = True
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Comando43.Enabled = True
Comando44.Enabled = False
Comando47.Enabled = True
Comando43.SetFocus
Comando45.Enabled = False
CasellaControllo83.Value = True
Me.AllowEdits = False
If Comando48.Enabled = False Then Comando48.Enabled = True
Dim ctrl As Control
On Error Resume Next
For Each ctrl In Controls
ctrl.BackColor = RGB(300, 300, 350)
Next
Exit Sub
'MsgBox "Nessuna modifica e' stata EFFETTUATA", vbInformation,
"Attenzione"
Comando43.Enabled = True
Comando44.Enabled = False
Comando47.Enabled = True
Comando43.SetFocus
Comando45.Enabled = False
CasellaControllo83.Value = True
Me.AllowEdits = False
If Comando48.Enabled = False Then Comando48.Enabled = True
Resume Exit_Comando45_Click
End Sub
Ciao Access,
prendiamo il comando che dovrebbe salvare previa verifica di correttezza, da
quello che vedo scritto nel codice io deduco queste cose:
1)Come prima cosa salvi il record corrente (ma non andrebbe salvato solo se
i dati sono corretti?)
2)Copi dei valori da alcuni contolli in altri controlli sulla stessa
maschera, per quale motivo?
3)Esegui la funzione Controlla (cosa fa?)
4)Indipendententemente dal risultato della funzione, svuoti il contenuto di
una tabella provvisoria e copi il record corrente in questa tab. provvisoria
boh mi sfugge la logica che sta dietro a queste operazioni, secondo il mio
modo di vedere le operazioni da fare dovrebbero essere :
1)Controllo che i dati inseriti siano corretti
2)Se sono corretti salvo il record se non lo sono mando un messaggio di
errore all'utente e lo invito a modificarli senza salvare

I problemi in modifica a mio parere dipendono sempre da una non corretta
gestione del comando Salva.
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
----------------------------------------
Access
2007-03-25 12:50:48 UTC
Permalink
Post by Cinzia
Post by Access
Post by Cinzia
Post by Access
ho un database con all'interno un pulsante denominato "salva" che a
seguito della sua pressione effettua una serie di controlli sui dati
inseriti nelle textboxe poi salva il tutto impostando la maschere a non
modificabile.
Dunque, accanto a questo tasto ne ho creato un altro denominato
"annulla" al fine di annullare l'eventuale inserimento di dati in corso.
se un utente inserisce dei dati errati, alla pressione del tasto salva
verrà avvertito ed indirizzato nella textbox incriminata; a seguito di
cio, se tale utente decide di annullare le modifiche il record rimane
comunque salvato.
Stessa cosa accade se desidero modificare dei dati inseriti.
Ad esempio voglio modificate il campo CAP e durante la modifica
inserisco 4 cifre invece di cinque, premo "salva" mi viene segnalato,
allora decido di annulare ma i dati errati rimangono li non mi viene
restituito il dato precedente. Come mai?
Qualcuno puo darmi una mano. GRAZIE
Ciao Access,
puoi dirci il codice che usi per Salvare/Annullare le modifiche?
Se questi controlli li facessi nell'evento Prima di Aggiornare della
maschera, non avresti bisogno dei pulsanti e impostando il parametro
Cancel a true annulleresti modifiche e inserimento.
Ciao Cinzia e grazie per l'attenzione.
Private Sub Comando44_Click()
On Error GoTo Err_Comando44_Click
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Testo86.Value = Testo72.Value
Provincia.Value = Prov.Value
ProvRes.Value = Prov1.Value
CapRes.Value = Cap.Value
CasellaCombinata73.Value = Estensore.Value
Testo75.Value = tprovvguida_Estensore.Value
Comando46.Enabled = True
Me.Refresh
CONTROLLA 'funzione che controlla la correttezza dei i dati inseriti
nelle textbox
Application.SetOption "Confirm Record Changes", False
Application.SetOption "Confirm Document Deletions", False
Application.SetOption "Confirm Action Queries", False
'------- esegue la query di pulizia _
cioè cancella ogni record presente nella tabella provvisoria
DoCmd.OpenQuery "qProvvGuidaQ"
'------- copia il record corrente nella tabella provvisoria
DoCmd.OpenQuery "tProvvGuida Query"
Application.SetOption "Confirm Record Changes", True
Application.SetOption "Confirm Document Deletions", True
Application.SetOption "Confirm Action Queries", True
Exit Sub
MsgBox Err.Description
Resume Exit_Comando44_Click
End Sub
Private Sub Comando45_Click()
On Error GoTo Err_Comando45_Click
Comando46.Enabled = True
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Comando43.Enabled = True
Comando44.Enabled = False
Comando47.Enabled = True
Comando43.SetFocus
Comando45.Enabled = False
CasellaControllo83.Value = True
Me.AllowEdits = False
If Comando48.Enabled = False Then Comando48.Enabled = True
Dim ctrl As Control
On Error Resume Next
For Each ctrl In Controls
ctrl.BackColor = RGB(300, 300, 350)
Next
Exit Sub
'MsgBox "Nessuna modifica e' stata EFFETTUATA", vbInformation,
"Attenzione"
Comando43.Enabled = True
Comando44.Enabled = False
Comando47.Enabled = True
Comando43.SetFocus
Comando45.Enabled = False
CasellaControllo83.Value = True
Me.AllowEdits = False
If Comando48.Enabled = False Then Comando48.Enabled = True
Resume Exit_Comando45_Click
End Sub
Ciao Access,
prendiamo il comando che dovrebbe salvare previa verifica di correttezza,
1)Come prima cosa salvi il record corrente (ma non andrebbe salvato solo
se i dati sono corretti?)
Si effettivamente hai ragione per cui dovrei modificare il codice cosi?

if controlla = false Then

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

End if
Post by Cinzia
2)Copi dei valori da alcuni contolli in altri controlli sulla stessa
maschera, per quale motivo?
Si, copio dei dati che prelevo da caselle di testo non visibili collegate
con tabelle diverse dall'origine dati della mschera principale
Post by Cinzia
3)Esegui la funzione Controlla (cosa fa?)
Controlla se ad esempio il CAP se è corretto, oppure se il codicefiscale è
uguale a 17 caratteri, se i campi obbligatori sono debitamente compilati
ecc.
Post by Cinzia
4)Indipendententemente dal risultato della funzione, svuoti il contenuto
di una tabella provvisoria e copi il record corrente in questa tab.
provvisoria
Si perche il data base ha dei collegamenti in stampa unione con word,
pertanto al fine di recuperare nella stampa unione solo il record corrente
riempio e svuoto una tabella temporanea aggiornata da un query.
Post by Cinzia
boh mi sfugge la logica che sta dietro a queste operazioni, secondo il mio
1)Controllo che i dati inseriti siano corretti
2)Se sono corretti salvo il record se non lo sono mando un messaggio di
errore all'utente e lo invito a modificarli senza salvare
Come ho indicato sopra va bene?
Post by Cinzia
I problemi in modifica a mio parere dipendono sempre da una non corretta
gestione del comando Salva.
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
----------------------------------------
Grazie ancora per l'interessamento
Cinzia
2007-03-25 18:41:19 UTC
Permalink
Post by Access
Post by Cinzia
Post by Access
Post by Cinzia
Post by Access
ho un database con all'interno un pulsante denominato "salva" che a
seguito della sua pressione effettua una serie di controlli sui dati
inseriti nelle textboxe poi salva il tutto impostando la maschere a
non modificabile.
Dunque, accanto a questo tasto ne ho creato un altro denominato
"annulla" al fine di annullare l'eventuale inserimento di dati in corso.
se un utente inserisce dei dati errati, alla pressione del tasto salva
verrà avvertito ed indirizzato nella textbox incriminata; a seguito di
cio, se tale utente decide di annullare le modifiche il record rimane
comunque salvato.
Stessa cosa accade se desidero modificare dei dati inseriti.
Ad esempio voglio modificate il campo CAP e durante la modifica
inserisco 4 cifre invece di cinque, premo "salva" mi viene segnalato,
allora decido di annulare ma i dati errati rimangono li non mi viene
restituito il dato precedente. Come mai?
Qualcuno puo darmi una mano. GRAZIE
Ciao Access,
puoi dirci il codice che usi per Salvare/Annullare le modifiche?
Se questi controlli li facessi nell'evento Prima di Aggiornare della
maschera, non avresti bisogno dei pulsanti e impostando il parametro
Cancel a true annulleresti modifiche e inserimento.
Ciao Cinzia e grazie per l'attenzione.
Private Sub Comando44_Click()
On Error GoTo Err_Comando44_Click
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Testo86.Value = Testo72.Value
Provincia.Value = Prov.Value
ProvRes.Value = Prov1.Value
CapRes.Value = Cap.Value
CasellaCombinata73.Value = Estensore.Value
Testo75.Value = tprovvguida_Estensore.Value
Comando46.Enabled = True
Me.Refresh
CONTROLLA 'funzione che controlla la correttezza dei i dati inseriti
nelle textbox
Application.SetOption "Confirm Record Changes", False
Application.SetOption "Confirm Document Deletions", False
Application.SetOption "Confirm Action Queries", False
'------- esegue la query di pulizia _
cioè cancella ogni record presente nella tabella provvisoria
DoCmd.OpenQuery "qProvvGuidaQ"
'------- copia il record corrente nella tabella provvisoria
DoCmd.OpenQuery "tProvvGuida Query"
Application.SetOption "Confirm Record Changes", True
Application.SetOption "Confirm Document Deletions", True
Application.SetOption "Confirm Action Queries", True
Exit Sub
MsgBox Err.Description
Resume Exit_Comando44_Click
End Sub
Private Sub Comando45_Click()
On Error GoTo Err_Comando45_Click
Comando46.Enabled = True
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Comando43.Enabled = True
Comando44.Enabled = False
Comando47.Enabled = True
Comando43.SetFocus
Comando45.Enabled = False
CasellaControllo83.Value = True
Me.AllowEdits = False
If Comando48.Enabled = False Then Comando48.Enabled = True
Dim ctrl As Control
On Error Resume Next
For Each ctrl In Controls
ctrl.BackColor = RGB(300, 300, 350)
Next
Exit Sub
'MsgBox "Nessuna modifica e' stata EFFETTUATA", vbInformation,
"Attenzione"
Comando43.Enabled = True
Comando44.Enabled = False
Comando47.Enabled = True
Comando43.SetFocus
Comando45.Enabled = False
CasellaControllo83.Value = True
Me.AllowEdits = False
If Comando48.Enabled = False Then Comando48.Enabled = True
Resume Exit_Comando45_Click
End Sub
Ciao Access,
prendiamo il comando che dovrebbe salvare previa verifica di correttezza,
1)Come prima cosa salvi il record corrente (ma non andrebbe salvato solo
se i dati sono corretti?)
Si effettivamente hai ragione per cui dovrei modificare il codice cosi?
if controlla = false Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End if
Ciao Access,
se la funzione Controlla ritorna False se tutti i dati sono giusti allora va
bene così altrimenti sarà
if controlla then
DoCmd.RunCommand acCmdSaveRecord 'Preferisco questa forma che è meno
criptica dell'altra
end if
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
----------------------------------------
Access
2007-03-25 22:11:55 UTC
Permalink
Post by Cinzia
Ciao Access,
se la funzione Controlla ritorna False se tutti i dati sono giusti allora
va bene così altrimenti sarà
if controlla then
DoCmd.RunCommand acCmdSaveRecord 'Preferisco questa forma che è meno
criptica dell'altra
end if
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
----------------------------------------
Ok, grazie tante Cinzia.


Ciao

Access
2007-03-25 09:23:57 UTC
Permalink
Post by Cinzia
Post by Access
ho un database con all'interno un pulsante denominato "salva" che a
seguito della sua pressione effettua una serie di controlli sui dati
inseriti nelle textboxe poi salva il tutto impostando la maschere a non
modificabile.
Dunque, accanto a questo tasto ne ho creato un altro denominato "annulla"
al fine di annullare l'eventuale inserimento di dati in corso.
se un utente inserisce dei dati errati, alla pressione del tasto salva
verrà avvertito ed indirizzato nella textbox incriminata; a seguito di
cio, se tale utente decide di annullare le modifiche il record rimane
comunque salvato.
Stessa cosa accade se desidero modificare dei dati inseriti.
Ad esempio voglio modificate il campo CAP e durante la modifica inserisco
4 cifre invece di cinque, premo "salva" mi viene segnalato, allora decido
di annulare ma i dati errati rimangono li non mi viene restituito il dato
precedente. Come mai?
Qualcuno puo darmi una mano. GRAZIE
Ciao Access,
puoi dirci il codice che usi per Salvare/Annullare le modifiche?
Se questi controlli li facessi nell'evento Prima di Aggiornare della
maschera, non avresti bisogno dei pulsanti e impostando il parametro
Cancel a true annulleresti modifiche e inserimento.
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
----------------------------------------
Scusa Cinzia, non avevo letto dell'evneto Prima di Aggiornare.

No cosi non andrebbe bene, perche' l'utente finale non si renderebbe conto
di effettuare delle operazioni di salvataggio e/o modifica.

Poi ad esempio se l'utente finale al termine dell'inserimento dei dati si
renderebbe conto di aver inserito la persona sbagliata oppure la persona a
cui non va rilasciato alcun documento, non potrebbe annullare le modifiche.

Cincia, io spero mi possa aiutare ad apportare qualche modifica al codice
che ho postato.

Grazie ciao
Continua a leggere su narkive:
Loading...