Newsgroup: it.comp.appl.access
Titolo: Pulsante elimina record con messaggio personalizzato

In una maschera che visualizza dei record ho inserito un pulsante
Elimina record. Vorrei che all'eliminazione del record comparisse al
posto del messaggio di conferma standard di Access un messaggio
personalizzato completo di OK e Annulla. Come faccio? Di seguito il
codice sottostante il pulsante. Grazie.
Private Sub PulsanteEliminaIncarico_Click()
On Error GoTo Err_PulsanteEliminaIncarico_Click
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_PulsanteEliminaIncarico_Click:
    Exit Sub
Err_PulsanteEliminaIncarico_Click:
    MsgBox Err.Description
    Resume Exit_PulsanteEliminaIncarico_Click
 
End Sub

Ste ha scritto:

Così come hai fatto penso(ma non ho mai fatto in questo modo ed è da
verificare) tu debba intercettare l'Evento OnDelete di Form:
Private Sub Form_Delete(Cancel As Integer)
    If Msgbox("Vuoi Eliminare..?",vbyesno+vbQuestion,"Avviso")=vbno
then
      Cancel=True
      Me.Undo
    End If
End Sub
Ovviamente devi disabilitare i messaggi nativi usando il Metodo
SetWarning
membro di DoCmd prima e dopo:
DoCmd.SetWarning False
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
DoCmd.SetWarning True
Personalmente eseguo il Delete su RecordsetClone oppure con Query
DELETE e non attraverso i Menù.
Prova e facci sapere.
@Alex

 ha scritto nel messaggio
news:pkc092lscptcv4s8b...@4ax.com...


DoCmd.SetWarnings False 'inibisce messaggio standard
DoCmd.RunCommand acCmdDeleteRecord 'elimina record
MsgBox "qui scrivi il testo del tuo messaggio" 'tuo messaggio
DoCmd.SetWarnings True 'riabilita messaggi standard
Exit_PulsanteEliminaIncarico_Click:
   Exit Sub
Err_PulsanteEliminaIncarico_Click:
   MsgBox Err.Description
   Resume Exit_PulsanteEliminaIncarico_Click
End Sub
Anche se usato dall'autocomposizione di Access, per cancellare il record
corrente ti sconsiglio di usare:
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
ma è decisamente meglio usare:
DoCmd.RunCommand acCmdDeleteRecord
Quella usata da te è una forma arcaica che fra l'altro può darti problemi 
con la versione runtime o se usi barre dei menu personalizzate.
-- 
Roberto
-----------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
-----------------------------------------------

 ha scritto nel messaggio 
news:pkc092lscptcv4s8b...@4ax.com...

ciao Ste,
io di solito uso il seguente, su pressione del tasto BUT_DEL preposto:
Private Sub BUT_DEL_Click()
    Dim SCELTA As Long
        SCELTA = MsgBox("Qui ci metti il testo che desideri...", vbYesNo, 
"Conferma eliminazione")
        Select Case SCELTA
            Case vbYes
                DoCmd.RunSQL "DELETE * FROM tuaTabella WHERE ID = 
Forms!mascheraCorrente!ID;"
                DoCmd.Requery
                MsgBox "Eliminazione effettuata.", vbInformation, "Conferma 
eliminazione"
            Case Else
        End Select
End Sub

 DELETE e non attraverso i Menů.
ciao, scusa l'ignoranza come si esegue un delete su recordsetclone? E 
che vantaggi ha rispetto alla query?

 che vantaggi ha rispetto alla query?
Questa è la routine che uso:
Public Function fDelCurrentRec(c_frm as Access.Form) As Boolean
    On Error GoTo Err_Section
    'Elimina il Record Corrente nella FrmMain
    'quindi esegue il Requery.
        'Return:True se l'operazione è andata a buon fine
        '       False se viene generato un errore
    With c_frm.RecordsetClone
        .Bookmark = c_frm.Bookmark
        .Delete
    End With
    fDelCurrentRec = True
Exit_Section:
    Exit Function
Err_Section:
    fDelCurrentRec = False
    Resume Exit_Section
End Function
Vantaggio di prestazioni rispetto alla Query non saprei
sinceramente(forse nessuno), in questo caso però come puoi vedere non
devo creare una QUERY di eliminazione dedicata per ogni maschera, mi
basta passare l'oggetto Form.
Quindi il vantaggio di questa funzione è quello di non propagare
codice essendo una 
Funzione Generica a livello di Modulo.
Ciao
@Alex


Grazie, perfetto. Solo una cosa. La mia tabella si chiama "Tutti i
dati" (con gli spazi). Come risolvo il problema nell'istruzione
DoCmd.RunSQL? Ho provato con le virgolette e con gli apici ma non
funziona.
Grazie.
Stefano


[tutti i dat]
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it