Campo con autocompletamento e nuova immissione

di il
7 risposte

Campo con autocompletamento e nuova immissione

Ho un esempio di database molto semplice che in futuro vorrei arricchire ma non prima di aver imparato ad utilizzare discretamente il programma.
Il database è composto dalle tabelle:
album
autori
album_autori
che hanno rispettivamente i campi:
album: id, titolo
autori: id, nome, cognome
album_autori: id_album, id_autori

Ho creato una maschera che permette subito di vedere l'id dell'album e vedere ed immettere un titolo. Poi c'è una sottomaschera per vedere gli autori ed immetterne di nuovi. La sottomaschera è stata realizzata con il seguente procedimento:
- per prima cosa ho creato (come suggeritomi in un precedente thread) una query sulla tabella autori in modo da avere un campo id ed un campo che legasse insieme nome + cognome
- ho creato poi la sottomaschera inserendovi i campi id_album ed id_autori della tabella album_autori e rendendo tali campi non visibili. Poi vi ho aggiunto una casella combinata che pesca i dati dalla query e collega l'id dell'autore al campo id_autori
- ho aggiuto la sottomaschera alla maschera collegando i campi id della maschera con id_album della sottomaschera

Il risultato non è malvagio, ho ottenuto una tabella (la sottomaschera ha la visualizzazione predefinita impostata come foglio dati) che contiene tutti gli autori per quell'album e se voglio posso inserirne di nuovi da un elenco a tendina. Il problema è che però durante l'inserimento se non trovo l'autore che fa per me devo per forza tornare alla tabella autori per inserirlo, non posso inserire nuovi autori direttamente dalla sottomaschera. Scusate la lunghezza.

7 Risposte

  • Re: Campo con autocompletamento e nuova immissione

    Il tuo è un problema molto tipico. Prova a leggere questo post
    http://www.iprogrammatori.it/forum-programmazione/access/casella-combinata-non-mostra-subito-t15656.html
    parla in linea generale. Se non hai dimistichezza con il Visual Basic, ti consiglio la strada macro.
  • Re: Campo con autocompletamento e nuova immissione

    Com'è che la macro ImpostaValore non la trovo? E' un pochino complicato per me che sono all'inizio ma il fatto che mi manca la macro mi spezza le ali in partenza.
  • Re: Campo con autocompletamento e nuova immissione

    Forse hai una versione successiva di Access 2003. Pare che accanto alla colonna azioni, dovrebbe esserci un pulsantino oppure un + dove trovi Altre azioni, clicca lì e troverai anche l'azione ImpostaValore.
  • Re: Campo con autocompletamento e nuova immissione

    Con riferimento al thread linkatomi: sono riuscito a trovare la macro ImpostaValore ed ho capito su quale evento applicarla, il problema è che non ho capito bene come scriverla.
    Nel thread vengono utilizzate delle lettere A B C X ed IDC alle quali non so bene cosa andare a sostituire.
    La mia maschera si chiama album, la sottomaschera è album_autori, poi ho una query che si chiama q_autori che viene fatta sulla tabella autori, la query serve la casella combinata cc_autori, infine ho anche una maschera autori che mi serve ora per i nuovi inserimenti (nel caso in cui il valore immesso nella casella combinata non è presente in elenco). La struttura del database è quella del mio primo post in questo thread. Da questi dati qualcuno potrebbe aiutarmi?
  • Re: Campo con autocompletamento e nuova immissione

    Dall'esempio proposto devi dedurre che puoi lavorare soltanto con maschere, quindi quando vai ad aprire Autori per inserire un nuovo Autore, stiamo parlando sempre di maschera.
    L'azione ImpostaValore ha due argomenti che sono Elemento e Espressione. Il primo significa il campo dove deve andare a finire un qualche-cosa che viene definito nell'Espressione. Per intenderci questo:
    Elemento:
    [Maschere]![NomeMascheraPrincipale]![NomeSottomaschera]![NomeCampo]
    quindi diventa
    Elemento:
    [Maschere]![Album]![Album_Autori]![IDAutore]
    Espresssione:
    [Maschere]![Autori]![IDAutore]
    Nel [NomeCampo] devi scrivere analogamente [IDAutore], sfruttando sempre gli ID, così sei sicuro del risultato finale. In tutto questo discorso le query non ti servono più, lascia lavorare la macro e accertati che la RieseguiQuery finale ti mostri il dato come tu desideri.
  • Re: Campo con autocompletamento e nuova immissione

    Grazie per la pazienza e il tempo dedicatomi.
    Proverò questa soluzione solo a titolo di esperimento, purtroppo rileggendo bene il thread indicatomi mi sono reso conto che non è esattamente il risultato a cui ambivo. Il fatto è che nell'esempio, supponendo che il valore non sia in elenco, si è comunque costretti ad aprire un'altra maschera sulla quale c'è un pulsante che dopo l'inserimento esegue un copia incolla del valore. Se non ho capito male funziona così.
    Io invece ambivo ad inserire un valore nella casella combinata e se questo non è presente a fare in modo che venga automaticamente inserito sia nella tabella autori che nella tabella album_autori, senza avere necessità di aprire nessun'altra maschera. In definitiva la casella combinata mi servirebbe non tanto per avere un elenco a tendina ma per avere un autocompletamento se il dato fosse già presente nel database.
  • Re: Campo con autocompletamento e nuova immissione

    Ho un database molto simile al tuo. Su questo punto occorre trovare una giusta via di compromesso. A voler essere di palato fino, si possono incrociare molte azioni, con altre relative condizioni che mettano in moto tutto il meccanismo automatico che tu vorresti. Però il discorso si complica un po' e le controindicazioni sono sempre all'erta. Ti dico semplicemente come mi comporto io. La casella combinata è utile proprio per autocompletare la digitazione e quindi tienila come è. Quando non trovi un Autore, scegline uno a caso, tanto rimarrà lì solo provvisoriamente fino al nuovo arrivo di un nuovo Autore. Apri la maschera Autori e digiti i suoi dati, poi con un clic di pulsante (nella maschera Autori) fai in modo che entri in gioco ImpostaValore e le altre azioni successive.
    Penso sia la soluzione meno dolorosa e meno dannosa, ma pur sempre efficace.
Devi accedere o registrarti per scrivere nel forum
7 risposte