PDA

View Full Version : [MS Access'03] Selezioni in cascata in caselle combinate


82screamy
06-04-2009, 18:17
Salve ragazzi,
ho un DB composto da un'unica tabella, su cui devo effettuare dei filtraggi in cascata in base a tre campi diversi: cioè innanzitutto filtro la tabella in base al primo campo, poi il risultato in base al secondo ed infine in base al terzo. Le selezioni devono essere fatte scegliendo il valore desiderato dal relativo menu a tendina. E' possibile fare questa stupidata solo tramite maschere?
Non ho ben capito se servono o meno le query o se basta solo specificare la condizione WHERE di apertura di una maschera: stavo pensando di fare 3 maschere diverse, in cui la prima apre la seconda in base al valore selezionato, ma non riesco a capire come; nelle proprietà della maschera ho trovato solo l'opzione "Su clic" per selezionare l'apertura di un'altra maschera tramite macro, ma è generica, non in base al valore che ho scelto nella maschera precedente.
Consigli?

Grazie in anticipo, bye! :D

MarcoGG
07-04-2009, 08:38
Credo sia più o meno l'argomento già trattato in questa discussione :

http://www.hwupgrade.it/forum/showthread.php?t=1834250

Vedi in particolare il mio intervento al post #4... ;)

82screamy
07-04-2009, 19:47
Innanzitutto grazie mille per l'interessamento :)
Allora... dato che non ho molta dimestichezza con la sintassi del VB, non capisco a cosa si riferisca Form_M1 in:

Form_M1.RecordSource = strSql e Form_M1.Requery

Se non è il nome del pulsante "Imposta filtro" dell'utente cui hai risposto nell'altro thread (ho provato), a cosa si riferisce?
Ehm... e poi, che tipo di pulsante occorre selezionare? Io ho optato per "Spostamento di record" -> "Trova record": è corretto? Vorrei in pratica visualizzare in una casella di riepilogo un valore in base ai 3 precedenti.
Tra l'altro, i 3 campi di selezione (Campo1, Campo2 e Campo3 dell'altro utente) vorrei che si filtrassero man mano: cioè, scelgo dalla combobox un valore nel campo1, quindi nel campo2 scelgo un valore tra quelli disponibili dopo il filtraggio in base al campo precedente e così via...
Puoi aiutarmi? Parto praticamente da zero e impararmi tutto il VB mi porterebbe parecchio tempo... :D

MarcoGG
08-04-2009, 13:26
Tra l'altro, i 3 campi di selezione (Campo1, Campo2 e Campo3 dell'altro utente) vorrei che si filtrassero man mano: cioè, scelgo dalla combobox un valore nel campo1, quindi nel campo2 scelgo un valore tra quelli disponibili dopo il filtraggio in base al campo precedente e così via...


Ah ok. Quindi non è la stessa situazione di quel Thread.
E' molto più semplice.

Una cosa del genere :

1. Carico la prima Combo ( campo1 ) :
Dim strSql As String
strSql = "SELECT Campo1 FROM T_nomeTabella"
cmb_campo1.LimitToList = True
cmb_campo1.RowSourceType = "Table/Query"
cmb_campo1.RowSource = strSql
cmb_campo1.SetFocus
cmb_campo1 = cmb_campo1.Column(0, 0)

2. Carico la seconda Combo ( campo2 ) sul Change della prima :
Private Sub cmb_campo1_Change()

Dim campo1 As String
cmb_campo1.SetFocus
campo1 = cmb_campo1.Text
Dim strSql As String
strSql = "SELECT Campo2 FROM T_nomeTabella WHERE Campo1=" & campo1
cmb_campo2.LimitToList = True
cmb_campo2.RowSourceType = "Table/Query"
cmb_campo2.RowSource = strSql
cmb_campo2.SetFocus
cmb_campo2 = cmb_campo2.Column(0, 0)

End Sub

3. E così via, fino alla Combo N-esima... ;)