Newsgroup: it.comp.appl.access
Titolo: Query-Filtro

Salve, ho questo problema con una query che funge da filtro
Ho la mia maschera M_TbAE_Presenze_Storico
in cui ho la sottomaschera SM_TbAE_Presenze_Storico
con visualizzazione in modalità maschere continue,
dove l'unico controllo (I DV) della sottomaschera
ha un pulsante che a fronte dell'evento click
attiva la maschera M_AE_Presenze_Modifica_B
che mi restituisce il recordset desiderato e prende origine
dalla query Q_AE_Presenze_Storico_B
Il campo IDV della query ha come criterio:
[Forms]![SM_TbAE_Presenze_Storico]![IDV]
che mi dovrebbe restituire la form M_AE_Presenze_Modifica_B
con l'identificativo IDV=IDV della SM_TbAE_Presenze_Storico che a sua volta,
come avevo precisato sopra è sottomaschera della form
M_TbAE_Presenze_Storico.
Arrivo al PROBLEMA
Mi esce una mascherina con scritto:
IMMISSIONE VALORE PARAMETRO
maschere!SM_TbAE_Presenze_Storico!IDV
Ho provato in vari modi ma non trovo la dritta.
COnfido in voi e grazie Napoleone

 ha scritto nel messaggio
news:erzUb.17983$U4.6...@twister1.libero.it...

Sostituisci al criterio il risultato di una funzione pubblica con lo stesso
tipo di dati e che prende il valore che hai usato nel criterio:
per esempio:
Public Function DimmiMioIDV() as long
DimmiMioIDV = [Forms]![SM_TbAE_Presenze_Storico]![IDV]
End Function
Ciao, Carlo

 ha scritto nel
messaggio news:AUGUb.195889$VW.79...@news3.tin.it...

Nel ringraziarti per la partecipazione, vorrei farti notare che
non sono molto esperto, mi sto autoformando, e quindi,
potresti spiegarmi meglio dove inserire la funzione publica?
A fronte di qualche evento? Inoltre,
se avessi la stessa esigenza, in un'altra maschera, posso
utilizzare la stessa funzione?
Ti ringrazio ancora, Napoleone


Vorrei precisare che in fase di prove, se apro direttamente, e solo la
sottomaschera,
la cosa funziona !!!
Saluti Napoleone

 ha scritto nel messaggio
news:erzUb.17983$U4.6...@twister1.libero.it...

Con "maschere!SM_TbAE_Presenze_Storico!IDV" non funziona, semmai con:
Forms!SM_TbAE_Presenze_Storico!IDV.
Quando Access è impegnato nel codice di una maschera (di un controllo) non
permette ad una query di accedere alla stessa maschera o sottomaschera.
Lo permette solo al codice perchè sta lavorando nello stesso ambiente VBA.
Dall'esterno non lo permette. Ecco perchè si ricorre ad una funzione per
ottenere quel valore.
Per sperimentare questo apri la tua maschera con le sottomaschere e poi
spostala senza chiuderla. Apri ora la query che aveva tra i criteri il
riferimento al controllo nella sottomaschera e vedrai che si apre senza
chiederti alcun parametro (correggi eventualmente maschere con Forms). Se
tenti invece di eseguire la query perchè da codice stai aprendo una maschera
che vi fà riferimento, ti chiederà il parametro, in pratica il valore che in
questa condizione non riesce più a leggere.
Ancora devo dire che per fare riferimento ad un controllo in una
sottomaschera devi digitare la sintassi completa:
[Forms]![FormsPrincipale]![NomeSottomaschera].Form!NomeControllo
La differenza tra funzione e sub sta nel fatto che la prima restituisce un
valore dello stesso tipo di quello dichiarato, la seconda non restituisce
nulla.
La funzione pubblica va inserita in un modulo pubblico cioè non in un modulo
di maschera o di report. Poi nel criterio della query, dove avevi scritto
maschere!SM_TbAE_Presenze_Storico!IDV ora scriverai il nome della funzione
seguito dalle due parentesi ()
Se ho capito tutto l'esempio precedente della funzione diventa:
Public Function DimmiMioIDV() as long
DimmiMioIDV =
[Forms]![NomeFormsPrincipale]![SM_TbAE_Presenze_Storico].Form![IDV]
End Function
Ciao, Carlo

CUT

Ti potrò rispondere solo stasera, grazie
Napoleone


Mi segnala errore di Run-Time 2465
Impossibile trovare il campo "SM_TbAE_Presenze_Storico" a cui si fa
riferimento nell'espressione.
Dove si sbaglia??
Saluti Napoleone

 ha scritto nel messaggio
news:%tSUb.18829$Mt6.6...@twister2.libero.it...

Probabilmente non si chiama così, controlla bene.
Se ancora non riesci potresti mandarmi una copia zippata del db e vedrò cosa
posso fare.
Ciao, Carlo