|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2005
Città: Roma
Messaggi: 10870
|
[ACCESS] Impostare filtro su una maschera da combobox
allora ho una maschera che visualizza una tabella ...vorrei che la tabella fosse filtrata con un campo=X (esempio: mostrami tutti i record che nel campo Sito hanno come valore HWU)...il valore tuttavia del filtro lo vorrei fare impostare da una combobox presente nella maschera stessa
in altre parole: ho la maschera con la tabella ho un campo X nella tabella che voglio usare come filtro ho creato sulla maschera un combobox del campo X che voglio usare come filtro in modo da avere l'elenco dei possibili valori di quel campo seleziono un valore nella combobox dico di visualizzare di nuovo la tabella nella maschera pero questa volta con il filtro sul campo X pari al valore messo nella combobox come posso fare per dire prenditi sto valore dalla combobox e usalo come filtro? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Semplicissimo.
Supponendo che tu abbia già la combo popolata e la maschera pronta, te la cavi con 2 righe di codice : Codice:
Private Sub cmb_sito_Change() Form_M1.RecordSource = "SELECT * FROM T_nometabella WHERE Sito='" & cmb_sito.Text & "'" Form_M1.Requery End Sub ![]() |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Mar 2005
Città: Roma
Messaggi: 10870
|
Quote:
![]() praticamente nella sezione filtro complesso volevo impostare prima tutti i combo box (combo1, 2 ,3) e poi con un pulsante imposta filtro (command1) avviare la query visualizzando il risultato direttamente sulla tabella nella maschera (Table)...poi con un altro pulsante azzerare la query se ce ne fosse bisogno (vabbe questo l'ho chiamato per distrazione imposta filtro di nuovo) nn riesco a capire il codice per il pulsante "imposta filtro" stavo provando seguiendo il tuo spunto in questo modo: Private Sub Filter_Imp_Click() Dim strNuovoRecord As String If Not IsNull(Combo1) And Combo1 <> "" Then ' FORNITORE è NUMERICO ATTENZIONE strNuovoRecord = "SELECT * FROM Table WHERE Campo1='" & Combo1.Value & "'" Me.RecordSource = strNuovoRecord Me.Requery End If End Sub ma mi dà errore...poi pensavo come faccio a dirgli di eseguire la query con la WHERE solo sui combo che hanno effettivamente un valore selezionato (dovrei dunque eseguire la query anche solo per il combo 1 oppure solo per il combo2 & 3 e cosi via) Ultima modifica di Micene.1 : 05-10-2008 alle 17:14. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
In questo caso le cose si fanno un po' più complicate, ma niente di difficile. Io risolverei la cosa condizionando il contenuto di 3 parametri che costituiscono la ricerca, e che poi andranno a "costruire" la SELECT definitiva.
In soldoni, questo codice per il pulsante "Applica Filtri" : Codice:
Dim C1 As Variant cmbCampo1.SetFocus If cmbCampo1.Text = "" Then C1 = "IS NOT NULL" Else C1 = "=" & cmbCampo1.Text End If Dim C2 As Variant cmbCampo2.SetFocus If cmbCampo2.Text = "" Then C2 = "IS NOT NULL" Else C2 = "=" & cmbCampo2.Text End If Dim C3 As Variant cmbCampo3.SetFocus If cmbCampo3.Text = "" Then C3 = "IS NOT NULL" Else C3 = "='" & cmbCampo3.Text & "'" End If Dim strSql As String strSql = "SELECT * FROM T_nometabella" & _ " WHERE Campo1 " & C1 & _ " AND Campo2 " & C2 & _ " AND Campo3 " & C3 Form_M1.RecordSource = strSql Form_M1.Requery Codice:
Form_M1.RecordSource = "SELECT * FROM T_nometabella" Form_M1.Requery ![]() |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Mar 2005
Città: Roma
Messaggi: 10870
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Mar 2005
Città: Roma
Messaggi: 10870
|
ah certo anch'io...il fatto è che questa questione l'ho posta anche in altri forum...nn ti dico come mi hanno risposto...praticamente volevano che mi studiassi mezzo VB ADO etc. quando bastava scrivere mezzo codice come hai fatto tu (anche perche se mi devo studiare mezzo manuale che posto fare nei forum dove cè gente che ne sa piu di me)
|
![]() |
![]() |
![]() |
#8 | |
Junior Member
Iscritto dal: Nov 2002
Messaggi: 11
|
Quote:
Buongiorno Ragazzi. Sono un neofita di Access e in questi giorni ho la necessità di realizzare un file MDB che contiene proprio la stessa funzione che avete evidenziato in questo post. Da neofita ( ho letto solo un breve libro su access 2003, ma tra la teoria dei libri e le necessità quotidiane c'è un abisso... ) faccio fatica a seguire la vostra discussione. Dove va inserito il codice? Associato a quale evento? ecc.. Un file MDB mi sarebbe molto utile per capirne il funzionamento . Riuscireste a mandarmene uno di esempio? Grazie. Luca
__________________
Intel Core I5 6500, H170M-ITX/DL, S-video Geforce GTX 970 , ssd 256gb |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
![]() Qui trovi il file di Access, lo stesso che ho creato come prova per rispondere a Micene.1 : http://www.filefactory.com/file/aghd...mbo_Filtro_mdb Infine una precisazione : questo metodo può essere valido, posto che si sappia esattamente come concatenare direttive Sql e valori. In genere è una pratica che non ti consiglio di seguire come regola. Il metodo più corretto in ogni caso è usare i parametri, come ad esempio qui ( Insert ) : http://www.hwupgrade.it/forum/showthread.php?t=1977950 ![]() |
|
![]() |
![]() |
![]() |
#10 | |
Junior Member
Iscritto dal: Nov 2002
Messaggi: 11
|
Quote:
Grazie per la precisa e puntuale risposta. Purtoppo da neofita si casca spesso in quei libricini "gialli" che millantano tutto il sapere facile e subito. Se hai giò qualche titolo di pubblicazione testata che mi consigli, te ne sarei grato. Per ora sono orinetato ad acquistare un libro Apogeo: Access 2007 Guida completa Uscita: Ottobre 2007 Pagine: 624 ISBN: 9788850326891 Apogeo Ti ringrazio molto per i files di esempio, appena trovo 1 minuto li scarico a me li studio. A presto e ancora grazie. Luca
__________________
Intel Core I5 6500, H170M-ITX/DL, S-video Geforce GTX 970 , ssd 256gb |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Spesso mi capita, girando per librerie, di sfogliare e curiosare... Poi arriva il classico commesso che... "Insomma, lo legge o lo compra ?" ![]() In linea di massima ti sconsiglio di prendere un manuale da 40 € o più. Quello a cui fai riferimento non lo conosco, ma così, d'istinto, 624 pagine non sono poche, ma nemmeno tante ( se consideriamo che negli U.S.A. ci sono fior d'autori che fanno manuali da 1100, 1200 pagine su VBA, Excel e forse anche su Access... ). L'offerta è davvero vasta, a volte debordante, e può creare confusione... Io ti consiglio di dare un'occhiata alla collana "I Miti Informatica" di Mondadori, con prezzi accessibili, e se poi scopri che il manuale non ti è servito più di tanto, non pigli il muro a testate ![]() Ad esempio questo : http://www.ibs.it/code/9788861140035...oft-acces.html ![]() |
|
![]() |
![]() |
![]() |
#12 | |
Junior Member
Iscritto dal: Nov 2002
Messaggi: 11
|
Quote:
Grazie per il consiglio. Anche a me capita spesso di sfogliare libri rimanendo nel dubbio se comprarli o no. Purtroppo, sempre più spesso, il libri non contengono tutte le informazioni per risolvere uno specifico problema, ad esempio quello da me evidenziato. In questo caso si vaga nei vari siti internet alla ricerca di info o sorgenti mdb. Ma fare il "reverse" di quei codici è difficile per un principiante. Per ora ho solo il libricino "giallo" aAccess 2007 - I miti informatica 9€- i portatili. Quello che ho selezzionato di apogeo affronta approfonditamente ( sembra ) anche moduli, macro e eventi. Speriamo sia un buon acquisto. Grazie. Luca
__________________
Intel Core I5 6500, H170M-ITX/DL, S-video Geforce GTX 970 , ssd 256gb |
|
![]() |
![]() |
![]() |
#13 |
Junior Member
Iscritto dal: Aug 2008
Messaggi: 27
|
continuo il topic, io ho creato una maschera, tutto funzionante, non ho errore di debug, ma il problema è che non vengono mostrati risultati.
ecco la mia funzione VB: Codice:
Option Compare Database Private Sub Comando2_Click() On Error GoTo Err_Comando2_Click Dim stDocName As String stDocName = "per autori" DoCmd.OpenQuery stDocName, acNormal, acEdit Exit_Comando2_Click: Exit Sub Err_Comando2_Click: MsgBox Err.Description Resume Exit_Comando2_Click End Sub Private Sub CasellaCombinata0_AfterUpdate() End Sub Private Sub CasellaCombinata0_Click() End Sub Private Sub CasellaCombinata0_Change() Form_Maschera1.RecordSource = "SELECT * FROM Articoli INNER JOIN Autori ON Articoli.[ID articolo]=Autori.[Codice articoli] WHERE (Autori.Cognome)='" & CasellaCombinata0.Text & "'" Form_Maschera1.Requery End Sub Private Sub Corpo_Click() End Sub Private Sub Form_AfterUpdate() End Sub la query funziona, l'ho solo modificata per funzionare con la funzione dinamica della maschera |
![]() |
![]() |
![]() |
#14 | |
Junior Member
Iscritto dal: Sep 2011
Messaggi: 3
|
Quote:
Ho trovato questo esempio, che è proprio quello che fa per me, per un caso 'speculare'. Il problema è che quando esegue le routine associate ai pulsanti mi dà l'errore sulla riga "Form_M1.RecordSource=strSql", e idem in quella speculare del pulsante di reset dà un errore ![]() ![]() Grazie mille! |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:10.