Casella testo all'interno di una pagina, esterna ad una sottomaschera

di il
9 risposte

Casella testo all'interno di una pagina, esterna ad una sottomaschera

Buonasera a tutti, non sono nuovo ma è da diverso tempo che non scrivo perchè ho sempre trovato la soluzione a tutto in questo sito.

Ho un problema con un campo calcolato che non calcola. Ora cerco di spiegare.

Ho un elenco di nomi (per l'esattezza i dipendenti di una ditta) con tutte le info per ciascun dipendente. Se clicco su un nome apro una maschera di dettaglio del contatto che ho strutturato inserendo un controllo di struttura a scheda di 2 pagine:

  • sulla prima pagina ci sono tutti i dati del dipendente
  • sulla seconda pagina i movimenti dello stesso inteso come saldo e pagamento di eventuali rimborsi spese

Il programma mi serve per tenere a mente tutte le spese che sostengono i dipendenti e quanto gli devo per mettere in busta paga.

Detto questo, sulla seconda pagina  ho inserito una sottomaschera con l'elenco di tutti i movimenti e gli importi (che ha come origine una query filtrata con id dipendente) ed un campo esterno che ha semplicemente la somma di questi importi. Credo, però, che non riesca a fare la somma perchè essendo parte di una maschera che ha come origine un'altra query, non trova il campo che io gli sto dando come origine.

La domanda è quindi questa: come faccio a passargli questo dato? Nel caso, una seconda opzione, sarebbe quella di inserire una colonna con il progressivo numerico, ma al momento non mi viene in mente come strutturarla. 

Se possibile gradirei avere entrambe le soluzioni.

Questo è lo screen della pagina che non funziona.

Potete aiutarmi?

Grazie infinitamente.

9 Risposte

  • Re: Casella testo all'interno di una pagina, esterna ad una sottomaschera

    Ma se ti dà errore qualcosa gli ha passato. Cosa hai associato al controllo?

  • Re: Casella testo all'interno di una pagina, esterna ad una sottomaschera

    Cosa hai scritto dentro il controllo “Saldo attuale”? E anche se c'è una formula corretta, l'hai messo nella sezione giusta? Voglio dire che potresti averlo messo non nella sottomaschera…sai com'è, quando ci sono troppi controlli accavallati è facile cadere in questi errori.

  • Re: Casella testo all'interno di una pagina, esterna ad una sottomaschera

    Al limite metti una query a parte con il solo totale. Sum(bla bla) where bla bla (passando i parametri di selezione). Il controllo lo associ a questa query. Sia che cancelli, modifichi o aggiungi righe, la query ti darà sempre il totale.

    All'update della tabella fai un requery.

  • Re: Casella testo all'interno di una pagina, esterna ad una sottomaschera

    In prima battura, se ti accontenti di avere il saldo nella stessa pagina dove hai gli importi  (nel tuo esempio : Extra), ti basta aggiungere una textbox nel piè di pagina della sottomaschera con la seguente origine dati :

    =somma(importo)

    Ovviamente devi sotituire importo con il nome del tuo campo che contiene l'importo …

  • Re: Casella testo all'interno di una pagina, esterna ad una sottomaschera

    Buongiorno, scusate la latitanza ma sono stato fuori e non potevo rispondere.

    Al controllo gli ho passato la somma di importo della query “=Somma([qyElencoMovimenti]![Importo])” ma dà errore. Tra l'altro è la stessa query che ho utilizzato per la sottomaschera inserita nella pagina “Extra”.

    Facendo come dice max.riservo funziona, ma essendo una visualizzazione in modalità foglio dati non mi fa vedere il piè pagina e comunque è una soluzione che non mi piace, perchè in presenza di molti movimenti dovrei scorrerli tutti per vedere il saldo. Volevo qualcosa di immediato all'apertura della pagina.

    Grazie

  • Re: Casella testo all'interno di una pagina, esterna ad una sottomaschera

    Innanzitutto devi leggere bene quello che ti ha suggerito Max… e non è quello che hai fatto, parlo della sintassi…

    Nel metodo Somma accessibile dalla Form, come parametro il riferimento ad un controllo della form… come ti ha detto Max appunto, dove Inporto è il controllo textbox associato al campo importo della query.

    Detto questo ovviamente la DatasheetView che è apparso solo ora come dettaglio, non lo consente… quindi o formatti una maschera continua come un datasheetview altrimenti devi fare un DSUM(….) ma dovrai inserire come Condizione ul criterio che lega la subform alla Form ovvero la FK leggendola dalla Pk della Form.

  • Re: Casella testo all'interno di una pagina, esterna ad una sottomaschera

    Grazie @Alex, sono state un po superficiale nell'interpretare il messaggio di max.riservo.

    Problema risolto.

    Ho messo una casella di testo con la seguente formula, come suggeritomi:

    =DSum("[Importo]";"qyElencoMovimenti";"[idDipendenteMovimenti]=" & [ctIdDipendente])

    Ed ora funziona.

    Grazie mille, siete il top.

  • Re: Casella testo all'interno di una pagina, esterna ad una sottomaschera

    Soluzione trovata, però aggiungo un'ulteriore possibilità: 

    1. mettere nel pié di pagina della sottomaschera un controllo con origine =Somma(NomeCampoDaSommare) (come aveva detto già Max.Riservo); il controllo in visualizzazione foglio dati non è visualizzato ma esiste e quindi è accessibile;
    2. casella di testo nella scheda in cui è inserita la sottomaschera con origine dati: =NomeContainerSottomaschera.Form.NomeControlloConLaSomma; forse la sintassi con le varie parentesi potrebbe essere questa
    =[NomeContainerSottomaschera].[Form]![NomeControlloConLaSomma]

    Di solito il container della sottomaschera ha lo stesso nome della sottomaschera ma non sempre è così ed è bene imparare che il container (il controllo che ospita la sottomaschera) non è la sottomaschera.

    Se usi il generatore di espressioni per andare a prendere il valore è probabile che ti faccia uno scherzetto da geneRRatore:

    [NomeContainerSottomaschera]..Scheda![NomeControlloConLaSomma] 

    e alla pressione dell'OK avrai un bell'errore di Errore si sintassi nell'espressione con l'inevitabile domanda: “Ma se l'ho fatto con il generatore di espressioni come fa l'espressione ad essere sbagliata?” Appunto, il generatore si trasforma in geneRRatore. Sbaglia a scrivere .Scheda (c'è anche un punto davanti di troppo) anziché Form. Microsoft credeva di averlo corretto ma o non l'ha fatto o la correzione è andata persa con aggiornamenti successivi. Lo sanno e la sistemeranno.

  • Re: Casella testo all'interno di una pagina, esterna ad una sottomaschera

    Perfetto grazie.

    Mi hai letto nel pensiero. Questa soluzione l'avevo ipotizzata e provata ma infatti mi dava sempre errore e mi ero accorto che c'era una espressione fatta dal generatore che mi restituiva sempre una sintassi con dei punti come nel tuo esempio.

    Sono arrivato a pensare che avevo sbagliato qualche nome di casella di controllo ma niente.

    Ora almeno ho capito il perchè.

    A presto.

Devi accedere o registrarti per scrivere nel forum
9 risposte