Newsgroup: it.comp.appl.access
Titolo: casella combinata e campi

Prima di tutto un saluto a tutti i partecipanti al ng, e poi la domanda:
in una mia tabella ho come campi i giorni della settimana. Come posso fare
affinché lunedì, martedì ... diventino le righe di una casella combinata
all'interno di una maschera che filtra i dati della tabella?
Spero di essere stato sufficientemente chiaro.
grazie e ciao
kismet

 ha scritto nel messaggio
news:9j1k4r$gt9$1...@lacerta.tiscalinet.it...

1) Creati una query basata sulla tua tabella e che ne contenga tutti i campi
che vorrai poi visualizzare nella maschera; chiama questa query Query1
2) In Query1, nella riga criteri relativa al campo che contiene i giorni
della settimana scrivi:
Like Nz([Forms]![Maschera1]![ComboGiorni]; "*")
3) Creati una maschera e chiamala Maschera1; fai in maniera che Maschera1
abbia una visualizzazione a Maschere continue e come origine record Query1.
4) Nell'intestazione (e non nel corpo) di Maschera1 inserisci una casella
combinata non associata alla quale darai il nome di ComboGiorni.
5) ComboGiorni deve avere una sola colonna, la proprietà Tipo orogine riga
impostata a Elenco valori e nella sua propietà Origine riga scrivi:
"Lunedì";"Martedì";"Mercoledi";"Giovedì";"Venerdì";"Sabato";"Domenica"
6) A fronte dell'evento "Dopo aggiornamento" della casella combinata
ComboGiorni genera la seguente riga di codice VBA:
Me.Requery
Ora apri Maschera1; nel corpo della maschera dovresti vedere tutti i record
contenuti nella tua tabella; seleziona dalla casella combinata un giorno
della settimana e nella maschera dovresti visualizzare solo i record che
hanno quel valore nel relativo campo. Per rivisualizzare tutti i record
cancella il valore contenuto nella casella combinata.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:9j1om8$lme$1...@stargate1.inet.it...

Ti ringrazio Roberto, come sempre sei il più celere ed il più esaustivo
nelle risposte. Tuttavia mi sono accorto di non essere stato molto preciso
nella formulazione della domanda e così ora cerco di rimediare. Dunque:
ho una tabella Orari costituita dai seguenti campi:
NomeCognome, Indirizzo, LunAM, LunPM, MarAM, MarPM, MerAM, MerPM, GioAM,
GioPM, VenAM, VenPM; in essa, chiaramente, sono riportati gli orari di
ricevimento per ciascun giorno, per ciascun indirizzo.
Il mio quesito è:
si può creare una maschera in cui siano riportati, ad esempio, i controlli
legati ai campi NomeCognome, Indirizzo, e un generico controllo Orario in
cui visualizzare l'ora di ricevimento in un particolare giorno della
settimana (o in un "semigiorno") filtrato da una casella combinata in cui
siano riportati i campi LunAM, LunPM,...??
spero di essere stato un po' più chiaro, grazie ancora e ciao
kismet


Perdonami, ma prima di andare avanti, penso che valga la pena discutere la
struttura di questa tua tabella. Mi sembrerebbe abbastanza atipica.
Quale è la sua chiave primaria?
E per un determinato NomeCognome, come differenzi gli orari delle visite di
LunAM della settimana in corso con le visite di LunAm delle settimane
seguenti o precedenti alla settimana in corso?
Forse è meglio che tu ci dica cosa vuoi fare con il tuo database, così da
discutere come organizzare le tabelle e solo dopo discutere come registrare
i dati e ricercare le informazioni delle visite.


 ha scritto nel messaggio
news:9j4fr2$505i$1...@stargate1.inet.it...

 Cercherò di essere ancora più chiaro.
Il mio lavoro consiste nel contattare dei clienti che mi ricevono ad orari
fissi in particolari giorni della settimana.
Mi sono perciò costruito una tabella (Orari, appunto) che mi riporta
l'orario di ricevimento di quel cliente, a quell'indirizzo, in quel giorno
della settimana.
Ad es. :
NomeCognome    Indirizzo                   LunAM         LunPM    MarAM
MarPM    MerAM    MerPM    GioAM    GioPM    VenAM    VenPM
Rossi Paolo        Via Lanzo 73, Milano    10.30 11.30
15.00 16.00
Verdi Luca           Via Locri 11, Roma
09.00 12.00
15.30 16.00
Significa che il sig. Rossi, che abita in via LAnzo 73 a Milano, mi riceve
tutti i lunedì dalle 1030 alle 1130 e tutti i giovedì dalle 1500 alle 1600,
che il sig Verdi lo fa il martedì dalle 9 alle 12 e il giovedì dalle 1530
alle 1630.
E questo per tutti i clienti del mio schedario, ognuno dei quali avrà un suo
orario di ricevimento in un particolare giorno, per tutto l'anno.
La Tbl ha una relazione con una tabella Clienti, dove sono inseriti tutti i
dati anagrafici, ed una chiave primaria che è semplicemente Idorari.
Ora, il mio obbiettivo è quello di filtrare la tabella in base al giorno
della settimana in modo da poter progettarmi un giro in funzione dell'orario
di ricevimento dei miei clienti.
Nel caso dell'esempio io so che il giovedì devo prima passare da rossi e poi
da verdi, perché Rossi comincia a ricevermi dalle 1500 e verdi solo dalle
1530.
spero di non aver incasinato più ancora di prima ;))))
ciao e ancora grazie
kismet

 ha scritto nel messaggio
