Casella combinata Access2003

mercoledì 09 gennaio 2008 - 14.19

salinis Profilo | Junior Member

Come faccio a definire nella casella combinata il filtro per tutta la maschera. Quando seleziono un numero nella casella combinata,la stessa mi deve filtrare solo i record che hanno associato quel numero.


Come posso fare

alpanix Profilo | Junior Member

>Come faccio a definire nella casella combinata il filtro per
>tutta la maschera. Quando seleziono un numero nella casella combinata,la
>stessa mi deve filtrare solo i record che hanno associato quel
>numero.

puoi sfruttare le proprietà RecordSource della maschera e ControlSource dei controlli


ciao


AlPanix

salinis Profilo | Junior Member

Scusa praticamente come dovrei fare a definire come proprietà della maschera recordsource?


Grazie

alpanix Profilo | Junior Member

>Scusa praticamente come dovrei fare a definire come proprietà
>della maschera recordsource?

sulla maschera la proprietà "Origine Record" deve essere nulla, in visualizzazione struttura
nulla deve essere anche "Origine Controllo" di ogni controllo presente sulla maschera
tramite la ComboBox, che abbia come "Origine Riga" il campo che ti serve per filtrare i record visualizzabili, selezioni uno dei valori che ti interessano
nell'evento Click della ComboBox dovrai scrivere il codice che modifica "Origine Record" della maschera e "Origine Controllo" di tutti gli altri controlli
ci metti un Requery della maschera e così vedrai il numero dei records navigabili cambiare in base a quanti ce ne sono che soddisfano la tua condizione

ricorda che per ogni controllo "Origine Controllo" deve essere sempre nulla quando "Origine Record" della maschera è nulla, altrimenti restituisce il valore d'errore "#Nome?"

ora, io non so quanti controlli hai sulla maschera, ma questo tipo di soluzione può andar bene per maschere con pochi controlli (al massimo 4 o 5) poiché per cambiare "Origine Controllo" ad ogni controllo devi scrivere almeno un'istruzione
con più controlli risulterebbe un po' più caotico
in questo caso ti consiglierei di mettere la tua maschera su un'altra maschera come subform e filtrarla tramite il valore di una ComboBox che dev'essere messa sulla maschera principale

il risultato è il medesimo, ma dal lato della programmazione è molto più veloce



>Grazie

prego


AlPanix

alpanix Profilo | Junior Member

poniamo che tu abbia una tabella "tuaTabella" con i campi "Id" e "Descrizione" senza chiave primaria
poniamo che tu abbia una maschera "tuaMaschera" con due caselle di testo "Testo1" e "Testo2", più una casella combinata "CasellaCombinata1", i cui valori sono tutti i valori "Id" della tabella tuaTabella
per l'evento CasellaCombinata1_Click() dovrà essere eseguito il seguente codice:


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


come vedi le proprietà dei controlli e della maschera sono vuoti se non è stato selezionato alcun valore nella ComboBox


AlPanix

salinis Profilo | Junior Member

Nella maschera ho molte caselle di testo e quindi mi incasinerei se devo integrare numerosi controlli. Non ho capito bene la questione di inserire nella maschera una subform come maschera secondaria. Praticamente cosa dovrei fare?

Grazie 1000.

alpanix Profilo | Junior Member

>Nella maschera ho molte caselle di testo e quindi mi incasinerei
>se devo integrare numerosi controlli. Non ho capito bene la questione
>di inserire nella maschera una subform come maschera secondaria.
>Praticamente cosa dovrei fare?

praticamente devi disegnare una maschera nuova e utilizzarla come maschera principale
sopra ci metterai una casella combinata in cui elencare i valori che vuoi utilizzare come filtro
oltre a questa casella combinata ci metterai anche un controllo "subform" nel quale dovrai inserire la tua vecchia maschera e legarla alla principale tramite l'eguaglianza del valore della nuova casella combinata con il campo relativo sulla vecchia maschera (questa la dovrai settare nelle proprietà "Collega campi master" e "Collega campi secondari" sul controllo della subform

permetti una domanda, però
la tua maschera ha come origine dati una tabella?
se sì puoi fare moooooooolto più velocemente utilizzando le proprietà "Filter" e "FilterOn"
praticamente, se sulla maschera attuale hai la combo con i valori che devono filtrare i records visualizzabili, all'evento Click della combo dovrai inserire il seguente codice:

[...] Me.Filter = "[Campo] = " & CasellaCombinata If Me.FilterOn = True Then Me.FilterOn = False End If Me.FilterOn = True Me.Requery [...]

in questo caso risolvi tutto in un secondo
se però la tua maschera non ha origine dati, non puoi farlo



>Grazie 1000.

prego
AlPanix
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5