Newsgroup: it.comp.appl.access
Titolo: Con parole mie....

Non so se sarò abbastanza chiaro tuutavia proverò ad esporre il mio 
problema.
Ho due maschere distinte con altrettante relative tabelle.
Una maschera di inserimento dati personali e una maschera di calcolo in 
cui vengono richiamati almeno due dati immessi nella prima.
La maschera di calcolo esegue delle operazioni attraverso una routine in 
visual basic.
Per gli oggetti da richiamare ho scelto delle caselle di riepilogo.
I dati richiamati effettivamente appaiono, ma non vengono considerati 
dalla maschera di calcolo che mi ritorna valore 0 o 1 ma non i valori 
reali, compromettendo tutto le successive operazioni di calcolo.
Come faccio a richiamare un dato di un altra maschera che rimanga 
effettivo e possa essere gestito da una routine in visual basic ?
Ringrazio anticipatamente
Ciao
Mauri

 ha scritto nel messaggio
news:MPG.15abc3d4d...@News.CIS.DFN.DE...

=[Forms]![NomeMaschera]![NomeControlloCheContieneIlDato]
Naturalmente la maschera NomeMaschera deve essere aparta.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 =[Forms]![NomeMaschera]![NomeControlloCheContieneIlDato]
Quindi è un istruzione che devo inserire nella routine di visual basic ?
Scusa per l'insistenza ma non sono un grande esperto.
Grazie per la tua disponibilità.
Ciao
Mauri

 ha scritto nel messaggio
news:MPG.15ac79df8...@News.CIS.DFN.DE...

Se ambedue le maschere (sia quella di inserimento dati personali che quella
di calcolo) sono APERTE contemporaneamente.
Se la prima maschera si chiama MascheraInserimento e contiene un controllo
chiamato Pippo.
Se nella seconda maschera vuoi che il valore di una casella di testo non
associata in essa contenuta (ad esempio chiamata Pluto) assuma il valore del
controllo Pippo di MascheraInserimento.
Nell'origine controllo di Pluto scrivi:
=[Forms]![MascheraInserimento]![Pippo]
Se poi ti trovi ad operare in condizioni diverse da quelle sopra ipotizzate,
spiegati con un esempio.


, 
r.ma...@libero.it
 

Ho applicato i tuoi consigli ed effettivamente funziona.
Tuttavai è possibile effettuare un richiamo di valori da una
maschera all'altra senza dover tenere aperta la maschera di origine ?
Ciao e grazie
Mauri

 ha scritto nel messaggio
news:MPG.15ad997f6...@News.CIS.DFN.DE...

Non puoi far riferimento ai controlli di una maschera che non sia aperta.
Però, se la tua "maschera origine" è chiusa, puoi far riferimento ai campi
(di tabelle o queries) che sono associati ai controlli di tale maschera.
E' possibile fare questo tramite caselle combinate, caselle di riepilogo,
funzioni sui dominii (DLookup, DSum, DCount, ecc.); oppure puoi aprire un
recordset sull'oggetto che è origine record della tua "maschera origine",
avendo così accesso a tutti i dati contenuti in tale oggetto. In alcuni di
questi casi, potrebbe essere necessario conoscere i criteri per selezionare
il/i record che contiene/gono i dati.
Insomma, per farti un esempio occorre conoscere qualcosa di più di quello
che vuoi fare.


Ho una maschera che mi calcola il totale di una serie di misurazioni 
plicometriche (misurazioni del grasso corporeo) che ho chiamato "totale 
pliche".
In un altra maschera calcolo il fabbisogno proteico di un soggetto 
attraverso una serie di calcoli che comprendono anche il dato "totale 
pliche".
Ho necessitā di chiudere la prima maschera in quanto passo attraverso una 
ulteriore maschera di menų.
Spero di essere stato pių chiaro e ti ringrazio per l'interessamento.
Ciao
Mauri

 Mauri
Se "totale pliche" è il nome di una casella di testo non associata della
prima maschera, esso viene calcolato e quindi assume un valore solo quando
la maschera è aperta, inoltre puoi fare riferimento a lui da un'altra
maschera solamente se la maschera che lo calcola è aperta.
A mio avviso devi effettuare il totale delle misurazioni plicometriche nel
campo calcolato di una query; a tale campo campo potrai dare il nome [totale
pliche].
Al valore del campo [totale pliche] potrai fare riferimento sia dalla prima
maschera (con una casella di testo associata a tale campo) che dalla seconda
maschera (usando una funzione DLookup scritta nell'origine controllo di una
casella di testo non associata).
Così facendo, quando apri la seconda maschera non è necessario che sia
aperta anche la prima.


 campo calcolato di una query; a tale campo campo potrai dare il nome [totale
Grazie proverò così.
Ciao
Mauri

 

Scusa se approfitto della tua pazienza.
Ho creato la quuery [totale pliche], in cui compare il campo desiderato 
"totale pliche". Nella maschera di calcolo generale ho tentato di 
richiamare il ralativo valore mediante una casella di testo con inserito 
nelle "proprietà - origine di controllo" l'istruzione DLookup([totale 
pliche], [Q_totale pliche]), ma mi appare il messaggio di errore 
#nome???.
Cosa c'è che non va?
Ciao
Mauri
 

 #nome???.
