Newsgroup: it.comp.appl.access
Titolo: caselle combinate e di riepilogo...

ciao a tutti,
volevo sapere se è possibile fare quanto segue:
ho una tabella di circa 8000 record relativi ad articoli di magazzino
tra i vari campi ce ne sono due in particolare: categoria e sottocategoria,
che hanno valori duplicati e indicano la tipologia del prodotto.
vorrei creare una maschera che deve contenere una casella di riepilogo e una
casella combinata che devono funzionare nel seguente modo:
nella casella di riepilogo ci devono essere le categorie, cliccando su una
di queste, nella casella combinata devono apparirmi le sottocategorie
relative alla scelta fatta, infine cliccando su una sottocategoria, la
maschera deve visualizzarmi gli articoli relativi alla scelta fatta
(naturalmente i valori devono essere raggruppati, visto che costruendo una
casella di riepilogo o combinata, le cat o sottocat. vengono visualizzate
per tante volte quante ne sono presenti nella tabella).
in passato ho costruito un db simile, solo che le tabelle categoria e
sottocategoria erano collegate alla tabella articoli, mentre adesso avrei
bisogno che il tutto ruotasse su un'unica tabella senza quindi sottotabelle.
ho tentato a farlo da solo, ma il risultato è stato disastroso e non mi sono
avvicinato per niente alla soluzione.
sperando in un vostro aiuto, vi ringrazio anticipatamente...
Nicola

 sottotabelle.
[...]
    Consulta la guida a proposito di:
        Proprietà UniqueValues (Valori univoci)
e, gia' che ci sei, leggi anche:
        Proprietà UniqueRecords (Record univoci)
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

 ha scritto nel messaggio
news:FSkg9.6586$my3....@twister2.libero.it...

Se la tua unica tabella si chiama Prodotti ed ha una struttura simile a
questa:
ID                      Contatore e chiave primaria
Categoria           Numerico
Sottocategoria    Numerico
ecc. ecc.
Se la maschera si chiama Maschera1.
Se la casella di riepilogo di chiama Elenco ed ha una sola colonna.
Se la casella combinata si chiama MiaCombo ed ha 2 colonne di cui visibile
solo la seconda.
Fai in modo che Elenco abbia come origine riga questo codice SQL:
SELECT DISTINCT Prodotti.Categoria
FROM Prodotti
ORDER BY Prodotti.Categoria;
Fai poi in modo che MiaCombo abbia come origine riga questo codice SQL:
SELECT DISTINCT Prodotti.Categoria, Prodotti.Sottocategoria
FROM Prodotti
WHERE (((Prodotti.Categoria)=[Forms]![Maschera1]![Elenco]))
ORDER BY Prodotti.Categoria, Prodotti.Sottocategoria;
Naturalmente a fronte dell'evento "Dopo aggiornamento" di Elenco genererai
il seguente codice VBA:
Me!MiaCombo.Requery
Per il resto procedi come se avessi operato con una tabella prodotti ed
altre due sottotabelle.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:pHng9.7469$my3.1...@twister2.libero.it...

eccomi ancora qua con un problema relativo alla risposta che mi hai dato e
sono certo che adesso dirai: "e te pareva!!!"
allora, ho optato per l'uso di 2 caselle combinate, ho fatto quello che mi
hai detto e tutto va alla perfezione, solo che nel passaggio successivo mi
sono impantanato.
in pratica, nel vecchio db, per collegare la casella combinata alla maschera
ed effettuare il filtro, utilizzavo il seguente codice adattato ai tuoi
consigli:
Private Sub MiaCombo_Click()
    Dim Criteria As String
    Criteria = "IDSottCat=" & Me!SottoCategorie.Column(0)
    Me.Filter = Criteria
    Me.FilterOn = True
End Sub
solo che in questo caso usavo gli ID nelle sottotabelle, mentre ora non li
uso + e quindi mi è venuto spontaneo adattare quel codice nel seguente modo:
Private Sub MiaCombo_Click()
    Dim Criteria As String
    Criteria = "Sottocategoria=" & Me!Miacombo.column(1)  (perchè la (0) è
la categoria secondo quello che mi hai suggerito)
    Me.Filter = Criteria
    Me.FilterOn = True
End Sub
quando però clicco su una sottocategoria, mi appare una finestra che mi
chiede un parametro e ha come titolo la categoria, se digito questa nel
criterio, mi svolge effettivamente la ricerca sulla sottocategoria scelta.
(ah dimenticavo... categoria e sottocategoria sono in formato testo)
come devo modificarla???
domanda 2:
per ogni categoria, c'è sempre una sottocategoria VARIO, se quindi scelgo
una categoria e di conseguenza la sottocategoria VARIO relativa, mi  vengono
visualizzati i record di tutte le sottocategorie VARIO?
in caso affermativo come si può correggere la suddetta routine affinchè
faccia riferimento ad entrambe le caselle combinate e quindi aggirare
l'inconveniente??
grazie 1000 in anticipo per la pazienza dimostrata...
Nicola

 Nicola
Innanzitutto mi sembra di capire che i campi Categoria e Sottocategoria sono
di tipo Testo e non Numerico come avevo pensato nella mia ipotetica
struttura di tabella.
Per risolvere ambedue i problemi che mi hai sottoposto, prova cosě:
Private Sub MiaCombo_AfterUpdate()
Dim Criteria As String
Criteria = "Categoria= " & Chr$(34) & _
Me!MiaCombo.Column(0) & _
Chr$(34) & " And Sottocategoria = " & _
Chr$(34) & Me!MiaCombo.Column(1) & Chr$(34)
Me.Filter = Criteria
Me.FilterOn = True
End Sub
--


 ha scritto nel messaggio
