Newsgroup: it.comp.appl.access
Titolo: nuovo - elimina

Ho creato una maschera con 2 pulsanti: nuovo rk e elimina rk. L'origine dati
é la tabella sopralluoghi. Se clicco su nuovo rk ho associato sull'evento
corrente la routine per riconoscere che si tratta di un nuovo rk e mi viene
proposto il numero di protocollo incrementato di 1 (una specie di
contatore). Il problema é che quando mi posiziono sul rk che voglio
cancellare tramite click su elimina viene considerato quello un rk nuovo e
quindi mi ripropone il valore ulteriormente incrementato. Ho provato a
mettere il comando gotoprevious, ma lo esegue dopo l'evento corrente, posto
le routine:
Private Sub Form_Current()
    Dim intNuovoRec As Integer
    intNuovoRec = Form.NewRecord
    If intNuovoRec = True Then
Me.protocollo = DMax("[protocollo]", "sopralluoghi") + 1
MsgBox "Nuovo record." _
        & "@Si desidera aggiungere nuovi dati?" _
        & "@Altrimenti spostarsi in un record esistente."
End If
End Sub
_______________________________
Private Sub elimina_Click()
On Error GoTo Err_elimina_Click
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
    DoCmd.GoToRecord acDataForm, "sopralluoghi", acPrevious
Exit_elimina_Click:
    Exit Sub
Err_elimina_Click:
    MsgBox Err.Description
    Resume Exit_elimina_Click
End Sub
come posso risolvere? grazie

 [cut]
Prova a gestire l'evento OnCurrent in questo modo:
Private Sub Form_Current()
    If Me.NewRecord Then
        If MsgBox("Inserire nuovo record?", vbQuestion + vbYesNo) = vbNo Then
            DoCmd.GoToRecord , , acPrevious
        Else
            Me.protocollo = DMax("[protocollo]", "sopralluoghi") + 1
        End If
    End If
End Sub
per i pulsanti Nuovo ed Elimina non inserire altre istruzioni oltre a quelle
create dal wizard.
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

Ho provato e l'evento é sicuramente gestito meglio ed é anche piů elegante.
Ho notato perň che se elimino il record mi chiede comunque dopo
l'eliminazione se intendo aggiungere un nuovo rk e alla mia risposta
negativa mi riporta indetro praticamente di due rk.
esemplifico: ho 3 rk. premo il pulsante crea newrk. "Inserire newrk?".
rispondo Sě. premo tasto eliminark. "Inserire newrk?". rispondo No. mi
ritrovo sul rk 2 invece di 3.
Se hai la soluzione grazie altrimenti grazie lo stesso :-)
Matteo



Perfavore, rispondi dopo la parte quotata.
Per quanto riguarda la richiesta di nuovo record dopo l'eliminazione
dell'ultimo, potresti gestire un flag globale nell'evento Delete della form, ad
es. prova cosi':
Dim blDelete as Boolean
Private Sub Form_Delete...
  blDelete = true
End Sub
Private Sub Form_Current()
  If Me.NewRecord And not blDelete Then
    If MsgBox("Inserire nuovo record?", vbQuestion + vbYesNo) = vbNo Then
      DoCmd.GoToRecord , , acPrevious
    Else
      Me.protocollo = DMax("[protocollo]", "sopralluoghi") + 1
    End If
  ElseIf blDelete Then
    blDelete = False
    DoCmd.GoToRecord , , acPrevious
  End If
End Sub
in questo modo se il record viene eliminato, la procedura viene saltata, ma
torna indietro di un record.
Per quanto rigurda quest'ultimo punto, sicuro di non avere un istruzione, nel
pulsante elimina, che porta indietro di un record?


 mestamente confermo l'intuizione :-)
;-))


 pulsante elimina, che porta indietro di un record?
mestamente confermo l'intuizione :-)
ciao