Filtro su due sottomaschere

di il
9 risposte

Filtro su due sottomaschere

Buonasera
Premesso che sto iniziando con i primi passi su access, volevo chiedervi:
Ho una Maschera con due sottomaschere, una riporta dati provenienti da una tabella Ordini Fornitori e l'altra da una tabella ordini clienti.
Il mio scopo è di vedere gli articoli che ancora mi devono essere consegnati dai fornitori e vedere a quanti e quali ordini clienti sono riferiti.
Sin qui nulla di particolare, ho gestito la cosa creando con delle query due tabelle ed ho tutti i dati su due sottomaschere.
Ora avrei necessità di mettere un filtro sulla maschera che mi permetta di rintracciare, per un articolo, l'elenco degli ordini a fornitore nella prima sottomaschera e l'elenco degli ordini da cliente nella seconda sottomaschera.

Ho creato una query che mostra l'elenco dei prodotti, ho piazzato una combobox sulla maschera che permette di selezionare un articolo ora mi servirebbe un pulsante che premuto applichi un filtro alle due sottomaschere passando il valore della combobox ad entrambe.

Spero di aver spiegato in maniera corretta la mia esigenza e ringrazio anticipatamente chi potesse suggerirmi una soluzione pià semplice possibile magari evitando di passare per codice VBA.

9 Risposte

  • Re: Filtro su due sottomaschere

    Alex02 ha scritto:


    Ho una Maschera con due sottomaschere, una riporta dati provenienti da una tabella Ordini Fornitori e l'altra da una tabella ordini clienti.
    Perchè hai 2 tabelle Ordini e non una sola con campo di discriminazione che specifica se si tratta di fornitore o cliente?
  • Re: Filtro su due sottomaschere

    Osvaldo Buongiorno
    Le tabelle sono collegate ed appartengono ad un gestionale e non posso modificarle.
    Ho elaborato una query di unione che effettivamente le mette insieme e potrei costruire una maschera sulla query di unione ma per comodità mi serve avere le visualizzazioni separate dei records delle due tabelle e poi filtrarle su una maschera.

    Grazie comunque dell'attenzione
  • Re: Filtro su due sottomaschere

    Ciao Alex,
    io sono nuovo del forum ma dal .. basso delle mie competenze ti direi di provare scrivendo questo codice nell'AfterUpdate della tua combo.
    [Code] Private Sub TuaCombo_AfterUpdate() Me.TuaSubForm1.Form.Filter = "IDArticoloForm1 = " & Me.TuaCombo.Value Me.TuaSubForm2.Form.Filter = "IDArticoloForm2 = " & Me.TuaCombo.Value Me.TuaSubForm1.Form.FilterOn = True Me.TuaSubForm2.Form.FilterOn = True End Sub Poi eventualmente a fianco della combo metti un pulsante che toglie i filtri
  • Re: Filtro su due sottomaschere

    VBAndre ha scritto:


    Ciao Alex,
    io sono nuovo del forum ma dal .. basso delle mie competenze ti direi di provare scrivendo questo codice nell'AfterUpdate della tua combo.
    [Code] Private Sub TuaCombo_AfterUpdate() Me.TuaSubForm1.Form.Filter = "IDArticoloForm1 = " & Me.TuaCombo.Value Me.TuaSubForm2.Form.Filter = "IDArticoloForm2 = " & Me.TuaCombo.Value Me.TuaSubForm1.Form.FilterOn = True Me.TuaSubForm2.Form.FilterOn = True End Sub Poi eventualmente a fianco della combo metti un pulsante che toglie i filtri
    Ciao VBAndre
    traducendo la tua istruzione con le mie risorse viene cosi:
    Private Sub Filtra_AfterUpdate()
    Me.Sottomaschera Tmp_QtaFornitori.Form.Filter = "IDArticoloForm1 = " & Me.Filtra.Value
    Me.Sottomaschera Tmp_QtaClienti.Form.Filter = "IDArticoloForm2 = " & Me.Filtra.Value
    Me.Sottomaschera Tmp_QtaFornitori.Form.FilterOn = True
    Me.Sottomaschera Tmp_QtaClienti.Form.FilterOn = True
    End Sub

    Mi restituisce un errore, forse perchè ci sono spazi nei nomi delle sottomaschere?

    Intanto grazie della gentilezza
  • Re: Filtro su due sottomaschere

    Gli spazi sicuramente non vanno bene ma anche "IDArticoloForm1" e "IDArticoloForm2" devi sostituirli con il nome dei campi delle 2 subform che contengono il valore da filtrare.
    Per evitare la questione degli spazi fai compilare il nome automaticamente all'editor di codice.
    In pratica, inizia a scrivere Me. Come scrivi il punto, compare un menù a tendina con tutte le proprietà, i metodi e i controlli della tua maschera. Scorrendo verso il basso cerca il nome della tua sottomaschera.

    fammi sapere
  • Re: Filtro su due sottomaschere

    Altra cosa
    scrivendo Me.Filtra.Value controlla che il Nome (non l'etichetta) della combobox sia "Filtra" nel caso cambialo
  • Re: Filtro su due sottomaschere

    Ciao VBAndre

    dunque si, ho corretto l'istruzione avvalendomi dell'autocompletamento e viene fuori questo:

    Private Sub Filtra_AfterUpdate()
    Me.Sottomaschera_Tmp_QtaFornitori.Form.Filter = "Categorico = " & Me.Filtra.Value
    Me.Sottomaschera_Tmp_QtaClienti.Form.Filter = "Categorico = " & Me.Filtra.Value
    Me.Sottomaschera_Tmp_QtaFornitori.Form.FilterOn = True
    Me.Sottomaschera_Tmp_QtaClienti.Form.FilterOn = True
    End Sub

    Selezionando dalla combo dei valori che sono presenti in entrambe le sottomaschere non succede nulla o meglio scompaiono tutti i record da entrambe le sottomaschere ma non viene mostrato il valore filtrato.

    Se seleziono record che non sono presenti su una delle due sottomaschere appare questo errore:

    Errore di run-time 3075
    Errore di sintassi nell'espressione della query 'Categorico =1367_00REVI'.
  • Re: Filtro su due sottomaschere

    Credo dipenda dal fatto che il Tipo di campo sul quale vai a filtrare sia una Testo e non Numerico
    prova così
    [Code] Private Sub Filtra_AfterUpdate() Me.Sottomaschera_Tmp_QtaFornitori.Form.Filter = "Categorico = '" & Me.Filtra.Value & "'" Me.Sottomaschera_Tmp_QtaClienti.Form.Filter = "Categorico = '" & Me.Filtra.Value & "'" Me.Sottomaschera_Tmp_QtaFornitori.Form.FilterOn = True Me.Sottomaschera_Tmp_QtaClienti.Form.FilterOn = True End Sub
  • Re: Filtro su due sottomaschere

    VBAndre
    ora funziona, si il campo era di testo, sei stato gentilissimo e preziosissimo ora penso di potermela cavare nell'inserire un pulsante che rimuove i filtri applicati.

    Grazie ancora e buona serata
Devi accedere o registrarti per scrivere nel forum
9 risposte