Newsgroup: it.comp.appl.access
Titolo: Passaggio parametro a query su pulsante di comando

Salve sono Fanciullo,
access97
Come è possibile ottenere lo stesso risultato di :
DoCmd.OpenForm "maschera1",, nomefiltro
con
DoCmd.OpenQuery "query1",, nomefiltro
detto diversamente per modificare dinamicamente i
criteri di filtro di una query bisogna usare DAO??
grazie
 

Fanciullo ha scritto:

Se quello che tu chiami filtro è un parametro presente nella tua form (quella dove c'è il bottone) non c'è bisogno che imposti nulla. Scrivi direttamente nella query nel QBE nel campo criterio [Forms]![TuaForm].[TuoCampo]
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it

 ha scritto nel messaggio 
news:gdsolo$snl$1...@news.nonsolonews.it...

Qualcosa di più articolato.
Mi spiego meglio con un esempio
                        QUERYMADRE (campo cognome nome città)
queryFiglia1            queryFiglia2            queryFiglia3 
queryFiglia4
filtro su nome            filtro su cognome    filtro su città 
altro filtro
Ecco, devo generare diverse query molto simili alla madre. Varia qualche
piccolo criterio di filtro.
Dovrei creare una 15ina di query che mi intasano il database e la mia 
memoria (mia).
C'è un modello per generare di volta in volta query simili dinamicamente
passando il filtro via codice???
Io ho pensato così: Creo una maschera  basata sulla query madre
in visualizzazione foglio dati
(quindi molto simile a una query come vista).
Su questa maschera passo un filtro con l'oggetto DoCmd che varia di volta in 
volta
a seconda del pulsante cliccato.
E corretto come approccio?
Grazie 


Aspetta aspetta......qua il discorso cambia...che query è? Query action? Selezione? a che ti serve? Il qbe di Access è fantastico ma ha i suoi limiti!!!! Ma non fai prima a scrivere 
dim StrSql as string
dim Dbs as database
set dbs=currentDb
strsql = "tuaquery WHERE val1=xxx AND (OR) val2=yyy....."
Dbs.execute strsql
???
Il codice è fatto apposta x gestire quello che il RAD di Access non riesce a fare........


 Grazie
Fermorestando che non capisco perchè non usi la proprietà FILTER di
Form e Report costruendo il Criterio... potresti pensare di fare una
cosa simile:
Crei una Stringa SQL nella query Generica chiamata qryGEN
"SELECT * FROM T1 WHERE %Campo% = %Valore%"
Quindi con :
sSQL=CurrentDb.QueryDefs("qryGEN").SQL
sSQL=Replace(sSQL,"%Campo%","NomeCampo")
sSQL=Replace(sSQL,"%Valore%","NuovoCriterioValoreFormattato")
CurrentDb.QueryDefs("qryGEN").SQL=sSQL
Quindi lo gestisci all'occorrenza.
Ciao
@Alex






dipende da cosa vuol fare Fanciullo....forse mi sbaglio ma io ho capito che
vuole fare una maschera di ricerca, tipo delle combo non associate del sito 
comune.
ha detto che dovrebbe mettere una 15 di pulsanti, a questo punto serve 
capire come e
quanti controlli vuole abilitare per la ricerca. uno alla volta? tutti ?
vedo che stai tornato in forma! ancora un pò contratto
ma  meno arrugginito del solito :<))
Buon WE
Daniele

 Grazie
Io ho risolto così:
in una maschera di ricerca ho una combo che in base alla seleziona
attiva e visualizza una textbox di ricerca e disattiva e nasconde le
altre correlate ad altre selezioni.
Sull'evento dopo aggiornamento della textbox scrivi il codice per
popolare la casella di riepilogo i campi da visualizzare e la
condizione where sul campo che hai correllazionato a quella textbox.
Man mano che inserisci i caratteri nella textbox la casella di
riepilogo mostra i record corrispondenti al filtro.
Ciao.
Giuseppe.