news:9j4nam$gii$1...@lacerta.tiscalinet.it...

[CUT]

Al fine che tutto funzioni occorre che i campi della tua tabella Orari
abbiano i nomi che tu hai indicato e non altri nomi.
Creati una maschera (chiamala Maschera1) con visualizzazione a Maschere
continue e che abbia come Origine record la tabella Orari.
Nel corpo di Maschera1 inserisci due caselle di testo associate ai due campi
NomeCognome e Indirizzo della tabella Orari.
Nel corpo di Maschera1 inserisci anche una casella di testo non associata e
chiamala OrariVisite.
Nell'intestazione (bada bene intestazione e non corpo) di Maschera1
inserisci una casella combinata non associata e chiamala GiorniVisite. Tale
casella combinata deve avere 1 nella proprietà Numero colonne, devi
impostare Elenco valori per la sua proprietà Tipo origine riga e nella
proprietà Origine riga devi scrivere:
"LunAM";"LunPM";"MarAM";"MarPM";"MerAM";"MerPM";"GioAM";"GioPM";"VenAM";"Ven
PM"
Che di fatto è l'elenco dei campi della tabella Orari.
A fronte dell'evento "Dopo aggiornamento" della casella combinata
GiorniVisite genera il seguente codice VBA:
Private Sub GiorniVisite_AfterUpdate()
Me!OrarioVisite.ControlSource = Me!GiorniVisite
Dim StrCriteri As String
StrCriteri = "Not " & Me!GiorniVisite & " Is Null"
Me.Filter = StrCriteri
Me.FilterOn = True
End Sub
A questo punto apri Maschera1 e seleziona dalla casella combinata il
semigiorno della settimana: nel corpo della maschera dovresti vedere
l'elenco delle persone e gli orari relativi al semigiorno che hai
selezionato nella casella di testo.
Prova e facci sapere.



Scusami, volevo scrivere:
... l'elenco delle persone e gli orari relativi al semigiorno che hai
selezionato nella casella combinata.


 ha scritto nel messaggio
news:9j69lg$6132$1...@stargate1.inet.it...

Perfetto!!!!!!
Con qualche piccolo aggiustamento è proprio quello che stavo cercando ;)))
Adesso mi studierò per benino il codice che mi ha i scritto per capire come
utilizzarloin altri modi.
grazie mille
kismet

 ha scritto nel messaggio
news:9j697b$3tls$1...@stargate1.inet.it...

scusami se scoccio ancora, ma come posso fare per fare dei filtri successivi
sul recordset che ottengo in base al giorno. Cioè, ipotizziamo che nelle mia
tabella di origine io inserisca un altro campo che mi identifica i clienti
in base all'importanza (1,2,3...), io posso inserire nell'intestazione di
maschera1 un'altra casella combinata in cui sono selezionabili i valori
1,2,3... dove, se io non inserisco nulla non capita nulla, ma se seleziono
un dato mi filtra il recordset già filtrato con la prima casella combinata?
Intuitivamente mi verrebbe da usare la funzione Nz, ma poi come faccio ad
inserirla nel codice che mi hai suggerito tu????
ciao


Se il campo che nella tabella identifica l'importanza dei clienti si chiama
ImportanzaCliente.
Elimina il codice VBA che hai generato a fronte dell'evento "Dopo
aggiornamento" della casella combinata GiorniVisite.
Inserisci nell'intestazione di Maschera1 una seconda casella combinata non
associata e chiamala ScegliImportanza.
Tale casella combinata deve avere 1 nella proprietŕ Numero colonne, devi
impostare Elenco valori per la sua proprietŕ Tipo origine riga e nella
proprietŕ Origine riga devi scrivere:
1;2;3
Inserisci nell'intestazione di Maschera1 anche un pulsante di comando.
A fronte dell'evento "Su clic" del pulsante di comando genera il seguente
codice VBA:
Me!Orario.ControlSource = Me!GiorniVisite
Dim StrCriteri As String
StrCriteri = "ImportanzaCliente Like " & _
Nz(Me!ScegliImportanza, "'*'") _
& " And Not " & Me!GiorniVisite & " Is Null"
Me.Filter = StrCriteri
Me.FilterOn = True
Stai attento all'asterisco racchiuso tra apici e il tutto tra virgolette.
Quando aprirai Maschera1 dovrai comunque selezionare il semigiorno dalla
prima casella combinata; se non selezioni nulla dalla seconda casella
combinata e pigi il pulsante di comando, nel corpo della maschera vedrai
quello che vedi ora.
Se invece, prima di pigiare il pulsante di comando, selezioni un numero
dalla seconda casella combinata, nel corpo della maschera vedrai solo
l'elenco delle persone che ricevono in quel semigiorno e che che hanno quel
valore come ImportanzaCliente.
