PDA

Visualizza la versione completa : [ACCESS] evitare inserimento duplicati


rorofre
16-03-2019, 07:42
buongiorno, avrei bisogno di un aiuto.. ho creato un database dove ad un campo voglio aggiungere il controllo che impedisca l'inserimento di un valore duplicato. Voglio per che il controllo venga fatto subito dopo l'inserimento del dato e non al salvataggio del record (cosa che succede impostando l'indicizzazione del campo).
In un altro database che avevo fatto con un collega (che era pi esperto di me), avevo un codice che mi permetteva di farlo, sto provando ad adeguarlo al nuovo database ma continua a darmi errore di sintassi e vista la mia scarsissima conoscenza di vba non riesco a trovare l'errore...

considerando che il nome del campo a cui voglio applicare il controllo "n_verbale" (sia in maschera che in tabella) e la maschera si chiama "verbale" il codice che ho inserito il seguente:

Private Sub n_verbale_BeforeUpdate(Cancel As Integer)


If Not IsNull(DLookup(n_verbale, verbale, _
n_verbale = & Chr$(34) & Me!n_verbale & Chr$(34))) _
And Me!n_verbale <> Nz(Me!n_verbale.OldValue) Then


MsgBox Me!n_verbale & " Gi esiste.", vbOKOnly, "Duplicato!"
Cancel = True


End If

posso chiedere il vostro aiuto?
grazie
:dh:

patel
16-03-2019, 10:33
Non hai specificato l'ambiente in cui operi, il linguaggio, il tipo di database

rorofre
16-03-2019, 14:43
scusate, ero focalizzata sul mio problema... il database in ACCESS, che mi permette di raccogliere i verbali di valutazione di ogni stabilimento.
I record sono tutti riuscita a farli stare tutti in un'unica tabella e sono formati da campi di testo breve/lungo, pi alcuni allegati, un campo data ed un campo SI/NO su cui ho impostato codice per far "bloccare" la scheda rendendo cos i campi non modificabili dopo il salvataggio.
Per l'inserimento dei dati ho preparato una maschera a schede. Per ora nel databse, non ho messo macro, ma solo codici in VBa.
Il campo in questione, ossia il codice verbale una stringa (cod/anno/n)
spero di aver chiarito meglio lo scenario
grazie mille

patel
16-03-2019, 17:01
...Per ora nel databse, non ho messo macro, ma solo codici in VBa.non sono pratico di access, ma mi piacerebbe sapere che differenza c' tra macro e codice vba

rorofre
16-03-2019, 19:00
io non sono esperta, ma da quanto ho letto mi sembra di aver capito che le macro ci Access sono delle routine ossia una serie di istruzioni gi disponibili e selezionabili (senza dover digitare codici con linguaggio vba).
Logicamente sono solo relative ad argomenti specifici e pi comuni, quindi per i particolari si ricorre ancora ai codici in vba.
sempre dalle ricerche che ho recentemente fatto per poter risolvere una serie di problemi con il mio database, mi sembra di aver capito che macro e vba nello stesso database, potrebbero creare interferenze... mi sembra..... non metto mano su fuoco, ma nel dubbio ho specificato questa informazione

patel
17-03-2019, 08:22
Sarebbe meglio scriverlo nel titolo del primo post che si tratta di Access in modo da attirare i relativi esperti (vedi regolamento)

gibra
17-03-2019, 09:28
@patel
Risulta chiaro che il REGOLAMENTO non sa manco cosa sia, visto come ha 'confezionato' la richiesta.

rorofre
18-03-2019, 07:58
scusate, dove ho sbagliato??? la mia prima discussione... se sbaglio ditemi dove, volevo solo un aiuto

rorofre
18-03-2019, 08:01
se non sbaglio il regolamento dice che non si fa richieste Vorrei avere come si fa.... ma si deve proporre la soluzione da modificare o correggere.. cos ho cercato di fare, altrimenti avrei scritto: qualcuno mi dice come si fa per evitare di inserire valori duplicati?
spiegatemi cosa dovevo fare cos capisco l'errore

patel
18-03-2019, 08:07
al punto 6

Indica il linguaggio di programmazione nel titolo (es. [C++], [DELPHI], [PYTHON], ecc.) e una descrizione breve ma significativa del problema trattato nella discussione, evitando epiteti come "urgente", "help", "aiuto", "solo per esperti" o termini scontati come "problema con".
Un titolo inadeguato pu portare alla chiusura della discussione. Ciascuna discussione deve trattare esclusivamente uno e un solo problema: quello indicato nel titolo. Per ogni nuovo problema che non sia strettamente correlato, necessario aprire una nuova discussione.
basta vedere tutti gli altri titoli per accorgersene, come ho gi detto serve per attirare l'attenzione dell'esperto in quel settore.
Inoltre probabilmente la sezione giusta in cui postare la tua richiesta Database, se sei d'accordo clicca sul triangolino a sinistra per segnalare al moderatore di spostarla

Loading