Ciao Daniele,
mi hai fatto un complimento ma a 50 anni secchi è difficile non avere 
qualcosa di contratto e
arrugginito. Comunque a chiedere sono abilissimo a trovare una soluzione un 
pò meno.
Allora io ho fatto un database con il quale gestiamo la didattica a scuola 
mia. (scuola alberghiera....se magna).
L'applicato di segreteria ha bisogno di vedere dei dati volta per volta 
filtrati quindi ho una
specie di pannello di controllo con varie voci descrittive e pulsante di 
comando.
PANNELLO VOCI con VOCI DESCRITTIVE + PULSANTE DI COMANDO
dietro ad ogni voce attualmente si apre una query diversa per filtro ma 
anche
per campi selezionati quindi ho una 15 di query che io vorrei però non avere 
per
non intasare tutto.
Proverò la tua soluzione
grazie 

 ha scritto nel messaggio 
news:234ffe97-6491-49d5...@t65g2000hsf.googlegroups.com...




Ciao
@Alex
ti ringrazio Alex proverò il tuo codice ma mi pare che
access97 non supporti replace vero???
alcune righe di ulteriore spiegazione


 ha scritto nel messaggio 
news:344f4fa0-f8a1-4456...@q9g2000hsb.googlegroups.com...


Ehh cavoli Giuseppe. Ma io non so fare tutta sta cosa che hai descritto tu.
Allego ulteriori righe di spiegazione del mio problema
Allora io ho fatto un database con il quale gestiamo la didattica a scuola 
mia. (scuola alberghiera....se magna).
L'applicato di segreteria ha bisogno di vedere dei dati volta per volta 
filtrati quindi ho una
specie di pannello di controllo con varie voci descrittive e pulsante di 
comando.
PANNELLO VOCI con VOCI DESCRITTIVE + PULSANTE DI COMANDO
dietro ad ogni voce attualmente si apre una query diversa per filtro ma 
anche
per campi selezionati quindi ho una 15 di query che io vorrei però non avere 
per
non intasare tutto.
grazie 

 ha scritto nel messaggio 
news:234ffe97-6491-49d5...@t65g2000hsf.googlegroups.com...




Ciao
@Alex
Ciaoo Alessandro ho provato così:
Case conCmdOpenQeeryDAO ' se l'opzione è 9
        Dim qdf As QueryDef
        Set qdf = CurrentDb().CreateQueryDef("TerzeAnnoCorrente")
       qdf.SQL = "SELECT tblISCRIZIONI.as, tblISCRIZIONI.idalunno, 
ANAGALUNNI.Cognome, ANAGALUNNI.Nome, tblISCRIZIONI.NOMECLASSE FROM 
tblISCRIZIONI INNER JOIN ANAGALUNNI ON tblISCRIZIONI.idalunno = 
ANAGALUNNI.idalunno WHERE 
tbliscrizioni.as
 = """ & 
[Forms]![frmintervalloanno]![csAS] & """ AND tblISCRIZIONI.NOMECLASSE Like 
'3*' AND tblISCRIZIONI.bocciato Is Null;"
       DoCmd.OpenQuery "terzeAnnoCorrente"
' e qua mi apre la query, ma  poi non so come cancellarla dal database
dove dovrei mettere
CurrentDb().QueryDefs.Delete "TerzeAnnoCorrente" ???
Grazie
 

 Proverò la tua soluzione
al momento il mio disco remoto è fuori servizio, altrimenti avrei postato un
screnshot per farti vedere la maschera di ricerca che si ottiene con la faq 
che
ti avevo segnalato.
Ciao
Daniele 

>

