Newsgroup: it.comp.appl.access
Titolo: Query in una sottomaschera

Salve a tutti!! Ecco il mio ennesimo problema da sottoporvi
Ho creato una maschera che raccoglie i criteri per una query!!! Ho posto i
campi che raccolgono i criteri nell'intestazione della
maschera..........mentre voglio porre nel corpo della maschera una
sottomaschera che tragga origine per i suoi dati dalla query.
Qual'e' la prassi esatta da seguire? Io l'ho fatto ma nella sottomaschera si
visualizzano solo campi vuoti.........devo riccorrere a precise ruotine di
visual basic?
Spero abbiate capito........ciao!!!!


Dovresti crearti la query di selezione per la sottomaschera poi
impostarla alla sottomaschera come origine dati e chiamare il requery
sulla sottomaschera:
sub Campo1_AfterUpdate()
  dim SQL as string
  SQL = "SELECT ... FROM ... WHERE ..."
  Me![Nome sottomaschera].rowsource = SQL
  Me![Nome sottomaschera].requery
end sub
Nell'esempio quando modifichi un campo nella maschera qui chiamato Campo1
reimposta l'origine dati della sottomaschera secondo un criterio scelto da
te e poi lancia il requery affinchè la sottomaschera visualizzi i dati
filtrati.

 ha scritto nel messaggio news:ET_Z8.7042$s74.1...@twister1.libero.it...

Ciao,
il sistema più semplice per applicare i criteri che l'utente sceglie sui controlli nell'intestazione della maschera principale è
quello
di applicare un filtro alla sottomaschera anzichè modificarne l'origine dei dati, utilizzando la proprietà .Filter della
sottomaschera si ottiene il risultato.
Se i controlli che servono per selezionare un criterio di visualizzazione sono più di uno è conveniente scrivere una piccola routine
(da
richiamare ogni volta che uno dei controlli criterio viene modificato) che si prenda carico di modificare ed applicare il filtro
alla
sottomaschera.
Faccio un esempio:
ammettiamo di avere 3 controlli per selezionare il criterio di visualizzazione della sottomaschera
[SelezioneNome] [SelezioneCognome] [SelezioneEta]
la sottomaschera ha come origine dei dati una Tabella o Query con i campi
[Nome] [Cognome] [Eta] e altri
Ecco il codice della funzione ApplicaFiltroSottomaschera da definire nel modulo della maschera principale, come segue:
Public Function ApplicaFiltroSottomaschera()
    Dim Filtro As String
    ' La funzione "guarda" il contenuto di ogni controllo [Selezione...]
    ' e genera una stringa che sarà utilizzata come filtro da applicare alla sottomaschera
    ' Si suppone che il nome del controllo sottomaschera sia [Sottomaschera]
    if not isnull(me![SelezioneNome]) then
        Filtro="Nome='" & me![SelezioneNome] & "'"
    end if
    if not isnull(me![SelezioneCognome]) then
        if Filtro<>"" then filtro=Filtro & " And "
        filtro=filtro & "Cognome='" & me![SelezioneCognome] & "'"
    end if
    if not isnull(me![SelezioneEta]) then
        if Filtro<>"" then filtro=Filtro & " And "
        filtro=filtro & "Eta=" & me![SelezioneEta]
    end if
    if filtro<>"" then
        me![Sottomaschera].Form.Filter=Filtro
        me![Sottomaschera].Form.FilterOn=True
    else
        me![Sottomaschera].Form.FilterOn=False
        me![Sottomaschera].Form.Filter=""
    End if
End Function
ora sarà sufficiente richiamare la funzione ApplicaFiltroSottomaschera ogni volta che si verifica l'evento AfterUpdate dei controlli
[Selezione...]
e la [Sottomaschera] visualizzerà solo i records che rispondono alla combinazione dei valori contenuti nei controlli [Selezione...].
Spero di non aver ingarbugliato la situazione,
ciao,
Mat.