Condividi:        

[Access 2010] - Fitro su sottomaschera.

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Access 2010] - Fitro su sottomaschera.

Postdi theShort » 07/12/14 19:16

Ciao a tutti,
mi si presenta il seguente problema con i filtri in access 2010:

ho una maschera "Progetto" contenente una sottomaschera "Sopralluoghi" che visualizza i record relativi al progetto visualizzato dalla maschera madre. Le tabelle di base sono tabelle collegate.
Ora, avrei la necessità di dover filtrare ulteriormente questi record in base al campo "Localizzazione" ( i cui valori sono ad esempio una via, il nome di un parco, ecc...). Per fare ciò, ho provato a creare un filtro in base a maschera, ma dall'elenco a tendina del campo "Localizzazione" ottengo sempre e solo i valori "is null" e "is not null" anche se nelle opzioni imposto un valore altissimo per gli elementi da visualizzare in elenco e anche se metto il flag alla voce "campi OCDB".

Il filtro in base a maschera non funziona proprio su tabelle collegate?

L'alternativa, che tra l'altro è la soluzione che mi piace di più, è quella di usare il filtro classico (il pulsante grande col simbolo dell'imbuto nella barra degli strumenti) ottenendo un elenco spuntabile con i vari valori relativi al campo selezionato (avrei da allegarvi l'immagine della schermata, ma non ho idea di come si alleghino le immagini al post... :?: )

A questo punto ho due domade da porvi:

1) Come posso passare i criteri di di questo filtro ad una routine che mi visualizzi il relativo report?
2) E' possibile avviare questo filtro tramite un pulsante all'interno di una maschera?

Per chiarimenti domandate pure. ;)

Grazie a chi mi può dare una risposta!
theShort
Utente Junior
 
Post: 25
Iscritto il: 05/03/13 11:35

Sponsor
 

Re: [Access 2010] - Fitro su sottomaschera.

Postdi theShort » 08/12/14 14:58

Incomincio a darmi qualche risposta:
theShort ha scritto:1) Come posso passare i criteri di di questo filtro ad una routine che mi visualizzi il relativo report?

Basta aggiungere un pulsante direttamente nella sottomaschera passandogli il criterio di ricerca del filtro con:
Codice: Seleziona tutto
If Me.FilterOn Then
   strFilter = Me.Filter
End If

Il codice per visualizzare un report in base al filtro può avere questa forma:
Codice: Seleziona tutto
Private Sub nome_comando_Click()

Dim stDocName As String
Dim strFilter As String

stDocName = "nome_FORM"

If Me.FilterOn Then
   strFilter = Me.Filter
End If
DoCmd.OpenReport stDocName, View:=acPreview, WhereCondition:=strFilter
ExitHere:
   Exit Sub
HandleErrors:
   Select Case Err.Number
      Case 2501
         MsgBox "Non ci sono record da visualizzare!"
      Case Else
         MsgBox Err.Description
   End Select
   Resume ExitHere
   
End Sub


Rimane comunque valida la seconda domanda:
Come posso aggiungere un pulsante nella sottomaschera che mi permetta di attivare quel filtro generico?

Grazie a chi può rispondermi!
theShort
Utente Junior
 
Post: 25
Iscritto il: 05/03/13 11:35

Re: [Access 2010] - Fitro su sottomaschera.

Postdi theShort » 09/12/14 23:09

Sempre alle prese con il visualizzare un report con filtro.

Al codice che ho postato sopra dovrei aggiungere due condizioni: una relativa al filtro e l'altra relativa all'ID_Progetto, visto che i dati che dovrei visualizzare non solo devono essere quelli filtrati, ma devono essere quelli relativi al progetto in consultazione.

Ho provato a passare il criterio di riceca in questo modo:

Codice: Seleziona tutto
stLinkCriteria = strFilter & " And [ID_Progetto]=" & Me![ID_Progetto] & ""
DoCmd.OpenReport stDocName, View:=acPreview, WhereCondition:=stLinkCriteria


Quando attivo il filtro, tutto funziona regolarmente, quando non attivo il filtro ottengo un errore:

Codice: Seleziona tutto
 Errore di sintassi (operatore mancante) nell'espressione della query 'And [ID_Progetto]=18'


Non riesco a capire cosa manca... :?:

Grazie per l'attenzione!
theShort
Utente Junior
 
Post: 25
Iscritto il: 05/03/13 11:35

Postdi archimede » 10/12/14 11:48

