Newsgroup: it.comp.appl.access
Titolo: Finestra di dialogo, query, macro invia oggetto

se possibile mi farebbe ricevere il vostro aiuto per una cosa che mi
sto trascinando da un pò di tempo e che non riesco ad affrontare e
risolvere.
Ho creato una piccola macro che una volta al mese aziono:
- la macro avvia una query di creazione tabella recuperando i dati da
una tabella che aggiorno ogni mese
- ne filtra i valori secondo dei valori data che sono richiesti da una
maschera parametri - cioè una finestra di dialogo? -, inserita come
criterio, nella query stessa e che
devo imputare manualmente quando richiesto
- dopichè invia delle email con allegato il file html prodotto.
Come si fa, se si può?, a recuperare quei valori immessi
precedentemente nella finestra di dialogo . C'è un
modo per recuperare il valore che suppongo sia memorizzato da qualche
parte fino a che non chiudo il database?

parte fino a che non chiudo il database?
In Access, i valori in una form (non associata) vengono mantenuti fino alla chiusura della form stessa, non fino alla chiusura del db. Se devi recuperarli, lo devi fare mentre la form è caricata (magari invisibile, ma DEVE essere aperta). A quel punto puoi riferirti a tali valori semplicemtnte con Forms!TuaForm!TuoControllo.value. Oppure memorizzi il tutto in una tabella di appoggio. A quel punto usi i recordset
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it


Innanzitutto vorrei ringraziarti per la spiegazione chiara. Grazie
anche per l'idea della tabella di appoggio.
Se la finestra di dialogo lanciata dalla query per richiedere i
parametri si chiamasse >[Scadenza] allora coniugherei come: Forms!
Scadenza!.....e poi ? TuoControllo.value

 ha scritto nel messaggio 
news:b4ba36e2-a982-4ac2...@e35g2000yqc.googlegroups.com...




-----------------------
Se il dato richiesto nella query deve essere mantenuto in memoria e solo per 
la sessione corrente dell'applicativo, puoi usare una variabile globale.
Se invece ti serve anche dopo che hai chiuso il db devi usare una tabella o 
un file di testo esterno (ipotesi troppo complicata).
Nel primo caso realizzi una variabile globale, imposti una funzione che 
chiede il dato e una funzione che lo memorizza. Per esempio così:
In un modulo pubblico:
Option Compare Database
Option Explicit
Global MioParametro As Date
Public Function ImpostaParametro() As Date  '(o as Long se numerico)
MioParametro = InputBox("Immetti un valore da ricercare nel formato 
gg/mm/aaaa.", "Valore scadenza", Format(Date, "dd/mm/yyyy"))
If IsDate(MioParametro) Then
ImpostaParametro = MioParametro
Else
ImpostaParametro = ""
End If
End Function
A questo punto nella query al posto di [Scadenza] metterai
Like ImpostaParametro()
Alla successiva esecuzione della query un inputbox chiede di immettere una 
data nel formato gg/mm/aaaa e propone la data odierna; l'utente immette una 
data valida e la query restituisce solo i valori con quella data.
Si pone il problema di memorizzare il dato...che in effetti è già 
memorizzato perchè la funzione oltre a chiedere il valore memorizza il 
valore stesso nella variabile globale MioParametro...dunque è sufficiente 
creare una nuova funzione che recuopera il valore:
Public function DimmiParametro () as Date
DimmiParametro  = MioParametro
End function
Ora da qualsiasi parte del db richiami la funzione DimmiParametro otterrai 
il valore della variabile globale. Se chiudi il db perdi la memorizzazione 
della variabile.
Il secondo metodo, molto più stabile nel tempo, è quello di usare una 
tabella di appoggio con un solo campo e dello stesso tipo di dati che ti 
servono.
In questo caso la funzione oltre a chiedere il valore ne memorizza il 
contenuto nella tabella con un semplice ciclo sul recordset. Tutte le volte 
che ti serve il valore anzichè leggerlo dalla variabile lo leggi dalla 
tabella che potrai anche svuotare o usare per la prossima apertura del db.
Ciao, Carlo 

 ha scritto nel messaggionews:b4ba36e2-a982-4ac2...@e35g2000yqc.googlegroups.com...

Carlo,
funziona!!!!!!!!!!!!!!! Ti ringrazio perchè mi hai aperto un mondo
nuovo!!!!!!!!!E poi è la soluzione estremamente semplice che andavo
cercando!!!!!!!!!

 ha scritto
cut
Carlo,
funziona!!!!!!!!!!!!!!! Ti ringrazio perchč mi hai aperto un mondo
nuovo!!!!!!!!!E poi č la soluzione estremamente semplice che andavo
cercando!!!!!!!!!
Grazie a te per il feedback.
Ciao, Carlo