Ciao a tutti, sono nuovo del forum e abbastanza novizio di vb6. Vi sottopongo il mio problema:
gestisco un db access tramite vb6 ( DAO, dbgrig + form inserimento / visualizzazione; dynaset).Si tratta di una rubrica contatti
Vorrei implementare un controllo grazie al quale, prima di salvare un record duplicato, mi avvisi e mi lasci la scelta se contituare e quindi inserire o meno. Funziona tutto tranne questo aspetto. La cosa che non capisco è: Se non metto il controllo, il Data1_Validate fa il suo dovere e salva il record (in questo caso anche se è doppio).
Se metto il controllo, esegue il controllo correttamente, ma poi se decido di salvare, di fatto non aggiunge il record.
Posto il codice interessato nella speranza di un aiuto

---Sub di aggiunta record
codice:
Private Sub cmdadd_Click()
    If cmdadd.Caption = "Aggiungi" Then
        'Attiva la funzione di aggiunta.
        Data1.Recordset.AddNew
        cmdadd.Caption = "Annulla"
        cmdsalva.Enabled = True
    Else
        'Annulla le modifiche.
        Data1.Recordset.CancelUpdate
        cmdsalva.Enabled = False
        cmdadd.Caption = "Aggiungi"
    End If
End Sub
-----Sub Salvataggio

codice:
  Private Sub cmdsalva_Click()

 'CONTROLLO INSERIMENTO NOME E COGNOME

If Trim(Text2.Text) = "" Then
  MsgBox "Inserire Cognome e Nome.", vbOKOnly + vbCritical, "Nessun Cognome inserito"
  Text2.SetFocus
  Exit Sub
End If

If Trim(Text3.Text) = "" Then
MsgBox "Inserire Cognome e Nome.", vbOKOnly + vbCritical, "Nessun Nome inserito"
  Text3.SetFocus
  Exit Sub
End If
   
 'Salva le modifiche.

    Data1.Recordset.Update   ... N.B. da questo punto salta al Data1_validate
   
    cmdsalva.Enabled = False
    cmdadd.Caption = "Aggiungi"
    cmdmodif.Caption = "Modifica"

End Sub
codice:
Private Sub Data1_Validate(Action As Integer, Save As Integer)
Dim Risposta As Integer
Dim Rispcontr As Integer
Debug.Print "Action "; Action;
If Save = True Then
   If GetDuplicato = True Then

   
       Rispcontr = MsgBox("Nominativo esistente. Continuare?", vbYesNo, "Controllo duplicati")
    If Rispcontr = vbNo Then
    
    Exit Sub
   End If
  End If

'E' stato modificato un contatto.
Risposta = MsgBox("Salvare le modifiche apportate?", vbQuestion + vbYesNo, Me.Caption)
  If Risposta = vbNo Then
  'Se si seleziona no, annulla le modifiche.
       Text1.DataChanged = False
       Text2.DataChanged = False
       Text3.DataChanged = False
       Text4.DataChanged = False
       Text5.DataChanged = False
       Text6.DataChanged = False
       Text7.DataChanged = False
       Text8.DataChanged = False
       Text9.DataChanged = False
       Text10.DataChanged = False
       Text11.DataChanged = False
       Text12.DataChanged = False
       Text13.DataChanged = False
  
 End If
'Action = vbDataActionUpdate
End If

'Nasconde il pulsante "Salva".
cmdsalva.Enabled = False
cmdmodif.Caption = "Modifica"
End Sub
-----infine la sub di controllo dupicati. per brevità ometto la funzione "Doppio apice"

codice:
Public Function GetDuplicato() As Boolean

 newcogn = DoppioApice(Text2)
 newnome = Text3
criterioric = "Cognome = '" & newcogn & "' "
    Data1.Recordset.FindFirst criterioric
   If Not Data1.Recordset.NoMatch Then


    GetDuplicato = True
    Else
    GetDuplicato = False
End If

End Function
Grazie in anticipo a tutti