Problema con maschera e sottomaschera

di il
9 risposte

Problema con maschera e sottomaschera

Premesso che ho disposto una maschera (tramite creazione guidata) che trae i suoi controlli dai campi di 2 tabelle; la prima in relazione alla seconda tramite una PK e una FK.
Ho ottenuto una maschera che ho chiamato Aziende con un controllo ID ed uno denominazione (disposti nell'intestazione di Azienda) , nel corpo di questa maschera è presente la sottomaschera Eventi i cui records contengono vari campi tra cui quello che al momento qui prendo in considerazione è GIORNO. Sempre nell'intestazione della maschera Azienda ho predisposto il campo di testo (non associato) che ho chiamato Txt.giorno.
In corrispondenza alla proprietà current della maschera Azienda ho inserito le istruzioni VBA che di seguito scrivo per riportare a video nel campo Txt.giorno il calore del controllo GIORNO della sottomaschera Evento
Private Sub Form_Current()
'Txtgiorno.Value = [Forms]![Eventi]![GIORNO]
' mio promemoria:   da quando ho modificato il nome della sottomaschera dal precedente "Evento" in Eventi" ,  la maschera non va avanti  ed il debug segna  Errore di runtime: 2450  e segnala l'impossibilità di trovare la maschera Eventi, comunque modificando il codice come sotto riportato 

Txtgiorno.Value = Forms![Aziende]![Eventi]![GIORNO]
'ha ricominciato a funzionare (purtroppo non come mi servirebbe)
end sub 
Il mio quesito è questo come mai se nella sottomaschera Eventi seleziono un altro record che contiene campi già inseriti, la mia casella di testo Txtgiorno non si aggiorna col nuovo valore del campo GIORNO che è variato trattandosi di un altro record?

PS. spero di aver scritto controlli correttamente (non mi sono riferito a campi perché se ho capito correttamente in una maschera non ci sono campi, questi ultimi invece compongono le tabelle).
anticipatamente ringrazio per i chiarimenti

9 Risposte

  • Re: Problema con maschera e sottomaschera

    In visualizzazione struttura maschera Aziende, nella txtgiorno, prova a scriverci dentro così:
    =[Maschere]![Aziende]![Eventi]![Giorno]
    forse non ti serve nemmeno scomodare il VBA.
  • Re: Problema con maschera e sottomaschera

    OsvaldoLaviosa ha scritto:


    In visualizzazione struttura maschera Aziende, nella txtgiorno, prova a scriverci dentro così:
    =[Maschere]![Aziende]![Eventi]![Giorno]
    forse non ti serve nemmeno scomodare il VBA.
    funziona esattamente come da te suggerito, non ero al corrente che potevo inserire l'istruzione direttamente nel controllo di txt.
    grazie sempre
  • Re: Problema con maschera e sottomaschera

    calascibetta ha scritto:


    OsvaldoLaviosa ha scritto:


    In visualizzazione struttura maschera Aziende, nella txtgiorno, prova a scriverci dentro così:
    =[Maschere]![Aziende]![Eventi]![Giorno]
    forse non ti serve nemmeno scomodare il VBA.
    funziona esattamente come da te suggerito, non ero al corrente che potevo inserire l'istruzione direttamente nel controllo di txt.
    grazie sempre
    un ulteriore chiarimento , sulla stessa maschera ho aggiunto una ulteriore casella di testo TxtREGUFFICIO che deve restituire il testo composto dalla lettera "A" , il numero dell'anno , seguito da uno "/" ed il numero con cui risulta registrato in ufficio (valore anno da controllo ANNO e valore di registrazione ufficio dal controllo UFFICIO, entrambi presenti nella sottomaschera Eventi), ho provato ad utilizzare il sistema da te suggerito scrivendoci dentro il codice , ma mi servirebbe un'istruzione che verificasse prima se il valore di UFFICIO è vuoto o meno e solo dopo il riscontro di un valore diverso da "" allora dovrebbe visualizzare
     "A" & ([Maschere]![Aziende]![Eventi]![ANNO]) & "/" & ([Maschere]![Aziende]![Eventi]![UFFICIO]) 
    ho provato con = if ([Maschere]![Aziende]![Eventi]![ANNO]) ="" then ... segue il resto del codice su riportato .... end if
    ma non lo accetta
    ho provato con =ilf(IsNull [Maschere]![Aziende]![Eventi]![ANNO], ... segue il resto del codice su riportato .... )
    anche questo non lo accetta.
    Questa istruzione condizionata è applicabile direttamente nel controllo casella di testo o sto perdendo inutilmente tempo e devo utilizzare il VBA?
    In quest'ultimo caso, , magari con la Private sub Form_Current() forse potrebbe funzionare l'istruzione
    if ([Maschere]![Aziende]![Eventi]![ANNO]) ="" then
    TxtREGUFFICIO.vallue = "A" & ([Maschere]![Aziende]![Eventi]![ANNO]) & "/" & ([Maschere]![Aziende]![Eventi]![UFFICIO])
    end if
    
  • Re: Problema con maschera e sottomaschera

    calascibetta ha scritto:


    =ilf(IsNull [Maschere]![Aziende]![Eventi]![ANNO], ... segue il resto del codice su riportato .... )
    Questa va bene (se scritta bene), ma ricorda di separare gli argomenti della IIf con il punto-virgola, non con la virgola.
  • Re: Problema con maschera e sottomaschera

    OsvaldoLaviosa ha scritto:


    calascibetta ha scritto:


    =ilf(IsNull [Maschere]![Aziende]![Eventi]![ANNO], ... segue il resto del codice su riportato .... )
    Questa va bene (se scritta bene), ma ricorda di separare gli argomenti della IIf con il punto-virgola, non con la virgola.
    ok, ho fatto una serie di prove col punto e virgola
    =IIf(IsNull([Maschere]![Aziende]![Eventi]![ANNO]);"A" & [Maschere]![Aziende]![Eventi]![ANNO] & "/" & [Maschere]![Aziende]![Eventi]![UFFICIO])
    l'espressione da un risultato,ma è quello opposto a quello che mi aspettavo, cioè adesso quando il controllo ANNO è vuoto allora copia il valore vuoto su TxtREGUFFICIO e quando invece ha un valore con dati, allora restituisce TxtREGUFFICIO il valore composto che dà il risultato“A0/” (A zero slash). Probabilmente avevo capito male il funzionamento di Ilf e Isnull accoppiati, pensavo infatti che la mia istruzione Ilf con Isnull verificasse sei il valore di ANNO era nullo , e che se il valore non era nullo allora dava il risultato dell’associazione dei valori in un’unica stringa visualizzata da TxtREGUFFICIO.
    Avevo inteso bene ma ho sbagliato qualche cosa nell'istruzione?

    In ogni caso ho ottenuto il risultato che mi proponevo di raggiungere, modificando la formula così :
    =IIf(([Maschere]![Aziende]![Eventi]![ANNO])<>0;"A" & [Maschere]![Aziende]![Eventi]![ANNO] & "/" & [Maschere]![Aziende]![Eventi]![UFFICIO];"")
    grazie
  • Re: Problema con maschera e sottomaschera

    La prima IIf che hai postato mostra solo 2 argomenti. Forse se la scrivi così dovrebbe essere coerente
    =IIf(IsNull([Maschere]![Aziende]![Eventi]![ANNO]);"";"A" & [Maschere]![Aziende]![Eventi]![ANNO] & "/" & [Maschere]![Aziende]![Eventi]![UFFICIO])
  • Re: Problema con maschera e sottomaschera

    Si funziona.

    a questo punto vorrei risolvere un ulteriore necessità;
    come sempre sono farraginoso nella mia descrizione ma cerco di dare completezza del senso di ciò che intendo, quindi tenuto conto che:
    • la PK della tabella Aziende è in relazione con la FK della tabella Eventi e con la tabella Specifiche
    • preciso che, nella tabella Elenchi avevo già predisposto che il campo FKattivitasvolte fosse in relazione con una ulteriore tabella Attività con il campo IDattivitasvolte (la tabella contiene solo un altro campo tipoattivita) e che la relazione, volutamente, non prevede l'applicazione dell'integrità referenziale, ma prevede di includere solo le righe con cui i campi collegati da entrambe le tabelle sono uguali ( soluzione che mi consente di scegliere spuntando una o più voci già inserite nel campo tipoattivita
    • a tal fine chiarisco che quando visualizzo la finestra delle relazioni, osservo che tra le tabelle Eventi e Attivita, la linea di relazione non unisce tipoattivita con FKattivitasvolte, ma con FKattivitasvolte.value (risultato composito di una più voci spuntate)
    • la maschera principale Aziende adesso include due sottomaschere la prima Eventi e la seconda Specifiche
    • nell'intestazione di Azienda sono presenti un controllo ID ed uno denominazione
    • è chiaro che, anche se entrambe le tabelle (Eventi e Specifiche) sono correlate al medesimo ID della tabella Aziende , i record solo in alcuni casi possono corrispondere , in particolare la Tabella Specifiche è relativa alla sola ipotesi in cui è stato spuntato durante la scelta lo specifico valore “missione”.
    Sia la tabella Eventi, sia la tabella Specifiche contengono un campo DATA che mi servirebbe corrispondesse solo nel caso in cui nella maschera , tramite sottomaschera Eventi scegliessi il valore Missione nel controllo FKattivitàsvolte (che già funziona correttamente con origine riga SELECT [Attivita].[ IDattivitasvolte], [Ativita].[tipoattivita] FROM Attivita; )). La data copiata ed ottenuta dal controllo della sottmaschera Eventi e visualizzata nella sottomaschera (la definirei sorella) dovrebbe essere memorizzata nella tabela d’origine Specifiche. Va da se che se non viene spuntato Missione il record della tabella Specifiche non esiste, ma che se a seguito di una modifica del record di Eventi si dovesse poi spuntare la voce Missione, ecco che dovrebbe aggiungersi un corrispondente record di Specifiche la cui data dovrebbe essere identica a quella in quel momento visualizzata nella sottomaschera Eventi.
  • Re: Problema con maschera e sottomaschera

    calascibetta ha scritto:


    la PK della tabella Aziende è in relazione con la FK della tabella Eventi e con la tabella Specifiche
    preciso che, nella tabella Elenchi avevo già predisposto che il campo FKattivitasvolte fosse in relazione con una ulteriore tabella Attività con il campo IDattivitasvolte
    Alt! Io non ho capito niente del tuo scenario tabelle...e non riesco a proseguire la lettura e la comprensione.
    1. Apri una nuova discussione
    2. Sii chiaro nella descrizione dettagliata di tabelle, campi, relazioni, maschere ecc...
    3. Rispiega tutto usando COERENTEMENTE i nomi propri
  • Re: Problema con maschera e sottomaschera

    Ok apro una nuova discussione e provo a descrivere più compitamente il tutto
Devi accedere o registrarti per scrivere nel forum
9 risposte