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
-----Sub Salvataggiocodice: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
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-----infine la sub di controllo dupicati. per brevità ometto la funzione "Doppio apice"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
Grazie in anticipo a tutticodice: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

Rispondi quotando
sono riuscito a risolvere da solo.