Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    20

    [VB6] Aiuto database ricerca duplicati

    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    20
    Possibile!! nessuno ha un'idea da suggerirmi?
    peccato perchè nonostante la mia inesperienza nel campo e le poche fonti da cui ho studiato i rudimenti dei database, l'applicazione che ho creato, a parte il problema esposto, funziona correttamente (almeno per le mie esigenze)

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    20
    Nonostante la valanga di risposte ricevute sono riuscito a risolvere da solo.
    Ho inserito un data2 e come data source ho fatto una select con i parametri del controllo.
    Quindi con un If data2.recordset.recordcount >0 ho ottenuto la condizione che mi mette a true o false una variabile. E il gioco è fatto.
    Grazie lo stesso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.