Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
ciao Fausto,
consiglio...
imposta sempre l'option explicit nei moduli, che siano moduli standard, di classe, o i moduli delle forms, che sono comunque di classe pure quelli, è un'aiuto al debug notevolissimo.
Non sei distantissimo dalla corretta impostazione....però lanci una currentDb execute e cancelli il record e poi una cancellazione del record con runcommand...forse ridondante come approccio, a meno che la seconda cancellazione non sia del record parent.
ti posto un esempio : http://1drv.ms/1JynaWm fausto.accbd, basato sul fatto di NON avere impostato la cancellazione a catena.
il codice è il seguente.
A cancellazione avvenuta il recorset si sposta sul record corrente pre-cancellazione, ho inserito la gestione errori ed il controllo sul newRecord.
HTH.
ciao, Sandro.
Option Compare Database
Option Explicit
Private Sub cmdElimina_Click()
On Error GoTo errorHandler
Dim intId As Integer
If Not Me.NewRecord Then
If MsgBox("vuoi cancellare il fornitore :" & Me.NomeSocietà & vbNewLine _
& " e tutti i records ad esso correlati?", vbCritical + vbYesNo, "Attenzione") = vbYes Then
intId = Me.CurrentRecord
DBEngine(0)(0).Execute "delete * from prodotti where idfornitore=" & Me.IDFornitore
DBEngine(0)(0).Execute "delete * from fornitori where idfornitore=" & Me.IDFornitore
Me.Requery
Me.Recordset.Move intId - 1
End If
Else
MsgBox "ti trovi su un nuovo record, non ci sono dati da cancellare", vbInformation, "avviso£"
End If
ext_errorHandler:
Exit Sub
errorHandler:
With Err
MsgBox "ERR#" & .Number _
& vbNewLine & .Description _
, vbOKOnly Or vbCritical
End With
End Sub
Private Sub cmdNewRecord_Click()
DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
End Sub