Maschera e sottomaschera

di il
25 risposte

25 Risposte - Pagina 2

  • Re: Maschera e sottomaschera

    Fatta anche questa, ricevo sempre errore nel momento che clicco su ApriB:
    Impossibile eseguire questa operazione durante l'elaborazione di un evento di maschera o di report
    al mio clic su OK ...finestra > Azione non riuscita > NomeMacro ImpostaB - Condizione Vero - NomeAzione Chiudi - Argomenti Maschera; B; Prompt
  • Re: Maschera e sottomaschera

    Ciao Osvaldo,
    spremi che spremi le meningi mi viene il dubbio che i campi di cui al punto 8 non li abbia (io) inseriti correttamente. Potresti spiegare come fare.
    Il passaggio
    Elemento: [Maschere]![A]![C]![IDB]
    implica che i campi li prendo da maschere caricate o tutte. Il campo IDB è sulla maschera B e collegata a C quindi che faccio ?

    Grazie
  • Re: Maschera e sottomaschera

    [Maschere]![A]![C]![IDB]
    va letto così:
    [Maschere] è una parola obbligatoria equivalente a [Forms] in VBA. Vuol dire "vai a pescare una maschera dalla lista delle maschere"...ma ha senso solo se la maschera è aperta. Già ma quale?
    I "punti esclamativi" sono caratteri di separazione (anch'essi obbligatori).
    Tu devi "dichiarare"/"prendere in considerazione" il campo [IDB] che sta nella sottomascera [C]. Quando si dichiara una sottomaschera è obbligatorio dichiarare anche la maschera che la ospita (in questo caso [A]).
    Si presuppone che maschera/sottomaschera [A]/[C] sia di tipo "classico" e non con le "maschere collegate" che vanno dichiarate autonomamente.

    Quando clicchi sul pulsante ApriB, A/C devono continuare a rimanere aperte, in attesa di un nuovo dato che B gli fornirà da lì a poco, dopo la tua digitazione di tutti i dati dentro B.
    Quando clicchi sul pulsante ImpostaB, la macro va ad impostare il nuovo IDB dentro A!C!IDB...e in quel preciso istante A/C e B devono essere tutte aperte. Dopo l'impostazione valore puoi chiudere B.

    mazda91 ha scritto:


    Il campo IDB è sulla maschera B e collegata a C quindi che faccio ?
    È necessario RieseguiQuery perchè la casella combinata deve aggiornarsi. RieseguiQuery è necessario se vuoi che A/C rimangano aperte e posizionate sul record di C che stai trattando.
    Alcuni utenti che non conoscono questo comando (anch'io quando non lo conoscevo) chiudono tutto e riaprono cercando di memorizzare il record in questione da qualche parte per poi riposizionarsi lì. Si tratta di una soluzione spartanissima, ma serve a farti capire che, nonostante B e C siano legate/collegate da un join nelle sottostanti tabelle...l'aggiornamento nella sottomaschera (figlia) con è così scontato...e occorre comandarlo con RieseguiQuery.
  • Re: Maschera e sottomaschera

    OK, questa parte risolta. Però - giusto per non farsi mancare nulla - ora che succede ?
    Succede che Aperta la maschera A inserisco un po' di dati e quando faccio ApriB ... mi restituisce errore, questo:
    'Impossibile eseguire questa azione durante l'elaborazione di un evento di maschera o di report'
    quando dò OK aperta la finestra di dialogo di dice:
    nome macro ImpostaB - condizione Vero - nome azione Chiudi - argomenti: Maschera; B; Prompt.
    Credo di capire che allora l'errore sia nella chiusura della maschera B. Qui le ho provate tutte. Al Salva ho messo Si. No, Promt, nulla, cancellato l'azione Chiudi, ma inutilmente. Che cavolo può essere ???
  • Re: Maschera e sottomaschera

    OsvaldoLaviosa ha scritto:


    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".
    Riprendo il discorso.
    Nel mio database Libreria nella sottomaschera riesco ad inserire autori già presenti in elenco o ad inserirne di nuovi andando ad aggiornare la tabella Autori, senza Macro ne VBA.

    Nella sottomaschera nella "scheda DATI" ci sono:
    Oggetto origine: RACCORDO Sottomaschera
    Collega campi master: ISBN
    Collega campi secondari: ISBN
    Filtra su schema vuoto: SI
    Abilitato: SI
    Bloccato: NO

    L'origine record della tabella RACCORDO Sottomaschera è:
    SELECT [RACCORDO].[ISBN], [ELENCO AUTORI].[ID], [ELENCO AUTORI].[NOME AUTORE], [ELENCO AUTORI].[COGNOME AUTORE], [ELENCO AUTORI].[CATEGORIA], [ELENCO AUTORI].[TIPOLOGIA], [RACCORDO].[IDAUTORI] FROM [ELENCO AUTORI] INNER JOIN RACCORDO ON [ELENCO AUTORI].[ID] =[RACCORDO].[IDAUTORI];

    Se qualcosa non ti è chiara, dimmi che dati devo postare per chiarire un pò meglio come ho gestito questa maschera con sottomaschera.
  • Re: Maschera e sottomaschera

    ProgrammD ha scritto:


    Nel mio database Libreria nella sottomaschera riesco ad inserire autori.... nuovi andando ad aggiornare la tabella Autori, senza Macro ne VBA.
    In base alle mie conoscenze, ciò è impossibile.
    Nel campo IDAutore della sottomaschera potrai digitare al massimo il Cognome (in base ai campi che vedo, se usi una casella combinata)...ma poi come fai a digitare gli altri campi? Non devi chiamare invitabilmente la maschera Autori? Ciò non avviene automaticamente, ma grazie a un codice che guida tutta la questione.

    Tuttavia, penso che il problema principale parta dal database di mazda91. Ho avuto modo di reperirlo in via privata. Presentava molte ridondanze e incongruenze che non permettevano la corretta applicazione della mia procedura.
  • Re: Maschera e sottomaschera

    OsvaldoLaviosa ha scritto:


    ProgrammD ha scritto:


    Nel mio database Libreria nella sottomaschera riesco ad inserire autori.... nuovi andando ad aggiornare la tabella Autori, senza Macro ne VBA.
    In base alle mie conoscenze, ciò è impossibile.
    Nel campo IDAutore della sottomaschera potrai digitare al massimo il Cognome (in base ai campi che vedo, se usi una casella combinata)...ma poi come fai a digitare gli altri campi? Non devi chiamare invitabilmente la maschera Autori? Ciò non avviene automaticamente, ma grazie a un codice che guida tutta la questione.

    Tuttavia, penso che il problema principale parta dal database di mazda91. Ho avuto modo di reperirlo in via privata. Presentava molte ridondanze e incongruenze che non permettevano la corretta applicazione della mia procedura.
    Nel campo IDAutori digito il cognome dell'autore. Se c'è, poi mi compaiono in automatico tutti gli altri campi: Nome, Cognome, Categoria, Tipologia.
    Se invece non c'è, nel campo IDAutori non metto nulla e comincio a scrivere nei campi Nome, Cognome, Categoria e Tipologia, mentre il campo ISBN è già compilato essendo uguale al campo ISBN della tabella principale.
  • Re: Maschera e sottomaschera

    ProgrammD ha scritto:


    Se invece non c'è, nel campo IDAutori non metto nulla e comincio a scrivere nei campi Nome, Cognome, Categoria e Tipologia,
    Tu mi stai dicendo che hai i campi Nome, Cognome nella sottomaschera. Ciò è errato progettualmente parlando. Il campo IDAutore (al singolare mi raccomando) è "chiave esterna" e pesca valori dalla tabella Autori (madre) rappresentandone tutti i suoi campi. La tabella Autori deve avere i campi IDAutore, Nome, Cognome, mentre la tabella/sottomaschera solo IDAutore...poi c'è tutto il giochetto che descrivo nel mio documento...
  • Re: Maschera e sottomaschera

    Il campo IDAutori è un campo della tabella raccordo, ed è la chiave esterna del legame "uno a molti" con la tabella Autori.
    Su questo campo "IDAutori" ho una casella combinata, per cui quando devo inserire un autore per un libro lo vado prima a cercare lì, se non c'è lo inserisco digitando nei campi Nome, Cognome, Categoria, Tipologia.
    Riepilogo: nella sottomaschera ci sono i campi di due tabelle:
    1) della tabella di raccordo con i campi ISBN e IDAutori
    2) della tabella Autori con i campi ID, Nome, Cognome, Categoria, Tipologia
    Senza usare VBA o macro, funziona benissimo.
  • Re: Maschera e sottomaschera

    ProgrammD ha scritto:


    tabella Autori con i campi ID, Nome, Cognome, Categoria, Tipologia
    Che centrano i campi Categoria e Tipologia nella tabella Autori? Se Stefano Benni scrive i seguenti libri:
    Stranalandia (fantasia)
    Mia biografia (biografia di sè stesso)
    La drammatica storia di Sara (romanzo drammatico)
    Tutte le ricette della Toscana (libro di ricette di cucina)
    mi dici come fai a catalogare in modo univoco Stefano Benni?
    Quei campi devono appartenere alla tabella Libri...spero di averne compreso il senso...

    Ho un database simile al tuo...e lo scenario tabelle dovrebbe essere il seguente:

    Libri
    ISBN (chiave primaria)
    Titolo
    Genere
    Pagine
    IDEditore (numerico) (dal lato molti prevedendo anche una tabella Editori)

    Autori
    IDAutore (contatore, chiave primaria)
    Nome
    Cognome

    Autorità
    IDAutorità (contatore, chiave primaria)
    IDLibro (numerico)
    IDAutore (numerico)(qui magari ci metti una casella combinata con la combinazione Cognome & Nome)

    Relazioni:
    Libri.IDLibro uno-a-molti Autorità.IDLibro
    Autori.IDAutore uno-a-molti Autorità.IDAutore

    Credo di avere le idee molto chiare al riguardo.
    La gestione della sottomaschera nel modo che hai esposto tu, non mi convince.
  • Re: Maschera e sottomaschera

    OsvaldoLaviosa ha scritto:


    ProgrammD ha scritto:


    tabella Autori con i campi ID, Nome, Cognome, Categoria, Tipologia
    Che centrano i campi Categoria e Tipologia nella tabella Autori? Se Stefano Benni scrive i seguenti libri:
    Stranalandia (fantasia)
    Mia biografia (biografia di sè stesso)
    La drammatica storia di Sara (romanzo drammatico)
    Tutte le ricette della Toscana (libro di ricette di cucina)
    mi dici come fai a catalogare in modo univoco Stefano Benni?
    Quei campi devono appartenere alla tabella Libri...spero di averne compreso il senso...

    Ho un database simile al tuo...e lo scenario tabelle dovrebbe essere il seguente:

    Libri
    ISBN (chiave primaria)
    Titolo
    Genere
    Pagine
    IDEditore (numerico) (dal lato molti prevedendo anche una tabella Editori)

    Autori
    IDAutore (contatore, chiave primaria)
    Nome
    Cognome

    Autorità
    IDAutorità (contatore, chiave primaria)
    IDLibro (numerico)
    IDAutore (numerico)(qui magari ci metti una casella combinata con la combinazione Cognome & Nome)

    Relazioni:
    Libri.IDLibro uno-a-molti Autorità.IDLibro
    Autori.IDAutore uno-a-molti Autorità.IDAutore

    Credo di avere le idee molto chiare al riguardo.
    La gestione della sottomaschera nel modo che hai esposto tu, non mi convince.

    Ti ringrazio per la risposta dettagliata. La correzione che hai proposto a proposito dei campi Tipologia e Categoria, l'avevo già fatta al mio database libreria. Qui ho riportato la vecchia versione.
    Per quanto riguarda la gestione della sottomaschera, il modo da me esposto dipende, forse, dal fatto che tra la tabella Raccordo ed Elenco LIbri c'è un rapporto di uno a molti, tra i campi ISBN, ma senza integrità referenziale.
Devi accedere o registrarti per scrivere nel forum
25 risposte