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