Newsgroup: it.comp.appl.access
Titolo: Casella di Riepilogo

Salve.
ho un problema e non mi riesce venirne a capo:
ho una casella di riepilogo a selezione multipla da cui seleziono dei dati,
li memorizzo in una casella di testo la quale praticamente è il criterio di
selezione della mia query.
Il problema è che la query non mi restituisce assolutamente niente, anche se
nella mia casella di testo i dati arrivano correttamente. Di seguito invio
il codice.
Dim strWhere As String, varItem As Variant
If Me!Elenco0.ItemsSelected.Count = 0 Then Exit Sub
For Each varItem In Me!Elenco0.ItemsSelected
    strWhere = strWhere & Chr$(34) & Me!Elenco0.Column(0, varItem) &
Chr$(34) & " Or "
Next varItem
strWhere = Left$(strWhere, Len(strWhere) - 4)
Testo5 = strWhere
DoCmd.OpenQuery "Query1"
La Query1 nella riga criteri ha questo: [Forms]![Maschera1]![Testo5]
Vi prego aiutatemi.
Grazie
Andrea

 La Query1 nella riga criteri ha questo: [Forms]![Maschera1]![Testo5]
Cosí la query non capisce l'operatore (Or).
Non é possibile di inviare un operatore perché tutto l'espressione nel
campo Testo5 del criterio é interpretato come testo = un singolo string.
Debbi construire il statement SQL del query completamente con VBA.
--
HTH
Karl
*********
Scusate il mio malissimo Italiano. Faccio solo esercizi qui.
Access-FAQ (Tedesco): 
http://www.donkarl.com
APP: 
http://www.AccessProfiPool.com


Ha ragione Karl; così come hai fatto, Query1 seleziona i record per i quali
il campo, per il quale nei criteri hai scritto [Forms]![Maschera1]![Testo5],
ha un valore uguale al contenuto del controllo Testo5 di Maschera1
(praticamente nessuno). Come dice Karl devi crearti dinamicamente con VBA
tutta la query e non solo i suoi criteri di selezione.
Visto che il codice che hai postato lo hai estrapolato da un esempio di
"Guida all'uso Microsoft Access" di J. L. Viescas, sei anche conscio che
nell'esempio originale la variabile strWhere contiene un elenco di valori,
scanditi da una virgola, e viene usata per impostare il filtro di una
maschera tramite il predicato IN. Infatti dove tu hai scritto " Or ", lui
scrive "," .
E' sufficiente che vai avanti di qualche pagina nello stesso manuale e
troverai un capitolo intitolato "Fornire una query personalizzata in base a
una maschera". All'interno dell'esempio contenuto in questo capitolo trovi
come fare ciò che ti ha suggerito Karl: in alcune righe del codice trovi
come generare una query i cui criteri di selezione sono effettuati con il
predicato IN a fronte di una variabile stringa che contiene una serie di
valori scanditi da una virgola.
Se poi, per motivi tuoi, vuoi utilizzare una query parametrica di selezione,
allora:
1) Devi stabilire a priori quante sono al massimo le righe della casella di
riepilogo che puoi selezionare contemporaneamente (ammettiamo 5).
2) Devi dichiararti nell'intestazione della maschera tante caselle di testo
non associate non visibili quante sono le righe selezionabili della tua
casella di riepilogo (quindi 5).
3) Prima del ciclo For ... Next metti in tutte queste caselle di testo il
valore " " (spazio).
4) Per ogni passaggio del ciclo For... Next memorizza il contenuto della
colonna zero della casella di riepilogo in una casella di testo differente.
5) Nella riga "Criteri:" di Query1 scrivi
[Forms]![Maschera1]![NomePrimaCasellaDiTesto], nella prima riga "Oppure:" di
Query1 scrivi [Forms]![Maschera1]![NomeSecondaCasellaDiTesto], nella seconda
riga "Oppure:" di Query1 scrivi
[Forms]![Maschera1]![NomeTerzaCasellaDiTesto] e così via.
6) Ora puoi aprire con DoCmd Query1.
--
Roberto
---------------------------------------------
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/
---------------------------------------------

 wrote in message
