Condividi tramite

Nomi duplicati in una tabella ma univoci

Anonimo
2017-11-30T06:44:58+00:00

Salve, ho bisogno di aiuto in quanto non riesco ad andare avanti in un programma che sto realizzando in access 2000.

Questo ha diverse tabelle relazionate tra loro, ma inserisco qui un db ridotto al minimo, sintetizzato alla problematica.

Due tabelle in cui nella prima l'amministratore inserisce i corsi, e la seconda dove i corsisti si iscrivono.

Siccome i corsi sono a numero chiuso, gli utenti, non devono avere la possibilità di iscriversi due volte o più volte come spesso capita, perchè così facendo tolgono la possibilità ad un'atro di potersi iscrivere.

Il partecipante, però può iscriversi anche ad altri corsi, quindi se metto l'indicizzazione con duplicati non ammessi, nella tabella iscritti, chiaramente avrò di ritorno l'errore.

Quindi secondo il mio ragionamento, la tabella iscritti, dovrebbe riconoscere l'ID del corso e il nome dell'iscritto, bloccando la seconda iscrizione nello stesso corso, ma dando la possibilità allo stesso nome ad iscriversi a tutti i corsi a cui vuole partecipare.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

7 risposte

Ordina per: Più utili
  1. Anonimo
    2017-12-01T06:02:21+00:00

    Grazie per il consiglio, ma ho un PC vecchio e poca ram, se monto programmi nuovi, il PC muore.

    Purtroppo questo è quello che passa il convento.

    Ad ogni modo, sono un principiante, mi sono cimentato da poco tempo a lavorare su access, e, tutto quello che ho imparato (da solo), lo fatto smanettando, quindi molti procedimenti, ad esempio in visual basic per me sono difficili, uso molto le macro e fantasia, riuscendo bene o male ad arrivare sempre al punto dove voglio.

    Chiaramente se ho scritto in questo forum, è perchè ho bisogno di aiuto.

    Se mi vengono buttate giù delle risposte molto tecniche, mi trovo spiazzato e queste, mi servono a ben poco.

    Ad ogni modo, dai vostri consigli, ho preso spunto e sto cercando di trovare la soluzione al mio problema in qualche modo.

    Mi avrebbe fatto comodo, se gli esempi li avessi avuti direttamente sul file che ho messo a disposizione per capire e studiarci sopra.

    Vi ringrazio comunque per la vostra pronta disponibilità.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-11-30T19:24:42+00:00

    Ciao Gabry,

    oltre a quanto giustamente suggerito da Sandro, un consiglio spassionato ma assolutamente da seguire:

    Usa Access 2016 o comunque una versione molto più recente.

    L'uso di versioni così datate ti espone a rischi di future incompatibilità seccanti da gestire.

    Ciao

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-11-30T09:23:41+00:00

    ciao Gabry_M,

    clicca sul collegamento ipertestuale del post precedente gabry_duplicato.

    Ciao, Sandro.

    ps.

    il Codice fiscale come ulteriore riferimento è ok, ma non come PK, ci sono casi di omocodia che lo rendono non candidabile come chiave primaria.

    Sfrutta in tal senso un long autonumber come nella demo, e hai risolto il problema, sempre che abbia intuito....sei un po' troppo ermetico.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-11-30T09:10:18+00:00

    in verità, al posto dei nomi, devo inserire il codice fiscale, e, questi non sono noti in quanto le registrazioni sono effettuate da tutto il personale dell'ente (oltre 5000) per cui non è facile avere tutti i CF.

    Se poi, hai possibilità di farmi avere l'esempio tramite file, dimmi dove scaricarlo, mi farebbe molto comodo. Grazie tanto in anticipo

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-11-30T08:49:24+00:00

    ciao Gabry_M,

    due opzioni,

    inserire un indice multicampo e gestire l'errore del db engine.

    Oppure gestire su evento prima di aggiornare per l'inserimento del duplicato.

    Ti consiglio di creare una tabella anagrafica per inserire tutti in nominativi e un'altra tabella per la gestione degli iscritti.

    Inserisci inoltre per ogni tabella, ( se non fatto )  una chiava primaria e le chiavi esterne ove necessario, personalizzando per bene i nomi dei campi al posto di un anonimo id.

    questo il codice vba per quanto alla gestione dell'evento prima di aggiornare :

    Option Compare Database

    Option Explicit

    Private Sub Form_BeforeUpdate(Cancel As Integer)

    If DCount("*", "iscritti2", "id_anagrafica=" & Me.id_anagrafica & " and id_evento=" & Me.id_evento) > 0 Then

    VBA.MsgBox prompt:="Attenzione, iscritto già esistente per questo corso...!", _

    buttons:=vbCritical, _

    title:="Attenzione"

    Cancel = True

    End If

    End Sub

    vedi qui per l'indice multicampo :

    https://support.office.com/it-it/article/Creare-e-utilizzare-un-indice-per-migliorare-le-prestazioni-0a8e2aa6-735c-4c3a-9dda-38c6c4f1a0ce

    e qui una bozza di quanto discusso :

    gabry Duplicato

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento