Maschera e sottomaschera

di il
25 risposte

Maschera e sottomaschera

Ciao a tutti,
e subito un grazie a Osvaldo e Gibra per l'aiuto che mi ha portato fin qua.
Mi trovo in questa situazione: Ho una tabella Eventi e a essa collegata una tabella Persone i quali hanno un Ruolo diverso.
Vorrei creare una Maschera Eventi (singola) e collegarvi le varie persone eventualmente coinvolte nell'evento. Si pensava ad una Sottomaschera.
La prima perplessita risiede nel fatto che cos' mi tocca avere diversi campi (Cognome, Nome, NatoA, Il, ecc.) e non vorrei che diventi problematico inserirvi i dati. Che dite ?

25 Risposte

  • Re: Maschera e sottomaschera

    Mazda, hai aperto un nuovo thread riguardante una discussione precedente direi preziosa per capire meglio tutto lo scenario tabelle e campi. Ora lo segnalo io (perchè ti ho seguito)
    https://www.iprogrammatori.it/forum-programmazione/access/tabella-anagrafe-doppia-t26912.html
    ma devi pensarci tu a linkare oppure descrivere tutto chiaramente, altrimenti chi ti legge non capisce.

    Venendo alla tua domanda direi che ti trovi di fronte a uno scenario simile a questo

    Nel tuo caso:
    Eventi = A
    Persone = B
    TabellaCongiunzione = C
    In sostanza nella sottomaschera non devi/non puoi digitare i valori anagrafici della Persona. Puoi solo selezionarla con casella combinata "ben congeniata" e se una Persona non c'è', devi compilare Persone con il giochetto che spiego nel documento.
  • Re: Maschera e sottomaschera

    Ciao Osvaldo,
    hai ragione avrei dovuto mettere un richiamo al precedente thread.
    Sto costruendo il tutto, al momento sono fermo al punto 6 ) Creare un pulsante in maschera B che dia il valore di ritorno sul campo di maschera/sottomaschera A/C.IDB.

    Creo il pulsante e poi ... ?
  • Re: Maschera e sottomaschera

    OsvaldoLaviosa ha scritto:


    Nel tuo caso:
    Eventi = A
    Persone = B
    TabellaCongiunzione = C
    In sostanza nella sottomaschera non devi/non puoi digitare i valori anagrafici della Persona. Puoi solo selezionarla con casella combinata "ben congeniata" e se una Persona non c'è', devi compilare Persone con il giochetto che spiego nel documento.
    In un mio database "LIbreria" ho la tabella "Elenco LIbri" collegata alla tabella di "Raccordo" senza integrità referenziale tramite il campo ISBN, ed un collegamento 1 a molti tra il campo Chiave Primaria IDAutori della tabella "Autori" ed il campo Chiave Esterna IDAutori della tabella "Raccordo" .
    Su queste relazioni ho realizzato una maschera con sottomaschera. Nella maschera principale c'è la tabella "Elenco Libri", mentre la sottomaschera ha i campi della tabella di raccordo e della tabella "Autori".
    Quando devo inserire un nuovo Autore, prima lo cerco tramite casella combinata sul campo Chiave esterna IDAutori della tabella Raccordo, e se c'è i dati vengono visualizzati nei campi della sottomaschera; se invece il nome dell'Autore non c'è, lo posso aggiungere tranquillamente, aggiornando l'archivio della tabella "Autori".
  • Re: Maschera e sottomaschera

    mazda91 ha scritto:


    Creo il pulsante e poi ... ?
    Ho scritto tutto chiaramente dopo. A quel punto sei libero di scegliere se vuoi che le "azioni" avvengano con le macro oppure in VBA. Quel documento è stato scritto quando usavo ancora solo le macro, poi ho conosciuto il VBA è l'ho integrato con istruzioni corrispondenti. Ma le due logiche sono analoghe.

    ProgrammD ha scritto:


    In un mio database "LIbreria" ho la tabella "Elenco LIbri" collegata alla tabella di "Raccordo" senza integrità referenziale tramite il campo ISBN, ed un collegamento 1 a molti tra il campo Chiave Primaria IDAutori della tabella "Autori" ed il campo Chiave Esterna IDAutori della tabella "Raccordo" .
    Su queste relazioni ho realizzato una maschera con sottomaschera. Nella maschera principale c'è la tabella "Elenco Libri", mentre la sottomaschera ha i campi della tabella di raccordo e della tabella "Autori".
    Quando devo inserire un nuovo Autore, prima lo cerco tramite casella combinata sul campo Chiave esterna IDAutori della tabella Raccordo, e se c'è i dati vengono visualizzati nei campi della sottomaschera; se invece il nome dell'Autore non c'è, lo posso aggiungere tranquillamente, aggiornando l'archivio della tabella "Autori".
    Lo scenario che hai illustrato è analogo. Ma non ci spieghi come "aggiungere tranquillamente". Non è una cosa immediata: occorre progettarla e ci sono vari modi. Si può sfruttare l'evento "Non in elenco" (NotInList) e/o servirsi di un pulsante con il clic come indico nel mio documento.
    Non sono d'accordo sul referenziare senza "Applica integrità referenziale".
  • Re: Maschera e sottomaschera

    Ciao Osvaldo, sono fermo a
    Creare un pulsante in maschera B che dia il valore di ritorno sul campo di maschera/sottomaschera A/C.IDB
    1. Visualizzazione struttura maschera B
    2. Creare il pulsante e nominarlo ImpostaB
    3. Salva tutto e chiudi maschera B
    perché non ho ben capito cosa fa questo pulsante.
    Quando dici che il pulsante dia il valore di ritorno, intendi che .... ?
    Come sempre grazie di tempo e pazienza
  • Re: Maschera e sottomaschera

    La procedura va letta tutta. Quella che hai letto è solo la preparazione del pulsante ImpostaB. Se salti al punto 8 capirai che cosa deve fare il pulsante ImpostaB (via macro).
    Se invece leggi il corrispondente (via VBA) ti accorgi che la procedura di costruzione pulsante ImpostaB viene racchiusa in una fase sola (tutta nel punto 6)).
  • Re: Maschera e sottomaschera

    Si Osvaldo, ho letto tutto ma sono sempre fermo al punto 6 perché non mi è possibile nella creazione della macro eseguire ImpostaValore per il motivo che non c'è. Può essere forse dovuto ad una diversa versione access ? io uso 2007. Può anche darsi (facile) che io non abbia capito bene il da fare. Correggimi se sbaglio: giunti al punto 6 le due maschere consento l'immissione dati di Evento e Persona ora l'azione nella quale sono bloccato dovrebbe mettere assieme le due cose, giusto ?
    Grazie ancora
  • Re: Maschera e sottomaschera

    mazda91 ha scritto:


    non mi è possibile nella creazione della macro eseguire ImpostaValore per il motivo che non c'è.
    Devi cliccare in alto sul tasto "Mostra tutte le azioni".

    mazda91 ha scritto:


    Correggimi se sbaglio: giunti al punto 6 le due maschere consento l'immissione dati di Evento e Persona ora l'azione nella quale sono bloccato dovrebbe mettere assieme le due cose, giusto ?
    Il pulsante ApriB (ossia ApriPersone) deve servire ad aprire la maschera Persone e farla posizionare su nuovo record.
    Il pulsante ImpostaB (ossia ImpostaPersona) lo si usa dopo aver compilato tutti i campi della Persona Nuova, lo si clicca per:
    1. impostare il nuovo valore IDPersona dentro la sottomaschera Congiunzione
    2. poi si dice di chiudere maschera Persone
    3. RieseguiQuery serve ad aggiornare la lista interna della casella combinata IDPersona che sta nella sottomaschera Congiunzione
  • Re: Maschera e sottomaschera

    Ok è bastato cliccare su "Mostra tutte le azioni" adesso però succede che appena inserisco ImpostaValore mi mette il ! di fianco e finita la creazione della macro mi da errore dicendo che la maschera B non la trova, eppure esiste. Boh ??
  • Re: Maschera e sottomaschera

    Ovvio. Devi adattare i nomi degli oggetti del mio documento con i nomi oggetti del tuo database. Non hai nè una tabella, nè una maschera che si chiama B. B per te significa Persone. Il campo B1 potrebbe essere Cognome, B2 Nome ecc...
  • Re: Maschera e sottomaschera

    Per evitare quell'eventualità ho chiamato gli oggetti (tabelle, maschere, ecc.) esattamente come li avevi messi tu. La maschera B esiste.
  • Re: Maschera e sottomaschera

    Quando crei le espressioni tipo [Maschere]!ecc... ti consiglio di usare il generatore di espressioni, così sei sicuro che Access va a pescare esattamente gli oggetti che ha dentro di sè.
    Non ti preoccupare per il punto esclamativo a sinistra di ImpostaValore...non l'ho mai capito...poi però funziona lo stesso.

    Sia chiaro che devi cogliere anche logicamente la sequenza delle azioni comportamentali dell'utente. Il pulsante ImpostaB ha un senso solo se A/C è aperto e posizionato su "quel" record che sta lì ad aspettare informazioni da IDB nuovo.
    Inoltre non ha senso eseguire la macro da sola, ma occorre associarla al clic del pulsante e solo cliccando sul pulsante deve succedere quello che deve succedere.

    P.S.: non ricordo se hai postato precedenti thread in cui si discutevano i codici VBA. Se hai già un po' di dimistichezza, ti consiglio di usarli invece delle macro.
  • Re: Maschera e sottomaschera

    Osvaldo, sono ancora bloccato.
    Credo di aver individuato il problema nella macro ImpostaB, probabilmente in
    ImpostaValore
    Elemento: [Maschere]![A]![C]![IDB]
    Espressione: [Maschere]![B]![IDB]

    qui sbaglio qualcosa. Magari anche nell'individuare i campi giusti. Ho provato a scriverla e a farla inserire da access ma ottenedo lo stesso risultato.
    Cosa può essere ?
  • Re: Maschera e sottomaschera

    Vattelo a pesca!
    Varie ipotesi:
    1. Qualcosa mi dice che la procedura guidata di creazione maschere potrebbe aver assegnato un "nome maschera" diverso dal omonimo "nome tabella". Nel mio esempio e nella mia prassi progettuale, dò generalmente lo stesso nome, anche quando Access me ne propone uno diverso. Per esempio è molto probabile che la sottomaschera C sia stata proposta con il nome "Sottomaschera C" o "C sottomaschera" e io, nell'ultima finestra di creazione guidata, correggo sempre tale nome, attribuendo lo stesso nome della tabella.

    2. Nella finestra Relazioni, le tabelle hanno la spunta su "Applica integrità referenziale"?

    3. Quando fai la creazione guidata delle maschere, ti consiglio di includere TUTTI i campi

    4. Prova, nella macro ApriB, a mettere come prima azione EseguiComandoMenu--->SalvaRecord

    5. Prova l'equivalente procedura in VBA
Devi accedere o registrarti per scrivere nel forum
25 risposte