Newsgroup: it.comp.appl.access
Titolo: query per piu maschere

ciao,
ho una query sempre uguale che però deve mettere in esecuzione su più
maschere (non contemporaneamente)
ho maschera1
e maschera2
per andare a prendere i dati della query nella casella combinata, che
ha lo stesso nome devo fare 2 query con [forms]![maschera1]!
[casellacombinata1]
[forms]![maschera2]![casellacombinata1]
è possibile fare un unica query nella quale viene detto
maschera attiva![casellacombinata1] di modo che non debba fare tante
query uguali e solo con un nome maschera diverso?
grazie
Francesco

 ...

Di solito si usa VBA, cioè una funzione che controlla quale maschera
è aperta e poi restituisce il valore per il criterio. In alternativa puoi
anche provare questa espressione come criterio (in 1 righa):
Eval("Forms!" & Choose(SysCmd(10;2;"maschera1")+1;"maschera2";
"maschera1") & "!casellacombinata1")
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 - Mostra testo citato
con VBA ho salvato il nome della maschera,
penso che sia corretto fare così
Dim TEST As Form
Set TEST = Screen.ActiveForm
adesso però come faccio a dire alla query di andare a ricercare su
test!casellacombinata ??
quando mi apre la nuova maschera se anche gli dico di caricare i dati
da test![casellacombinata1] mi dice impossibile trovare test
come faccio??

 come faccio??
Come già scritto una funzione restituisce il criterio, p.e.
Function fctCriterio() As Long
If CurrentProject.AllForms("maschera1").IsLoaded Then
    fctCriterio = Forms!maschera1!casellacombinata1
ElseIf CurrentProject.AllForms("maschera2").IsLoaded Then
    fctCriterio = Forms!maschera2!casellacombinata1
End If
End Function
Poi nella query come criterio basta: fctCriterio()
Non hai scritto il tipo del campo col criterio. L'esempio
è per Long. Per un tipo diverso devi cambiare il tipo
nella dicchiarazione della funzione.


 - Mostra testo citato
MA XKE' sono così ignorante in materia,
ho creato il codice, ho messo come routine evento su corrente e ho
fatto così
Private Sub Form_Current()
Function fctCriterio() As Long
If CurrentProject.AllForms("MARE COMPLETI").IsLoaded Then
    fctCriterio = Forms![MARE COMPLETI]!CasellaCombinata16
ElseIf CurrentProject.AllForms("MARE GROUPAGES").IsLoaded Then
    fctCriterio = Forms![MARE GROUPAGES]!CasellaCombinata16
ElseIf CurrentProject.AllForms("CAMION COMPLETI").IsLoaded Then
    fctCriterio = Forms![CAMION COMPLETI]!CasellaCombinata16
ElseIf CurrentProject.AllForms("CAMION GROUPAGES").IsLoaded Then
    fctCriterio = Forms![CAMION GROUPAGES]!CasellaCombinata16
End If
End Function
End Sub
poi nella query sql, che dovrebbe eseguire appena dopo se ho capito
bene gli ho detto di fare questo
SELECT [FORNITORE].[FORNITORE], [FORNITORE].[EMAIL], [FORNITORE].
[CONTATTO1], [FORNITORE].[FAX], [FORNITORE].[NOTE], [FORNITORE].[TEL],
[SETTORE].[fornitore]
FROM SETTORE INNER JOIN FORNITORE ON [SETTORE].[fornitore]=[FORNITORE].
[FORNITORE];
WHERE ((([SETTORE].[fornitore])=fctCriterio()));
quando faccio aprire la maschera, mi dice che la funzione non è
definita.. precisamente funzione"fctcriterio" non definita
nell'espressione
io non so più che fare.. ho provato un po, ma non ho  capito dove sta
l'errore

 l'errore
- Nella finestra database crea un nuovo modulo.
- Taglia la funzione, cioč tutto da
Function fctCriterio() As Long
a
End Function
e copia il testo nel nuovo modulo.
- Salva il modulo.
Questa funzione che si trova in un modulo standard puoi usare
in una query.


 - Mostra testo citato
grazie..
ok.. sono riuscito a far eseguire la funzione dalla query,
però mi da errore, me la manda in debug alla riga
    fctCriterio = [Forms]![MARE COMPLETI]![CasellaCombinata16]
sia che uso le parentesi che non le uso.
le funzione è sempre questa
Function fctCriterio() As Long
If CurrentProject.AllForms("MARE COMPLETI").IsLoaded Then
    fctCriterio = [Forms]![MARE COMPLETI]![CasellaCombinata16]
ElseIf CurrentProject.AllForms("MARE GROUPAGES").IsLoaded Then
    fctCriterio = Forms![MARE GROUPAGES]!CasellaCombinata16
ElseIf CurrentProject.AllForms("CAMION COMPLETI").IsLoaded Then
    fctCriterio = Forms![CAMION COMPLETI]!CasellaCombinata16
ElseIf CurrentProject.AllForms("CAMION GROUPAGES").IsLoaded Then
    fctCriterio = Forms![CAMION GROUPAGES]!CasellaCombinata16
End If
End Function
che errore c'è? devo dichiarare la funzione in altro modo?

 - Mostra testo citato
ho risolto!!
ho fatto la funzione come string e adesso funziona!!
grazie mille..
sei sempre gentilissimo!!