Newsgroup: it.comp.appl.access
Titolo: Selezione con casella combinata da Query da filtrare

Cercherò di spiegarmi nel modo più chiaro possibile. Il problema che dovrei
risolvere mi sembra una cavolata e credo di averlo già risolto più volte,
ciò nonostante oggi ho già perso troppo tempo per trovare una possibile
soluzione e non sono ancora giunto a nulla.... il brutto è che mi si
confondono solo le idee.
Ho tre tabelle
------ Società-------
IDSocieta
Nome
Note
---------------------
------ Prodotti -----
IDProdotto
IDSocieta
Nome
Note
---------------------
ed infine
----- Movimenti -----
IDMovimenti
Data
IDSocieta
IDProdotto
---------------------
Vorrei poter inserire una casella combinata per selezionare la Società nella
tabella Movimenti con la quale filtrare gli elementi Prodotto
es:
mettiamo che le società presenti siano FIAT e Alfa-Romeo.
I prodotti potrebbero essere:
Panda
Marea
164
155
ecc.
Nel momento che in Movimenti ho già scelto FIAT vorrei che comparissero solo
Panda e Marea.... non anche gli altri.
La mia idea era di realizzare una Query e quindi utilizzare questa
impostando opportunamente i criteri, ma .... non sono giunto a nulla. Come
faccio?
grazie dell'aiuto a tutti.
gallus
P.S. Avevo pensato alla possibilità di impostare dei campi master.... ma non
sono riuscito.

 ha scritto nel messaggio
news:JEh77.26333$NZ6.8...@news.infostrada.it...

Metti sull'evento dopo aggiornamento della C. Combinata:
Me.Filter = "[IDSocieta] = '" & ![CasellaCombinata0] & "'"
Me.FilterOn = True:
Ovviamente con i nomi giusti, la casella combinata deve avere 2 colonne, di
cui l'IDSocieta è quella del valore da memorizzare.
Ciao
Arturo

 Me.FilterOn = True:

 > Me.FilterOn = True:
Ehem...
Me č abbastanza opzionale
Piuttosto, se ID come penso č un valore numerico, gli apici non ci vogliono
assolutamente
Antonio

Scusate la mia ignoranza in merito, ma non ho capito il suggerimento.
Dove inserisco la stringa suggerita indipendentemente dalla sua stesura?
Di seguito riporto quanto postato nel precedente messaggio con alcuni
dettagli ulteriori che forse non sono trascurabili e che mi hanno fatto
fallire miseramente.
Ho tre tabelle
------ Societą-------
IDSocieta     (Contatore)
Nome
Note
---------------------
------ Prodotti -----
IDProdotto      (Contatore)
Codice
IDSocieta
Denominazione
ecc...
---------------------
IDSocieta in questa tabella č un campo numerico e nella scheda Ricerca
risulta gią impostata come Casella Combinata
Tipo di origine: Tabella/query
Origine riga: Societa
Colonna Associata: 1
Numero Colonne: 2
ecc...
ed infine
----- Movimenti -----
IDMovimenti    (contatore)
Data
IDCliente
IDSocieta
IDProdotto
ecc...
---------------------
IDSocieta in questa tabella č un campo numerico e nella scheda Ricerca
risulta gią impostata come Casella Combinata
Tipo di origine: Tabella/query
Origine riga: Societa
Colonna Associata: 1
Numero Colonne: 2
ecc...
IDProdotto in questa tabella č un campo numerico e nella scheda Ricerca
risulta gią impostata come Casella Combinata
Tipo di origine: Tabella/query
Origine riga: Prodotti
Colonna Associata: 1
Numero Colonne: 4
ecc...
Le maschere che ho creato sono il frutto di una semplice autocomposizione
Vorrei che nella casella combinata Prodotti, dopo aver selezionato,
utilizzando la casella combinata Societa, la Societą
compaiano solo i prodotti di tale societą.
es:
mettiamo che le societą presenti siano FIAT e Alfa-Romeo.
I prodotti potrebbero essere:
Panda
Marea
164
155
ecc.
Nel momento che in Movimenti ho gią scelto FIAT vorrei che comparissero solo
Panda e Marea mi comparissero nell'elenco della casella combinata
Prodotto.... non anche gli altri.
Il suggerimento che mi č stato dato non ho capito bene dove debba essere
inserito:
apro la maschera e imposto le proprietą della casella combinata Societą?
O cosa?
La casella combinata non essendo stata inserita, ma creata automaticamente
che nome ha? Mi sembra che Access la individui semplicemente come IDSocieta
e le altre idem.
Vi prego di aver pazienza e mi scuso del disturbo, ma risolto questo
problema ho concluso il tutto.
Grazie ancora
gallus

 Dove inserisco la stringa suggerita indipendentemente dalla sua stesura?