L'hai messo l'uguale?
Cioč = DLookUp( ecc. ecc. )
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com

 Cioč = DLookUp( ecc. ecc. )
Se metto l'uguale mi da il messaggio: "errore di sintassi operando o 
operatore mancante,carattere o virgola non valida oppure testo immesso 
senza virgolette".
Ringraziamenti
Ciao
Mauri

 ha scritto nel messaggio
news:MPG.15aefbbac...@News.CIS.DFN.DE...

Se la funzione l'hai scritta nell'origine controllo di una casella di testo
non associata, la sintassi giusta é:
= DLookup ("[totale pliche]"; "[Q_totale pliche]")
Questo per quanto riguarda la sintassi della funzione DLookup; resta il
fatto che, se per la funzione DLookup non indichi anche i criteri, Access ti
restituirà il campo [totale pliche] della query Q_totale pliche di una riga
a caso.
Per darti una dritta sulla scrittura dei criteri occorrerebbe conoscere la
struttura delle due tabelle e come sono in relazione fra di loro (sempre che
siano in relazione fra di loro).


Addesso funziona. La casella di testo mi restituisce i valori giusti.
Il problema č che io usavo nella istruzione la virgola (come da help di 
access) invece del punto e virgola.
Ringrazio di cuore.
Ciao
Mauri

 Mauri
Ciò che trovi scritto sull'help (esempi compresi) è relativo alla sintassi
da usare se le funzioni le usi in un codice VBA o SQL; se invece le stesse
funzioni le usi in un ambito in cui potrebbero essere create con il
Generatore di espressioni (il tuo caso), come separatore di elenco devi
usare quello che è stato impostato nelle Impostazioni internaionali di
Windows: normalmente nella versione italiana si usa il punto e virgola.


Grazie e lancio l'ultimo quesito.
Sempre relativamente al mio programma.
Quando apro una maschera collegata ad una tabella nelle caselle di testo 
mi rimangono ovviamente memorizzati i dati immessi in precedenza.
Se volessi tenerli memorizzati ma non farli apparire ogni volta che apro 
la maschera di riferimento come dovrei fare?
Ciao
Mauri

 ha scritto nel messaggio
news:MPG.15b145299...@News.CIS.DFN.DE...

Beh, è abbastanza inusuale, se una maschera ha come origine record una
tabella, non voler visualizare i dati di detta tabella.
Forse se ci spieghi a cosa ti serve una cosa del genere è più facile darti
una dritta.


 una dritta.
In effetti ho creato delle maschere (inserimento dati personali nome-
altezza-peso ecc, calcoli antropometrici, calcolo del fabbisogno 
calorico, calcolo del fabbisogno proteico ecc...)in cui si effettuano 
calcoli vari ed avvalendomi di routine in visual basic. Il fatto che 
essendo poco esperto ho poi creato altrettante tabelle a loro 
volta richiamate da una query unica a sua volta richiamata da un report 
di riepilogo per la stampa.
Quindi poichè non era mia intenzione memorizzare tutti i dati di ciascun 
soggetto, esaurita la fase di stampa, i valori venivano successivamnte 
sostituiti da quelli di un nuovo soggetto. Adesso però avverto l'esigenza 
di memorizzare i dati per ciascun soggetto, posso rimediare?
Comunque la possibilità di non visualizzare i dati di un precedente 
soggetto ed evitare confusione è attuabile?
Ringrazio per i tuoi preziosi consigli e mi scuso del mio rudimentale 
linguaggio.
Ciao
Mauri

 ha scritto nel messaggio
news:MPG.15b31603f...@News.CIS.DFN.DE...

Il primo consiglio che sento di darti è quello di risolvere il tuo problema
suddividendolo in due se non in tre parti ben distinte.
Per prima cosa devi crearti una tabella che deve contenere i dati anagrafici
di tutte le persone (chiave primaria, nome, cognome, data di nascita ecc.);
ogni record dovrà contenere anche tutti i dati riguardanti quella persona e
che saranno la base per i tuoi calcoli (peso, altezza ecc.).
In questa fase del progetto non ti preoccupare dei calcoli e di come li
dovrai visualizzare e/o stampare; preoccupati di progettare una buona
struttura della tabella e una buona maschera per l'inserimento e
l'aggiornamento dei dati di ogni individuo. Nella tabella NON memorizzare
alcun campo calcolato.
Solo dopo aver realizzato un archivio che contiene i dati corretti di ogni
persona, passa a realizzare i calcoli e gli oggetti del database con i quali
visualizzare i dati della tabella e i relativi calcoli.
Per una maggiore flessibilità nel realizzare gli oggetti di output (maschere
di visualizzazione e report), ti consiglio di effettuare i tuoi calcoli in
campi calcolati di una query. Tale query la userai quindi come origine
record della maschera di visualizzazione e/o del report.
Sarà al momento che aprirai la maschera di visualizzazione o il report che
deciderai se visualizzare/stampare le informazioni di tutte le persone
contenute nella tabella o quelle relative ad una sola persona.
Se questa impostazione ti sembra logica, inizia a realizzarla e, se hai
bisogno di maggiori chiarimenti, mano a mano che ti si presenteranno dei
problemi, rifatti vivo.


Impiegherņ qualche giorno per mettere in pratica i tuoi consigli.
Intanto ti ringrazio per la tua disponibiltą.
Ciao
Mauri