Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 10 su 10

[Access] Inserimento nuovo record con controllo duplicato.

  1. #1
    L'avatar di Dante87
    Dante87 non  in linea Scolaretto
    Post
    93
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buongiorno a tutti, penso che il titolo questa volta sia molto esauriente.

    In tutti i caso passo a spiegare il problema:

    Sto cercando di effettuare un inserimento di un nuovo record tramite button sull'evento click.

    Per l'inserimento del nuovo record non ho problemi, ma vorrei che quando creo il nuovo record, con un parametro che viene inserito tramite Input box, lui mi controlli se quel parametro esiste gia e se esiste mi chiede di inserirne un altro diverso e possibile?

    Il controllo viene fatto su una chiave primaria univoca con duplicati non ammessi ovviamente. Il campo e di tipo Data/ora.

    Ho provato ad assemblare del codice su controlli duplicati ma non riesco a saltarne fuori.

    Dietro con me non ho il codice VBA che sto usando quando torno a casa ve lo posto...!

    In tutti i casi grazie del vostro aiuto.

    _________________
    Andrea

  2. #2
    L'avatar di BLUES
    BLUES non  in linea Scribacchino
    Post
    1,325
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da Dante87 Visualizza il messaggio
    Buongiorno a tutti, penso che il titolo questa volta sia molto esauriente.

    In tutti i caso passo a spiegare il problema:

    Sto cercando di effettuare un inserimento di un nuovo record tramite button sull'evento click.

    Per l'inserimento del nuovo record non ho problemi, ma vorrei che quando creo il nuovo record, con un parametro che viene inserito tramite Input box, lui mi controlli se quel parametro esiste gia e se esiste mi chiede di inserirne un altro diverso e possibile?

    Il controllo viene fatto su una chiave primaria univoca con duplicati non ammessi ovviamente. Il campo e di tipo Data/ora.

    Ho provato ad assemblare del codice su controlli duplicati ma non riesco a saltarne fuori.

    Dietro con me non ho il codice VBA che sto usando quando torno a casa ve lo posto...!

    In tutti i casi grazie del vostro aiuto.

    _________________
    Andrea
    Ciao Dante supponiamo che tu abbia un campo nella maschera chiamato txtDescrizione (Descrizione nella tabella) e vuoi impedire questo campo la duplicazione allora all'evento --> Prima di aggiornare:

    Private Sub txtDescrizione_BeforeUpdate(Cancel As Integer)
    Dim Rs As Recordset
    Set Rs = DBEngine(0)(0).OpenRecordset("SELECT COUNT(*) AS Doppione FROM T1 WHERE Descrizione='" & Me!txtDescrizione & "'")
    If Rs.Fields("Doppione") > 0 Then
    MsgBox "impossibile effettuare l'inserimento perch" & vbCrLf _
    & "la parola ==> " & txtDescrizione & " <==  gi presente in tabella", vbCritical, "Attenzione !"
    Cancel = True
    End If
    Rs.Close
    Set Rs = Nothing
    End Sub
    
    ____
    Blues

  3. #3
    L'avatar di Dante87
    Dante87 non  in linea Scolaretto
    Post
    93
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da BLUES Visualizza il messaggio
    Ciao Dante supponiamo che tu abbia un campo nella maschera chiamato txtDescrizione (Descrizione nella tabella) e vuoi impedire questo campo la duplicazione allora all'evento --> Prima di aggiornare:

    Private Sub txtDescrizione_BeforeUpdate(Cancel As Integer)
    Dim Rs As Recordset
    Set Rs = DBEngine(0)(0).OpenRecordset("SELECT COUNT(*) AS Doppione FROM T1 WHERE Descrizione='" & Me!txtDescrizione & "'")
    If Rs.Fields("Doppione") > 0 Then
    MsgBox "impossibile effettuare l'inserimento perch" & vbCrLf _
    & "la parola ==> " & txtDescrizione & " <==  gi presente in tabella", vbCritical, "Attenzione !"
    Cancel = True
    End If
    Rs.Close
    Set Rs = Nothing
    End Sub
    
    ____
    Blues
    Ciao Blues ti ringrazio per la tempestiva risposta, avevo gia visto questo esempio di controllo duplicato e mi sembra utilissimo, ho provato ad inserirlo ma purtroppo non mi ha dato i risultati sperati.

    Comunque provo a studiarci e ad assemblare il codice che mi hai suggerito con quello fatto da me che e molto semplice.

    Accetto altre considerazioni, consigli o suggerimenti.

    _____________________
    Andrea

  4. #4
    L'avatar di BLUES
    BLUES non  in linea Scribacchino
    Post
    1,325
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da Dante87 Visualizza il messaggio
    Ciao Blues ti ringrazio per la tempestiva risposta, avevo gia visto questo esempio di controllo duplicato e mi sembra utilissimo, ho provato ad inserirlo ma purtroppo non mi ha dato i risultati sperati.

    Comunque provo a studiarci e ad assemblare il codice che mi hai suggerito con quello fatto da me che e molto semplice.

    Accetto altre considerazioni, consigli o suggerimenti.

    _____________________
    Andrea
    Dante se per la tua InputBox serve in questo modo:

    Private Sub cmdTuoPulsante_Click()
    Dim Rs As Recordset
    Me.txtDescrizione = InputBox("Inserisci:", "Campo Descrizione")
    Set Rs = DBEngine(0)(0).OpenRecordset("SELECT COUNT(*) AS Doppione FROM T1 WHERE Descrizione='" & Replace(Me!txtDescrizione, "'", "''") & "'")
    If Rs.Fields("Doppione") > 0 Then
    MsgBox "impossibile effettuare l'inserimento perch" & vbCrLf _
    & "la parola ==> " & txtDescrizione & " <==  gi presente in tabella", vbCritical, "Attenzione !"
    Me.Undo
    End If
    Rs.Close
    Set Rs = Nothing
    End Sub
    
    ____
    Blues

  5. #5
    L'avatar di Dante87
    Dante87 non  in linea Scolaretto
    Post
    93
    Like Inviati  
    0
    Like Ricevuti  
    0
    Scusa la mia ignoranza Blues ma perche mi dice "Variabile non definita" su questa (colorato in rosso)--->
    Set Rs = DBEngine(0)(0).OpenRecordset
    
    Quando stamattina ho provato non mi dava nessun errore...!

    EDIT: Risolto era l'option explicit che mi bloccava, non avevo visto che c'era...!

    __________
    Andrea

  6. #6
    L'avatar di BLUES
    BLUES non  in linea Scribacchino
    Post
    1,325
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da Dante87 Visualizza il messaggio
    Scusa la mia ignoranza Blues ma perche mi dice "Variabile non definita" su questa (colorato in rosso)--->
    Set Rs = DBEngine(0)(0).OpenRecordset
    
    Quando stamattina ho provato non mi dava nessun errore...!

    EDIT: Risolto era l'option explicit che mi bloccava, non avevo visto che c'era...!

    __________
    Andrea
    Ciao Dante l'errore che ti dava potrebbe essere dal fatto che non riconosce i nomi del campo oppure determinare il DataType

    e per quanto riguarda l'Option Explicit indispensabile che ci sia in quanto Impone la dichiarazione esplicita di tutte le variabili in un file. Leggi qui:

    Istruzione Option Explicit (Visual Basic)

    Infatti se ti dava quei errori significa che nel tuo Database non strutturato bene e che possono generare gli errori al momento dell'utilizzo.

    Ti consiglio di imparare a usare il Debug che il nostro Alex stato cos gentile da porci delle istruzioni esaurienti

    http://forum.masterdrive.it/vba-tuto...s-debug-44533/

    ____
    Blues

  7. #7
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Post
    16,830
    Like Inviati  
    0
    Like Ricevuti  
    25
    Quote Originariamente inviato da Dante87 Visualizza il messaggio
    Buongiorno a tutti, penso che il titolo questa volta sia molto esauriente.

    In tutti i caso passo a spiegare il problema:

    Sto cercando di effettuare un inserimento di un nuovo record tramite button sull'evento click.

    Per l'inserimento del nuovo record non ho problemi, ma vorrei che quando creo il nuovo record, con un parametro che viene inserito tramite Input box, lui mi controlli se quel parametro esiste gia e se esiste mi chiede di inserirne un altro diverso e possibile?

    Il controllo viene fatto su una chiave primaria univoca con duplicati non ammessi ovviamente. Il campo e di tipo Data/ora.

    Ho provato ad assemblare del codice su controlli duplicati ma non riesco a saltarne fuori.

    Dietro con me non ho il codice VBA che sto usando quando torno a casa ve lo posto...!

    In tutti i casi grazie del vostro aiuto.

    _________________
    Andrea
    Se il controllo viene fatto su PK serve distinguere 2 cose...
    Quando vuoi che venga fatto il controllo e la relativa segnalazione di Errore...?

    Essendo una PK potresti gestire il tutto su Form_Error ad esempio, in questo caso il tentativo di duplicazione genera un errore 3...(non ricordo ma puoi provare)
    qu trovi tutti gli errori intercettabili di JET
    http://msdn.microsoft.com/en-us/library/bb221208.aspx

    Se invece vuoi testare il valore prima del tentativo di salvataggio allora il suggerimento di BLUES valido, ma lo devi mettere subito dopo l'inserimento del valore nell'InputBox...
    ℹ️ Leggi di pi su @Alex ...

  8. #8
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Post
    16,830
    Like Inviati  
    0
    Like Ricevuti  
    25
    Quote Originariamente inviato da Dante87 Visualizza il messaggio
    Scusa la mia ignoranza Blues ma perche mi dice "Variabile non definita" su questa (colorato in rosso)--->
    Set Rs = DBEngine(0)(0).OpenRecordset
    
    Quando stamattina ho provato non mi dava nessun errore...!

    EDIT: Risolto era l'option explicit che mi bloccava, non avevo visto che c'era...!

    __________
    Andrea

    MAI TOGLIERE OPTION EXPLICIT
    come mettersi le mani sugli occhi per non vedere che si sta andando contro un PLATANO..!
    Hai degli errori, vedi di correggerli, OptionExplicit solo un grosso aiuto e si DEVE USARLO.
    ℹ️ Leggi di pi su @Alex ...

  9. #9
    L'avatar di Dante87
    Dante87 non  in linea Scolaretto
    Post
    93
    Like Inviati  
    0
    Like Ricevuti  
    0
    Si me ne sono accorto. Guardero immediatamente il lavoro postato da Alex per il Debug e lo seguiro alla lettera...!

    si lo so che l'option explicit e molto importante, infatti non l'ho tolto ho solo segnalato che e quello che mi bloccava. Ma stamattina non lo ha fatto e non capisco il perch, sar meglio che guardo meglio come impostare la cosa...!

    Grazie a tutti dell'aiuto...!

    _______________
    Andrea

  10. #10
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Post
    16,830
    Like Inviati  
    0
    Like Ricevuti  
    25
    Quote Originariamente inviato da Dante87 Visualizza il messaggio
    Si me ne sono accorto. Guardero immediatamente il lavoro postato da Alex per il Debug e lo seguiro alla lettera...!

    si lo so che l'option explicit e molto importante, infatti non l'ho tolto ho solo segnalato che e quello che mi bloccava. Ma stamattina non lo ha fatto e non capisco il perch, sar meglio che guardo meglio come impostare la cosa...!

    Grazie a tutti dell'aiuto...!

    _______________
    Andrea
    Non l'OPTION EXPLICIT che blocca nulla... sono gli errori che si commettono nel Codice che avendo OptionExplicit attivo non ci devono essere...

    In sostanza un p come Bersani che dice che non hanno perso, ma quant'anche fosse colpa di Grillo...!
    ℹ️ Leggi di pi su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Controllo duplicato ed inserimento dati
    Da Falco69 nel forum Microsoft Access
    Risposte: 11
    Ultimo Post: 18-05-2020, 18:51
  2. Evitare Inserimento duplicato Anagrafica da Maschera access
    Da Dante_Devil nel forum Microsoft Access
    Risposte: 18
    Ultimo Post: 06-08-2016, 11:00
  3. Msg Box: su Campo non Duplicato e Nuovo Record
    Da X_Files nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 13-04-2012, 21:47
  4. Maschera per inserimento nuovo record
    Da gipsy nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 27-01-2012, 15:53
  5. Access - record duplicato
    Da dodo47 nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 09-11-2011, 11:47