Antonio mi scrive esponendomi un problema abbastanza semplice ma che è utile per capire alcuni concetti di base che stanno dietro alle maschere di access: il filtraggio ed il recordset.
In pratica quando facciamo eseguire un filtraggio ad una maschera sulla base di uno o più campi della tabella/query ad essa associata (vedi proprietà RecordSource), Access crea al volo una query aggiungendo le vostre condizioni del filtro come clausola condizionale (la clausola WHERE in SQL), esegue la query, memorizza i risultati nella proprietà Recordset della maschera e mostra i singoli record del Recordset.
Vediamo, dunque, il problema di Antonio ......
Sono un appassionato di access, lo uso a lavoro gestendo un archivio personale
di circa 400 persone; sono un autodidatta a tempo perso, perché ho poco
tempo per studiare bene l'applicativo, anche se mi aiuto con un libro acquistato
tempo fa per neofiti.
Comunque vengo al dunque su questo programmino che ho fatto, ho posto il filtro
per estrarre una persona da una query semplice che racchiude più tabelle,
tutto funziona bene ormai da tempo e stò apportando delle migliorie man
mano che colgo qualche dritta, il problema è che non riesco a 'fargli
dire': "nominativo non presente in archivio" quando cerco qualcuno
che non è presente nel database.
Altro quesito…….sempre richiamando qualcuno dalla solita query…..vorrei poter filtrare ad esempio tutti i nomi che iniziano con a, etc..
Tieni presente che per filtrare i nomi che cerco, uso far partire una macro in cui gli dico di aprire la query e come condizione where gli metto….[Database Nuovo Anagrafe]![Cognome]=[Digitare Cognome]
Ti ringrazio sin d'ora
Per quanto riguarda il primo quesito la risposta è semplice: eseguito il filtraggio, leggi la proprietà Recordset della maschera. Questa proprietà è un oggetto DAO.Recordset che contiene i dati selezionati dal filtraggio. Tale oggetto ha una proprietà, denominata RecordCount, che, come dice la stessa parola, ti consente di valutare se il risultato del filtraggio contiene record o meno.
Per quanto riguarda il secondo quesito, la risposta è semplice: invece di usare [Database Nuovo Anagrafe]![Cognome]=[Digitare Cognome], usa l'operatore LIKE in questo modo: [Database Nuovo Anagrafe]![Cognome] LIKE 'parte di cognome*' (Nota bene l'asterisco e gli apici). L'asterisco indica che, dopo la parte di cognome (ad esempio l'iniziale) che è il vincolo del filtraggio, può esserci una qualsiasi sequenza di caratteri.
Siccome, come dico spesso, un esempio è meglio di 1000 parole, ecco un frammento di codice VBA che potrai facilmente adattare alle tue esigenze. Questo codice fa riferimento ad una maschera contenente un campo di ricerca sul cognome (R_Cognome) ed una sottomaschera (R_CLIENTI) che mostra i risultati della ricerca. Il codice l'ho inserito nella procedura che gestisce la pressione di un pulsante di avvio della ricerca (ad esempio la Sub Bottone_Click()).
Per far funzionare il tutto assicurati di aver specificato, tra i riferimenti (voce Strumenti --> Riferimenti dell'editor VBA) del progetto, la libreria Microsoft DAO x.y Object Library.
Dim RecSet As DAO.Recordset Me.R_CLIENTI.Form.FilterOn = True If IsNull(Me.R_Cognome.Value) = False Then Me.R_CLIENTI.Form.Filter = "Cognome LIKE '" + Me.R_Cognome + "*'" End If Me.R_CLIENTI.Requery Set RecSet = Me.R_CLIENTI.Form.Recordset
If RecSet.RecordCount = 0 Then MsgBox "nominativo non presente in archivio" End If
[da 1 a 0 di 0 commenti] | Indietro