news:SpHg9.11344$my3.2...@twister2.libero.it...

perfetto!! ora il tutto funziona a meraviglia, le ricerche per categoria
vengono effettuate alla perfezione, ma ho notato che adesso, alcune vecchie
funzioni non possono essere utilizzate, ti spiego meglio.
nella mia precedente maschera, dove le categorie le scrivevo da tastiera,
avevo altri campi di ricerca, tra i quali:
1) cerca per codice o parte del codice
2) cerca per descrizione
3) cerca per fascia di prezzo
4) cerca per categoria
il tutto tramite caselle di testo non associate.
in particolare le prime 3 devono assolutamente funzionare considerando tutti
gli articoli, quindi le categorie non vengono considerate. per far questo,
prima mi bastava impostare categoria e sottocategoria a NULL e il tutto
filava liscio....
io ho provato quanto segue:
ho creato la casella di testo CercaCodice
e sull'evento DOPO AGGIORNAMENTO mi č venuto cosě ad intuito il seguente
codice
me.filteron=false
me.requery
nella query da cui ha origine la maschera, nei criteri del campo codice ci
ho messo:
like "*" & [forms].[Maschera1].[CercaCodice] & "*"
il problema č che non funziona...
la domanda quindi č:
nell'attuale caso (con le caselle di riepilogo), come faccio a specificare
che devo utilizzare tutte le categorie, annullando quindi le selezioni su
categoria e sottocategoria?
le ho provate tutte (almeno quelle che mi parevano giuste) ma il risultato č
stato deludente..
in attesa di risposta ti ringrazio infinitamente del grande aiuto che mi hai
dato fin'ora e anche per i futuri...
Nicola

 Nicola
Comunque ti sconsiglio di filtrare una maschera in maniera mista: può sempre
sfuggire qualcosa che come vedi fa diventare matti, oppure, per chi non ha
sottomano direttamente il database, non sempre è possibile immaginare il
malfunzionamento.
Pertanto o filtri la maschera agendo sulla sua proprietà Filter (gestendo in
maniera dinamica la variabile Criteria), oppure metti come origine record
della maschera una query di selezione parametrizzata da controlli non
associati contenuti nella maschera stessa.
Visto come stanno le cose, allo stato dell'arte conviene optare per la
seconda soluzione (quella della query di selezione), così non dovrai
cambiare i primi tre tipi di filtraggio.
Fermo restando la struttura dei controlli Elenco e MiaCombo, che restano
quelli concordati nei messaggi precedenti, in Maschera1 inserisci due
caselle di testo non associate e non visibili: chiamale rispettivamente
CercaCategoria e CercaSottocategoria.
A fronte dell'evento "Su clic" di Elenco genera il seguente codice VBA:
Private Sub Elenco_Click()
Me!MiaCombo.Requery
End Sub
A fronte dell'evento "Dopo aggiornamento" di MiaCombo genera il seguente
codice VBA:
Private Sub MiaCombo_AfterUpdate()
Me!CercaCategoria = Me!MiaCombo.Column(0)
Me!CercaSottocategoria = Me!MiaCombo.Column(1)
Me.Requery
End Sub
A fronte dell'evento "Dopo aggiornamento" di CercaCodice genera il seguente
codice VBA:
Private Sub CercaCodice_AfterUpdate()
Me!CercaCategoria = Null
Me!CercaSottocategoria = Null
Me.Requery
End Sub
Genererai la stessa routine anche a fronte degll'evento "Dopo aggiornamento"
dei controllo CercaDescrizione e CercaFasciaDiPrezzo (o come li hai
chiamati).
Nella query di selezione, relativamente al campo Categoria, inserisci i
seguenti criteri di selezione:
like "*" & [forms].[Maschera1].[CercaCategoria] & "*"
Nella query di selezione, relativamente al campo Sottocategoria, inserisci i
seguenti criteri di selezione:
like "*" & [forms].[Maschera1].[CercaSottocategoria] & "*"
Mi auguro, come in tutte le telenovele che si rispettino, che tutto finisca
a "tarallucci e vino". :-))



lo so che mi sono dilungato tanto, ma l'ho ritenuto necessario in quanto le
precedenti colte che ho aperto un 3d sono stato sintetico e nel 99% dei casi
la telenovela era con 3000 puntate molto corte. Siccome questo è forse il 3d
che ho aperto a cui forse tengo di + ho cercato di essere il + chiaro
possibile onde evitare la lettura diretta delle puntate precedenti...
Cercherò cmq di minimizzare nei prossimi 3d...
grazie tante, ora vado a provare e ti faccio sapere...
Nicola

 Nicola


 ha scritto nel messaggio
news:QT4h9.19756$my3.3...@twister2.libero.it...

non ti ho frainteso, č solo che trovata una soluzione, veniva fuori un'altro
problema (che non mi sarei aspettato).
Era inevitabile creare una soap simile...
cmq se ti trovi dalle mie parti, ti faccio assaggiare il mio buon vino e i
tarallucci locali... :-)
Nicola

 ha scritto nel messaggio
news:Y07h9.18030$eG6.3...@twister1.libero.it...

FUNZIONAAAAAAAAAAAAA!!!!!!!!!!!!!!!!!!!!!!
grazie!!!!