Nelle proprietą della casellacombinata all'evento dopo aggiornamento.

Allora ecco il codice (testato di persona e funziona)
Me.Filter = "[IDSocieta] = " & Me![CasellaCombinata12]
Me.FilterOn = True
Come fare?
1. apri la maschera prodotti in visualizzazione struttura
2. nelle proprieta della casella combinata devi cercare il nome, il nome lo
trovi cliccando su "altri" č il primo (nome elemento)
3. sostituisci il nome che hai trovato nel codice suddetto (ci sarą da
cambiare il numero finale di CasellaCombinata12)
4. sempre nelle proprietą della casella combinata seleziona "evento"
5. fai click nella riga bianca corrispondente a 'dopo aggiornamento',
compariranno a destra dei puntini ...
6. clicca sui puntini e scegli "codice"
7. incolla tra le due righe di codice che compaiono gią quelle due sopra,
alla fine avrai una cosa del genere:
Private Sub CasellaCombinata12_AfterUpdate()
Me.Filter = "[IDSocieta] = " & Me![CasellaCombinata12]
Me.FilterOn = True
End Sub
Nella tua al posto del 12 ci sarą un altro numero ...
8. č fatto, chiudi il codice, salva la maschera e ... prova
Ciao
Arturo


Arturo ti ringrazio moltissimo per la tua disponibilità, ma a me non
funziona.
Puoi darmi ancora una mano? Sono conscio del fatto che sono forse un incubo,
ma non ci sono riuscito.
Il filtraggio deve avvenire nella Maschera della tabella movimenti dopo che
in questa maschera ho impostato la voce IDSocieta e procedo alla selezione
dei Prodotti .... vorrei trovare solo la lista dei prodotti di quella
società.
Non ripeto, perchè penso che tu non abbia capito, ma perchè se a te funziona
e a me no.... forse mi sono spiegato male.
Grazie
gallus


Scusami credevo tu volessi filtrare i PRODOTTI, invece vuoi filtrare i
movimenti in base alla SOCIETA dunque (anche per questione di principio) mi
sono fatto una maschera MOVIMENTI credo come la tua e ho provato il filtro
della casella combinata e funziona.
Nella maschera MOVIMENTI (basata sulla tabella MOVIMENTI) hai una
casellacombinata che ha un nome, il nome sarà casellacombinata+un numero (il
nome lo trovi nelle proprietà della casella combinata stessa -> altro > nome
elemento), nelle proprietà sempre di quella casella combinata deve scegliere
EVENTO e poi cliccare sulla riga bianca a sinista di DOPO AGGIORNAMENTO, poi
sui PUNTINI che compaiono a sinistra. Nella finestra di dialogo che si apre
scegli GENERATORE DI CODICE. Si apre il codice VBA già con 2 righe scritte
del tipo:
Private Sub CasellaCombinata12_AfterUpdate()
End Sub
Tu al posto del 12 vedrai un altro numero, perchè la tua casella combinata
ha un altro nome ...
Tra quelle due righe incolli queste due:
Me.Filter = "[IDSocieta] = " & Me![CasellaCombinata12]
Me.FilterOn = True
Bada sempre di corregere il 12 con il numero della TUA casella combinata.
Alla fine hai:
Private Sub CasellaCombinata12_AfterUpdate()
Me.Filter = "[IDSocieta] = " & Me![CasellaCombinata12]
Me.FilterOn = True
End Sub
Chiudi e salva la scheda ... tutto è fatto.
Nota: fai attenzione che nella tue tabelle "societa" sia sempre scritto
senza accento in quanto
IDSocietà è diverso da IDSocieta.
Se non funzia ... piango.
Ciao
Arturo
P.S. La casella combinata la devi creare con l'autocomposizione basandola
sulla tabella Societa e includi i due campi "IDSocieta" e "Nome",
"IDSocieta" sarà nascosto da Access in quanto è la chiave primaria. Alla
fine della creazione devi scegliere "Memorizza il valore temporaneamente per
uso successivo". Hai fatto così?