FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

di il
13 risposte

FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

Giorno a voi una delucidazione su un qualcosa che forse sbaglio, riguardante un filtro con opzione di gruppo. Avendo una maschera "GURE" che prende i dati dalla tabella "Dati_Personale", visto che le mie 95 persone inserite sono divisi per uffici, quando sfoglio i record dalla maschera volevo fare in modo che mi uscissero solo i record di quel tale ufficio, cosi ho seguito le indicazioni di un libro su access e vba dove mi faceva creare un filtro con gruppo di opzioni sulla maschera cosi spuntando l'opzione desiderata mi comparivano solo i record dell'ufficio richiesto, quindi seguendo il libro che riporta come esempio solo 2 opzioni, (a me ne servono 7 i vari uffici + opzione tutti) ho cercato di adattare il codice vba alle mie esigenze, solo che quando faccio visualizzazione maschera e cerco di spuntare l'opzione, questa nn si spunta, di seguito elenco le mie opzioni e il vba per avere un consiglio su cosa ce che non va grazie per ora.

questo e il gruppo di opzioni:
- Tutti
- V^ Reparto
- Uff. Rel. Esterne
- Uff. Aff. Generali
- Uff. Serv. Generali
- Uff. Sport
- Uff. Storico

questo è il vba usato per il comando gruppo opzioni:

'--- Gruppo opzioni filtro per ufficio
Private Sub OpzioniFiltro_AfterUpdate()
If OpzioniFiltro = 2 Then
Me.Filter = "ID_uff = 'V^Reparto'"
Me.FilterOn = True
ElseIf OpzioniFiltro = 3 Then
Me.Filter = "ID_uff = 'Uff.Relazioni Esterne'"
Me.FilterOn = True
ElseIf OpzioniFiltro = 4 Then
Me.Filter = "ID_uff = 'Uff.Affari Generali'"
Me.FilterOn = True
ElseIf OpzioniFiltro = 5 Then
Me.Filter = "ID_uff = 'Uff.Servizi Generali'"
Me.FilterOn = True
ElseIf OpzioniFiltro = 6 Then
Me.Filter = "ID_uff = 'Uff.Sport'"
Me.FilterOn = True
ElseIf OpzioniFiltro = 7 Then
Me.Filter = "ID_uff = 'Uff.Storico'"
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub

Premetto che nella tabella "Dati_personale" ce il campo ID_uff e nell'elenco di questa colonna ci sono le stesse voci che riporto nel vba per i vari uffici.
ho seguito tutte le indicazioni del libro se volete vi dico titolo e tutto (cosi lo guardate) solo si fermava alla seconda opzione, io ho proseguito ad arrivare a sette anche perchè ce una nota che dice "POSSONO ESSERE VERIFICATE MOLTE CONDIZIONI UTILIZZANDO IN SEQUENZA DIVERSE ISTRUZIONI ElseIf"
quindi ho replicato le istruzioni fino al numero desiderato ma poi in modalità maschera e voglio spuntare la voce, e come se non parte niente e non si spunta. aggiungo che nella maschera ho anche un tasto che abilita e disabilita le modifiche dei record, ma ho fatto anche una prova se veniva influenzato da questo comando ma non cambia niente. grazie per ora