Io non ho capito.....
Tu hai una form che visualizza tutte le informazioni che ti servono giusto? E l'utente ha bisogno di visualizzare dei particolari di tali informazioni filtrando su un determinato campo un determinato valore giusto fin qui?
Se la situazione fosse questa, allora io farei così: utilizzi 1 bottone per aprire una form di ricerca che contiene 2 combo: la prima la imposti su elenco campi della tabella che stai visualizzano (così puoi scegliere in quale campo vuoi cercare). La seconda la riempi DOPO aver scelto un valore della prima con TUTTI i valori del campo scelto, in questa maniera: sull'evento DOPO AGGIORNAMENTO della combo1 scrivi 
StrSql="SELECT " & me.combo1.value & " FROM TuaTabella GROUP BY " & me.combo1.value & ";" 
me.combo2.recordsource = strsql
a questo punto l'utente sceglie il valore che vuole e con un altro pulsante costruisci la stringa di ricerca in questo modo :
StrSql="SELECT * FROM TuaTabella where " & me.combo1.value & "=" & me.combo2.value & ";"
imponi alla tua form la nuova origine dati 
FORM!TuaForm.recordsource = strsql
FORM!TuaForm.requery 
e chiudi la maschera di ricerca. Ora hai i tuoi dati 'filtrati'. Metti un altro pulsante per riportare tutto alla situazione iniziale e hai finito. 


 ha scritto nel messaggio 
news:ge1h1g$9ok$1...@news.nonsolonews.it...

Ciao, mi pare una idea buona. Ci provo e poi ti dico
grazie 

 grazie 
Lasciare 200 righe di post per dirsi ciao non mi sembra informaticamente 
prestazionale.
--
ac

 ha scritto nel messaggio 
news:9n3Nk.2738$8%.1236@tornado.fastwebnet.it...

concordo e aggiungo: 
http://wiki.news.nic.it/QuotarBene
Ciao
Daniele 

 ha scritto nel messaggio 
news:9n3Nk.2738$8%.1236@tornado.fastwebnet.it...

Non ci avevo fatto caso, pensavo che usare [cut] 200 righe circa
cancellasse la storia......
Paletti paletti informatici.
E chi deve accettarli? chi ha bisogno ovviamente.
Ciao 

>> messaggionews:gdsolo$snl$1...@news.nonsolonews . it ...
[cut] 200 righe
volevo renderti noto che ho risolto così
Case Is = 7
            Dim qdf4 As QueryDef
            Set qdf4 = CurrentDb().QueryDefs("qryDINAMICA")
            qdf4.SQL = "SELECT  idalunno, Cognome, Nome, NOMECLASSE, DATART, 
STATOALUNNO
             FROM qryISCRIZIONI  where  STATOALUNNO = 'i' ;"
            DoCmd.OpenQuery "qryDINAMICA"
            Case Is = 8
            Dim qdf5 As QueryDef
            Set qdf5 = CurrentDb().QueryDefs("qryDINAMICA")
            qdf5.SQL = "SELECT idalunno, Cognome, Nome, Sesso, NOMECLASSE, 
LUOGONASC, datanasc, cittadinanza
            FROM qryISCRIZIONI WHERE not cittadinanza Like 'ital*' ;"
            DoCmd.OpenQuery "qryDINAMICA"
            Case Is = 9
            Dim qdf9 As QueryDef
            Set qdf9 = CurrentDb().QueryDefs("qryDINAMICA")
            qdf9.SQL = "SELECT idalunno, Cognome, Nome,  NOMECLASSE, 
bocciato
            FROM qryISCRIZIONI WHERE nomeclasse Like ""5*"" and bocciato is 
null order by nomeclasse ;"
            DoCmd.OpenQuery "qryDINAMICA"
            .........ECCETERA
Ogni Case è agganciato a un pulsante di comando della maschera.
Quello che ho scoperto e che non sapevo è che la query madre può essere 
variata non solo nei criteri ma anche nel
numero dei campi. Quindi ho raggiunto il mio obiettivo:
avere una sola query fisica nel database.
Ciao Roberto.....credo


Un po' contorto ma l'importante č che funzioni!!!!!! A presto