theShort ha scritto:Non riesco a capire cosa manca
Credo che tu debba eseguire
Codice: Seleziona tutto
stLinkCriteria = strFilter & " And [ID_Progetto]=" & Me![ID_Progetto] & ""
SOLO quando strFilter è valorizzato.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [Access 2010] - Fitro su sottomaschera.

Postdi theShort » 10/12/14 19:44

Ho fatto un passo avanti, ma rimane un problema noioso di fondo... :evil:

Ho separato i criteri di selezione per riunirli nell'istruzione "if/else" in questo modo:
Codice: Seleziona tutto
Private Sub Comando38_Click()

Dim stDocName As String
Dim strFilter As String
Dim strCondition As String
Dim stLinkCriteria As String

stDocName = "nome_FORM"
strFilter = Me.Filter
stLinkCriteria = "[ID_Progetto]=" & Me![ID_Progetto]
   
If Me.FilterOn Then
   strCondition = strFilter & " And " & stLinkCriteria
   Else
   strCondition = stLinkCriteria
End If


DoCmd.OpenReport stDocName, View:=acPreview, WhereCondition:=strCondition
ExitHere:
   Exit Sub
HandleErrors:
   Select Case Err.Number
      Case 2501
         MsgBox "Non ci sono record da visualizzare!"
      Case Else
         MsgBox Err.Description
   End Select
   Resume ExitHere
   
End Sub

In questo modo tutto funziona come deve, se applico il filtro e visualizzo il report, tutto funziona correttamente e allo stesso modo anche quando disattivo il filtro. Però rimane un problema da risolvere: quando avvio il database, una volta aperta la maschera in questione senza filtrare nulla se tento di aprire il report, mi restituisce l'errore suddetto. Per di più, se avvio il database e apro la maschera in questione, se disattivo il filtro (con apposito pulsante) anche se non ho filtrato nulla prima, magicamente il report mi viene visualizzato correttamente...

A tal proposito ho provato a modificare "If/Else" in questo modo:

Codice: Seleziona tutto
If Me.FilterOn Then
   strCondition = strFilter & " And " & stLinkCriteria
   Else
   Me.FilterOn = False
   Me.Requery
   strCondition = stLinkCriteria
End If

Ma tutto rimane invariato, non mi risolve il problema. :cry:

Comunque per l'esattezza, l'errore è:
Codice: Seleziona tutto
Errore di run-time '3075':
 Errore di sintassi (operatore mancante) nell'espressione della query 'And [ID_Progetto]=18'


Qualche idea?
theShort
Utente Junior
 
Post: 25
Iscritto il: 05/03/13 11:35

Re: [Access 2010] - Fitro su sottomaschera.

Postdi theShort » 12/12/14 12:58

Ho risolto la cosa impostando all'apertura della sottomaschera un:
Codice: Seleziona tutto
   Me.FilterOn = False
   Me.Requery

Ora tutto funziona come deve.

Rimane il fatto che mi piacerebbe sapere se sia possibile aggingere un tasto in maschera che richiami il filtro generico di access, per l'esattezza il filtro che si ottiene dal tasto evidenziato qui:

Immagine

e che fornisce una cosa simile:

Immagine

Ciao!
theShort
Utente Junior
 
Post: 25
Iscritto il: 05/03/13 11:35

Re: [Access 2010] - Fitro su sottomaschera.

Postdi peppo55 » 12/12/14 17:27

Ciao theShort ,

il filtro mostrato nelle immagini, lo puoi aggiungere alla "Barra di accesso rapido" . Nelle opzioni di Access seleziona "Barra di accesso
rapido". Nella parte sinistra, "Scegli comandi da:" seleziona "Tutti i comandi". Fai scorrere la barra fino a Filtro (seleziona il secondo)
Nella parte destra hai la possibilità di scegliere se il filtro sia disponibile solo per il db corrente oppure per tutte le istanze di access
che apri. Premi il taso centrale "Aggiungi". Premi OK.
Seleziona un record della Sottomaschera e premi il pulsantino sulla Barra di accesso rapido"
peppo

Excel 2010
peppo55
Utente Senior
 
Post: 167
Iscritto il: 30/09/12 13:51

Re: [Access 2010] - Fitro su sottomaschera.

Postdi theShort » 12/12/14 22:04

Grazie Peppo! Non sapevo di questa cosa!

Non è come mettere un pulsante direttamente in maschera, ma è meglio di niente! ;)

Ciao!
theShort
Utente Junior
 
Post: 25
Iscritto il: 05/03/13 11:35


Torna a Applicazioni Office Windows


Topic correlati a "[Access 2010] - Fitro su sottomaschera.":


Chi c’è in linea

Visitano il forum: Nessuno e 44 ospiti