Verifica dato con condizione

di il
10 risposte

Verifica dato con condizione

Buon Pomeriggio
ho bisogno di un piccolo aiuto per voi ma grande per me.
Ho due tabelle in ralazione tra di loro uno a molti. In una tabella ho i nomi di tre organisti nell'altro ho la data e l'orario di prestazione. Quando inserisco un orario ho la necessità di sapere che in qualla data e aquell'ora non ci sia altro organista. Come Fare? un aiuto grazie

10 Risposte

  • Re: Verifica dato con condizione

    Riepilogando tu hai:
    1. 2 tabelle Organisti uno-a-molti Prestazioni
    2. In Prestazioni non è chiaro se hai 1 o 2 campi per tracciare Data/Ora. Io ti consiglio un solo campo TimePrestazione con il formato completo Data/Ora.

    Chiarito questo, direi che ci sarebbero un paio di soluzioni.
    A) Imposta il campo TimePrestazione con la proprietà Indicizzato: Sì (Duplicati non ammessi).
    B) Ti serve una maschera "esterna" con un codice VBA che va ad indagare nel recordset di Prestazioni sul campo TimePrestazione e quindi verifichi se esiste o no il Time che stai inserendo in MascheraEsterna.

    La soluzione A è facile (direi che andrebbe applicata comunque), ma presenterebbe il difetto di rivelarsi solo DOPO l'input dati dell'intero record. Nel senso che se in tabella sono presenti 2 TimePrestazione uguali, apparirà un messaggio di errore che dice che stai violando la proprietà precedentemente impostata.
  • Re: Verifica dato con condizione

    La soluzione di impiegare un solo campo (per gestire l'orario di impegno del soggetto) è applicabile qualora vi sia un durata fissa (quale intervallo della attività); qualora ciò non fosse si dovranno gestire due campi (con data ed l'ora di inizio e fine).
    Da considerare che, in ogni caso, la verifica può essere effettuata al momento stesso della imputazione del singolo orario, in quanto è possibile controllare che ciò non ricada in un periodo (o singolo orario) già occupato.
    E' sufficiente impiegare la funzione DLookUp passando il criterio dell'orario:
    https://support.office.com/it-it/article/funzione-dlookup-8896cb03-e31f-45d1-86db-bed10dca5937
    https://answers.microsoft.com/it-it/office/forum/office_2010-access/dlookup-su-campo-dataora-non-funziona-piu/198e878f-47ba-45f3-837a-5fbffe074f19?db=5
    https://it.comp.appl.access.narkive.com/JW9b9l63/dlookup-e-utilizzo-di-date
    Decade quindi anche l'esigenza (al termine della fase di input) per l'esame sui dati doppi (duplicati non ammessi).
  • Re: Verifica dato con condizione

    Ho allegato la tabella lavoro come si puo vedere ho inserito orario con 7_30 ecc mentre il giorno come data dall'orario effettuo la somma delle ore effettuate. devo praticemente verificare che nello stesso giorno non ci possono essere due organisti insieme. Grazie
    Allegati:
    25855_9fdb0e70aa58ccfebdd43d88f25c47a9.png
    25855_9fdb0e70aa58ccfebdd43d88f25c47a9.png
  • Re: Verifica dato con condizione

    La tua struttura dati non è normalizzata, rivedila nell'ambito degli orari.
  • Re: Verifica dato con condizione

    Perdona la mia ignoranza. Come mi consigli di impostare la tabella considerato che devo verificare che nello stesso giorno alla stessa ora non dovrebbero esserci due organist.? l'ora di inizio o fine non ha importanza in quanto la prestazione può durare 1h o più mi serve solo la prestazione. Grazie
  • Re: Verifica dato con condizione

    Continua... o meglio devo solo essere a conoscenza che nell'ora della funzione ci sia l'organista e non due
  • Re: Verifica dato con condizione

    Abituati a nominare le tabelle sempre al PLURALE. La tabella Lavori dovrebbe avere i seguenti campi:
    IDLavoro (numerazione automatica, chiave primaria)
    IDOrganista (numerico, chiave esterna)
    TimeLavoro (Data/Ora con il formato completo)

    Sul campo TimeLavoro imposta Indicizzato: Sì (Duplicati non ammessi)

    Impostando la tabella con questi campi, il giorno 10/3/2019 tu compilerai 4 record (relativi ai 4 orari che si intuiscono dalla tua errata tabella precedente) con i TimeLavoro (completi) e i 4 organisti di riferimento.
  • Re: Verifica dato con condizione

    Buongiorno ho impostato due tabelle
    1) organisti
    IDorganisti
    cognome
    nome
    2)Lavori
    idlavori chiave primaria
    idorganisti numerico
    giorno quale data/ora
    campo or_7_30 (numerico) indicizzato non duplicati
    campo or_9_30(numerico) indicizzato non duplicati
    ecc ho relazionato le due tabelle uno-a molti
    ho costruito due maschere una principale organisti e allego la sottomaschera lavori.
    Il mio problema è questo: Rossi primo organista il giorno 10/03/2019 dovrà suonare alle 7:30 inserisco il valore 1 nell'area;
    Surace ( secondo organista)nello stesso giorno 10/03/2019 DOVRà SUONARE alle 9_30. Se per errore inserisco Surace o viceversa alle ore 7_30 dovrà segnalare che in quell'ora c'è già inserito un altro organista. Ho provato ma qualcosa non funziona. Non riesco pur avendo calcellato l'orario ad uscire dalla maschera. Sbaglio sicuramente oppure non avrò capito. Grazie
  • Re: Verifica dato con condizione

    Hai letto il mio suggerimento che ti ho scritto 2 volte? Nel secondo caso te l'ho scritto chiaro e tondo senza possibilità di confondersi.
    1. Togli i campi [giorno], [7_30], [9_30]
    2. Metti un solo campo [TimeLavoro], con il formato COMPLETO Data/Ora. Qui ci scrivi la Data+Ora in un unico campo. Su questo campo imposti Indicizzato: Sì (Duplicati non ammessi).

    Ah...forse capisco cosa ti confonde le idee. Invece di usare maschera/sottomaschera Organisti/Lavori, usa direttamente la maschera Lavori (foglio dati) con casella combinata IDOrganista. In questo modo hai un quadro più "concreto" del "tuo" punto di vista.
  • Re: Verifica dato con condizione

    Grazie, credo di aver capito.ho verificato e funziona. La mia mente si blocca sul mio modo di vedere e quindi non riuscivo ad uscirne.
    Bisogna inserire altri comandi per rendere il lavoro più efficace in quanto non fa modificare un dato se già inserito devo eliminare il record. cmq studierò.
    Saluti
Devi accedere o registrarti per scrivere nel forum
10 risposte