13 Risposte

  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    Vedo che scrivi nell'elenco i dati con spazi e poi filtri senza spazi

    Tutti
    - V^ Reparto
    - Uff. Rel. Esterne
    - Uff. Aff. Generali
    - Uff. Serv. Generali
    - Uff. Sport
    - Uff. Storico

    questo è il vba usato per il comando gruppo opzioni:

    '--- Gruppo opzioni filtro per ufficio
    Private Sub OpzioniFiltro_AfterUpdate()
    If OpzioniFiltro = 2 Then
    Me.Filter = "ID_uff = 'V^Reparto'"
    Me.FilterOn = True
    ElseIf OpzioniFiltro = 3 Then
    Me.Filter = "ID_uff = 'Uff.Relazioni Esterne'"
    Me.FilterOn = True
    ElseIf OpzioniFiltro = 4 Then
    Me.Filter = "ID_uff = 'Uff.Affari Generali'"
    Me.FilterOn = True
    ElseIf OpzioniFiltro = 5 Then
    Me.Filter = "ID_uff = 'Uff.Servizi Generali'"
    Me.FilterOn = True
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    Cioè??? se ti riferisci all'elenco be quello e come compare la didascalia sulla maschera poi invece da dove il filtro prende i riferimenti, cioè la tabella Dati_personale nella colonna di riferimento il campo è scritto come risulta nel VBA quindi ID_uff e le voci in elenco sono riportate come sono scritte nel nel VBA, cioè: V^Reparto - Uff.Relazioni Esterne - Uff.Affari Generali - Uff.Servizi Generali - Uff.Sport - Uff. Storico ora riguardando, ma il vba che mi hai riportato, e quello corretto? perchè non noto differenze col mio??
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    AGGIORNAMENTO! sono andato sul sito del libro che ho comprato http://www.sos-office.it/libri/12-access2/163-vba-access è ho scaricato l'esempio degli esercizi che e questo ho confrontato il file dove mi fa l'esempio del filtro con gruppo opzioni, e l'ho confrontato col mio.

    L'esempio riportava la cornice gruppo di opzioni, associata ad una routin di evento immessa nelle proprietà alla voce "evento > dopo aggiornamento", e fin qui tutto bene la mia riportava lo stesso quindi fin qui tutto bene. Poi l'esempio riportava le singole opzioni associate alla routin di evento immesse nella proprietà alla voce "evento > Su pulsante mouse giù" e qui vedo che invece io non avevo associato niente quindi ho provveduto e corretto, e il tutto si lega all' istruzione VBA riportata al post di apertura di questo thread.
    Ora facendo la prova, in visualizzazione machera , l'opzione si spunta, ma va errore con un msg che dice "chiave di ricerca non trovata in nessun record" e va in modalità debug segnalandomi l'errore in giallo, da quello che deduco e come se lui ricercando nella tabella a cui fa riferimento non trova la corrispondenza della voce del filtro immesso nel vba, ma io non vedo errori neanche nella scrittura cioè ho riportato esattamente come e scritto nella tabella di origine da cui prende i riferimenti. Ora forse ho pensato una cosa, e correggetemi se sbaglio. la maschera GURE e associata alla tabella Dati_Personale, in questa tabella l'elenco col nome campo ID_uff (riportato anche nel VBA del gruppo opzioni) e collegata ad una tabella esterna chiamata Uffico che ha i campi IDuff e DSCuff, non e che il problema e proprio questo? cioè che per via che e collegata ad una tabella esterna, quando il filtro cerca la corrispondenza nella tabella Dati_personale riconosce solo la voce del campo ID_uff e non le voci in elenco perchè collegate ad una tabella esterna???? penso male sta cosa?
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    Come pensavo! scoperto il problema facendo una prova, facendo leggere il gruppo di opzioni, si dalla tabella Dati_ personale, ma dal campo Nome dove le voci inserite non sono prese da un elenco collegato ad una tabella esterna come il campo ID_Uff che le voci in elenco leggono da una tabella esterna chiamata Ufficio. quindi credo che modificando il vba in modo che guardi verso la tabella esterna dovrei risolvere, almeno spero. su questo un suggerimento su come cambiarlo? la tabella esterna Ufficio ha 2 campi IDuff e DSCuff
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    Ciao

    se ti interessa ti ho inviato un messaggio in privato per metterci in contatto
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    pfmarro ha scritto:


    ciao

    se ti interessa ti ho inviato un messaggio in privato per metterci in contatto
    ti ho risposto grazie dell'aiuto
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    Altro aggiornamento! ho fatto altra prova con diciamo un piccolo passo avanti o un alternativa se si può dire così, ho creato un altro campo nella tabella Dati_Personale chiamato Filtro_uff prendendo i vaolori che ha in elenco (V^Reparto - Uff.Relazioni Esterne - Uff.Affari Generali - Uff.Servizi Generali - Uff.Sport - Uff. Storico) dalla procedura elenco valori immissione personalizzata piuttosto che leggerlo da una tabella esterna, poi ho fatto le prove col vba per il filtro e tutto funziona! potrebbe andar bene ma visto che la tabella Dati_Personale e la tabella principale del database in sviluppo ha relazioni, report, query, ecc quindi mi toccherebbe poi apportare le madifiche a catena in tutto il database, potete indicarmi almeno come deve essere la dicitura per modificare la parte in grassetto del vba per dirgli di guardare nel verso giusto?? sto facendo delle prove ma finora so fermo li.

    '--- Gruppo opzioni filtro per ufficio
    Private Sub OpzioniFiltro_AfterUpdate()
    If OpzioniFiltro = 2 Then
    Me.Filter = "ID_uff = 'V^Reparto'" parte da correggere
    Me.FilterOn = True
    ElseIf OpzioniFiltro = 3 Then
    Me.Filter = "ID_uff = 'Uff.Relazioni Esterne'" parte da correggere
    Me.FilterOn = True
    ecc........ ecc.........
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    AGGIORNAMENTO! visto che per ora non ne sono venuto a capo pur smanettandoci parecchio, e cmq volevo andare avanti col piccolo progettino, ho usato il metodo alternativo quello di rifare la colonna con i vari uffici nella tabella principale ma usando procedura elenco valori immissione personalizzata piuttosto che leggerlo da una tabella esterna, quindi ho dovuto riallacciare tutti i dati del database in riferimento alla modifica effettuata. Ho salvato come OLD la versione senza modifiche alternative, quindi cmq vorrei cercare di risolvere perchè se mi e capitato ora il problema in futuro potrebbe ripresentarsi, per ora apporto le modifiche ad entrambi i file se avete consigli ve en sarei grato grazie
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    Applicando il metodo del filtro gruppo di opzoni ho notato un piccolo problema. Premetto la maschera principale "GURE" ha un opzione con flag chiamato "Archivia utente" che appena passo su un utente che voglio archiviare magari perchè trasferito, questo lo fa scomparire dalla visualizazione dalla maschea principale ma sempre mantenendolo nella Tabella principale poi tramite una query me lo sposta su un altra maschera che serve solo a vedere gli utenti archiviati e questo e quindi di default la maschera principale "GURE" sul caricamento già e impostato con una routine:

    Private Sub Form_Load()
    Me.Filter = "Archiviati=FALSE"
    Me.FilterOn = True
    End Sub


    quindi gli archiviati di default non compaiono. e questa e la premessa.

    Il problema! sta nel fatto che poi quando dal filtro gruppo opzioni sulla maschera "GURE" scelgo di visualizzare solo quelli di un determinato ufficio, questo funziona ma nella visualizzazione mi reinserisce anche quelli che avevo flaggato come utenti archiviati, come se mi inibisse l'istruzione del flag di archivia utente. avete consigli?? grazie in anticipo
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    Sinceramente non comprendo il motivo per il quale invece di usare una Tabella di Riferimento Relazionata per la definizione dei Campi hai usato quel metodo...!
    Oltretutto il Gruppo OPZIONI è indicizzato NUMERICAMENTE, e guarda caso se avessi usato una Tabella di Riferimento con Chiave PRIMARIA non sarebbe stato necessaria NEMMENO 1 RIGA di codice.

    Poi io invece del GRUPPO OPZIONI che è statico e fisso, avrei usato una LISTBOX che invece si autoridefinisce...

    Credo ci sia qualche cosa da rivedere nei ragionamenti.
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    @Alex ha scritto:


    Sinceramente non comprendo il motivo per il quale invece di usare una Tabella di Riferimento Relazionata per la definizione dei Campi hai usato quel metodo...!
    Oltretutto il Gruppo OPZIONI è indicizzato NUMERICAMENTE, e guarda caso se avessi usato una Tabella di Riferimento con Chiave PRIMARIA non sarebbe stato necessaria NEMMENO 1 RIGA di codice.

    Poi io invece del GRUPPO OPZIONI che è statico e fisso, avrei usato una LISTBOX che invece si autoridefinisce...

    Credo ci sia qualche cosa da rivedere nei ragionamenti.
    GRAZIE DELLA RISPOSTA! ma la tabella relazionata con i nomi dei campi intendi una tabella esterna con i nomi dei vari uffici come era al principio? sinceramente ho usato i metodi sopra effettuati o quello alternativo diciamo perchè cmq non essendo esperto in access, inbase alle esigenze che mi servono man mano che mi acculturo nella meccanica di access inserisco quello che imparo, nulla toglie il fatto che se poi mi si presentano metodi migliori o meno macchinosi per così dire, io apporti le modifiche per snellire il tutto. infatti come scritto sopra ho salvato il database anche prima della modifica quindi dell'aggiunta del gruppo opzioni, proprio perchè credo ci sia un metodo più semplice diciamo. cmq apprendo man mano magari penso 2 soluzioni possibili di altre 4 che potrebbero esserci diciamo. Se mi dai delucidazioni con parole un po più chiare io seguo il tuo metodo, riprendendo da prima della modifica che per quanto possa imparare da internet, qualche libro o perchè ci arrivo da solo. non posso sapere subito la soluzione più pratica.
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    Fatico a capire cosa non ti è chiaro... in quanto quello che ti ho suggerito si chiama NORMALIZZAZIONE e credo ricada nel 2° criterio...
    Il fatto che tu non abbia una completa dimestichezza è certamente un limite ma non credo ti sia complesso superarlo con un pò di infarinatura.

    Nello specifico, nella Tabella Principale non andrai ad inserire il TESTO, ma una ChiaveEsterna(FK) di tipo Numerico Intero Lungo, relazionata con la ChiavePrimaria(PK) della Tabella specifica che riporta il Descrittivo del Campo.

    A quel punto nella Maschera userai una ListBox che avrà come OrigineControllo il campo FK della Principale e come OrigineRiga una Select sui 2 Campi della Tabella secondaria, di cui metterai la Colonna di Indice(0) a Larghezza Zero in modo da vedere solo la Descrizione.
    Se invece userai un Gruppo Opzioni, ricorda che perdi la flessibilità di aggiornare eventuali Descrittivi o aggiungere Opzioni in modo dinamico, e dovrai semplicemente creare un GruppoOpzioni con il Numero dei Check pari al Numero dei Records ed assegnare ai singoli Checks il valore relativo della PK della Tabella, compilando a Mano il Descrittivo nella LABEL del Check.
  • Re: FILTRO DATI MASCHERA CON GRUPPO DI OPZIONI

    Scusa la risp in ritardo per motivi di lavoro rileggo solo ora, nel punto in cui dici:

    @Alex ha scritto:


    Nello specifico, nella Tabella Principale non andrai ad inserire il TESTO, ma una ChiaveEsterna(FK) di tipo Numerico Intero Lungo, relazionata con la ChiavePrimaria(PK) della Tabella specifica che riporta il Descrittivo del Campo.
    Io nella tabella principale Dati_personale già ho un campo numerico chiamato ID_uff che e relazionato con una tabella esterna chiamata Ufficio dove ci sono i Campi ID_uff e DSCuff dove la relazione e tra id_uff della tabella principale e id_uff della tabella uffici, infatti dalla maschera GURE io per assegnare un ufficio ad una persona apro un elenco e scelgo l'ufficio, e fin qui tutto bene .

    Volevo mettere solo sulla maschera gure un filtro che mi facesse visualizzare le schede solo di quel determinato ufficio se impostato sul filtro, e non scorrerle tutte e 97, e vero che posso cercare per cognome col cerc, ma un primo filtro volevo impostarlo così con la visualizzazione solo di utenti di quel determinato ufficio. mi sono spiegato male? dalla spiegazione sopra io quella determinata relazione credo di averla , o mi so sbagliato?
Devi accedere o registrarti per scrivere nel forum
13 risposte