Newsgroup: it.comp.appl.access
Titolo: consentire modifiche record su domanda

ho avuto il problema di un collega che si è lamentato di aver
involontariamente modificato dei record su maschera,
quello che chiedo è se è possibile la modifica dei record solo su una
conferma?
es. 
record esistente,
se si seleziona un qualsiasi campo e si cerca di modificarlo compare una
richiesta di conferma a voler modificare il record, se si pigia SI la
modifica ha effetto, se si pigia NO, la modifica non viene eseguita.
E' possibile?
se si, come????
grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 grazie
L'evento BeforeUpdate della maschera espone l'argomento Cancel; ad es.
Private Sub Form_BeforeUpdate(Cancel As Integer)
    If MsgBox("Confermi le modifiche", vbYesNo) = vbNo Then
        Cancel = True
    End If
End Sub
--
Ciao
Galliano.

 Galliano.
ok! stiamo sulla buona strada, penso!
solo che se alla richiesta della conferma le modifiche, io rispondo NO, 
non mi ripristina la schermara o il record originale! e non mi fa andare
avanti o indietro con i record.
suggerimenti?



	  undo
          Cancel = True
end if
--
ac

 grazie
Per annullare le modifiche, prova cosě:
Private Sub Form_BeforeUpdate(Cancel As Integer)
    If MsgBox("Confermi le modifiche?", vbYesNo) = vbNo Then
        Cancel = True
        Me.Undo


Alessandro Cara ha scritto:

OKKKK!!
alla grande!
grazie
è l'undo che fa la differenza!!! :-)))))


 Galliano
grazie!
funziona sia come hai detto tu che come ha detto Alessandro che non ha
inserito il Me.
Ps. questo Me. che differenza farebbe?


 Ps. questo Me. che differenza farebbe?
"Me" identifica l'oggetto in cui ti trovi. In questo caso ti trovi su un 
oggetto di classe form e quindi il me identifica il tuo form.
In genere "me" viene assunto per default. Come altre proprieta' o metodi.
i.e quando fai x = me!caselladitesto ed hai definito x come stringa 
viene associata, per default, la proprieta' "Value" dell'oggetto casella 
di testo.
--
a.cara

 Ps. questo Me. che differenza farebbe?
Il me stabilisce un riferimento all'istanza specifica della maschera o della
classe in uso. In questo caso è pleonastico, ma potrebbe non esserlo se ci
fossero più istanze della stessa maschera o classe. Confesso però di usarlo
soprattutto per sfruttare la comodità dell'intellisense... :)
--
Ciao
Galliano.

 Galliano.
grazie a tutti e due per la spiegazione
gentilissimi
ciao
luigi


 Galliano



  if not newrecord then
     If MsgBox("Confermi le modifiche?", vbYesNo) = vbNo Then
         Cancel = True
         Me.Undo
     End If
  endif
--
ac

 ac
Alessandro!
anche con questa formula, mi fa lo stesso scherzetto!
luigi


 
O il record non e' nuovo o via codice  fai qualche altra cosa. Il fatto 
che passi due volte dalla msgbox puo' essere un sintomo.
Se non e' troppo potresti copiancollare tutto il codice cha hai dietro 
il form?
--
a.cara

Alessandro Cara ha scritto:



ok!  eccolo!
Private Sub CasellaCombinata51_AfterUpdate()
    ' Trova il record corrispondente al controllo
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Contatore] = '" & Me![CasellaCombinata51] & "'"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
Private Sub CasellaCombinata53_AfterUpdate()
    ' Trova il record corrispondente al controllo
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Contatore] = '" & Me![CasellaCombinata53] & "'"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
Private Sub CasellaCombinata55_AfterUpdate()
    ' Trova il record corrispondente al controllo
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Contatore] = '" & Me![CasellaCombinata55] & "'"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
Private Sub Difensore_ente_AfterUpdate()
Me.Refresh '(così siamo sicuri che venga preso il dato)
If IsNull(Me.Difensore_ente) Then
Me.costituito = "NO"
Else
Me.costituito = "SI"
End If
Me.Refresh
End Sub
Private Sub Comando73_Click()
On Error GoTo Err_Comando73_Click
    Dim stDocName As String
    Dim stLinkCriteria As String
    DoCmd.Close
    stDocName = "autorità_giudiziaria"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
 
Exit_Comando73_Click:
    Exit Sub
Err_Comando73_Click:
    MsgBox Err.Description
    Resume Exit_Comando73_Click
 
End Sub
Private Sub Difensore_ente_Click()
Me.Refresh '(così siamo sicuri che venga preso il dato)
If IsNull(Me.Difensore_ente) Then
Me.costituito = "NO"
Else
Me.costituito = "SI"
End If
Me.Refresh
End Sub
Private Sub Difensore_ente_Enter()
Me.Refresh '(così siamo sicuri che venga preso il dato)
If IsNull(Me.Difensore_ente) Then
Me.costituito = "NO"
Else
Me.costituito = "SI"
End If
Me.Refresh
End Sub
Private Sub elenconominativi_Click()
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
rs.FindFirst "[conta] = " & Me![Elenconominativi]
Me.Bookmark = rs.Bookmark
End Sub
 'Dim rs As Object
'Set rs = Me.Recordset.Clone
'rs.FindFirst "[nominativo_parte] = " & Chr$(34) & _
'Me![Elenconominativi] & Chr$(34)
'Me.Bookmark = rs.Bookmark
Private Sub Form_BeforeUpdate(Cancel As Integer)
'If MsgBox("Confermi le modifiche", vbYesNo) = vbNo Then
'Me.Undo
'Cancel = True
'End If
If Not Me.NewRecord Then
If MsgBox("Confermi le modifiche", vbYesNo) = vbNo Then
Me.Undo
Cancel = True
End If
End If
End Sub
Private Sub txtricerca_Change()
Dim strR As String
Dim strSQL As String
strR = Me!txtricerca.Text
If Not IsNull(Me!txtricerca.Text) Then
    strSQL = "SELECT conta, Nominativo_parte " & _
    "FROM [Archivio] " & _
    "WHERE (Nominativo_parte Like " & Chr$(34) & "*" & _
    strR & "*" & Chr$(34) & ");"
    Me!Elenconominativi.RowSource = strSQL
    Me!Elenconominativi.Requery
    Me!txtricerca = strR
    Me!txtricerca.SetFocus
    Me!txtricerca.SelStart = 255
End If
End Sub
Private Sub precedente_Click()
On Error GoTo Err_precedente_Click
    Dim stDocName As String
    Dim stLinkCriteria As String
DoCmd.Close
stDocName = "inizio"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_precedente_Click:
    Exit Sub
Err_precedente_Click:
    MsgBox Err.Description
    Resume Exit_precedente_Click
 
End Sub
Private Sub CasellaCombinata91_AfterUpdate()
    ' Trova il record corrispondente al controllo
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Contatore] = '" & Me![CasellaCombinata91] & "'"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
Private Sub CasellaCombinata49_AfterUpdate()
    ' Trova il record corrispondente al controllo
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Contatore] = '" & Me![CasellaCombinata49] & "'"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
