[Access 2010] Filtrare report dinamico con multi-selezione

martedì 10 aprile 2012 - 13.05
Tag Elenco Tags  Windows 7  |  Access (.mdb)  |  Office 2010

filmjj Profilo | Newbie

Ciao a tutti,

dunque...

...Senza cattiveria ho effettuato, sbagliando, il crossposting e me ne pento...:(
spero che aprire questo 3D sullo stesso argometo dei due 3D precedentemente chiusi in altri 2 forum
non violi le regole, ma sono costretto a farlo in quanto ho bisogno di aiuto...Davvero...:(

Arrivo al problema.

Ho un report dinamico (che ha come origine record una query) che ovviamente ha tutti i controlli non associati.
La query su cui si basa il report è a campi incrociati ed ha un parametro che corrisponde ad una
casella combinata in una form non associata.
questo parametro funziona correttamente...e sono già a buon punto.
Il problema è che vorrei filtrare ulteriormente il report con una selezione multipla però il filtro non
viene applicato.
In uno dei due forum in cui è stata chiusa la disussione (masterdrive.it) mi è stato consigliato da Alex
di effettuare il requery del report dopo aver assegnato il recordsource (al report), ma il report non viene filtrato
lo stesso.

ecco tutto il codice presente nel report
Private Sub Report_Close() DoCmd.Restore End Sub Private Sub Report_NoData(Cancel As Integer) MsgBox "Nessuna Informazione Da Visualizzare", , "Avviso by Fil" Cancel = True End Sub Private Sub Report_Open(Cancel As Integer) 'On Error GoTo Errore 'MsgBox Forms!MReportCategorie!Lista DoCmd.Maximize Me.RecordSource = "QRptRipartizioniSpeseEsercizio2" Call AggiornaReport(Me) 'questo richiama il "Modulo1" per effettuare il requery Dim qdf As DAO.QueryDef Dim fld As DAO.Field Dim rst As DAO.Recordset Dim Conta As Integer Set qdf = CurrentDb().QueryDefs("QRptRipartizioniSpeseEsercizio2") qdf.Parameters![Forms!MReportCategorie!cbo_tipo] = [Forms]![MReportCategorie]![cbo_tipo] Set rst = qdf.OpenRecordset Conta = 1 For Each fld In rst.Fields Me("Etichetta" & Trim(Conta)).Caption = fld.Name Me("Etichetta" & Trim(Conta)).Visible = True Me("Controllo" & Trim(Conta)).ControlSource = fld.Name Me("Controllo" & Trim(Conta)).Visible = True Conta = Conta + 1 Next Set rst = Nothing Set qdf = Nothing Set fld = Nothing Exit Sub Errore: Resume Next End Sub

codice del modulo (Modulo1) per effettuare il requery

Public Sub AggiornaReport(rpt As Access.Report) With rpt If .Filter = vbNullString Then .FilterOn = True .Filter = " " .Filter = vbNullString Else .Filter = .Filter .FilterOn = True End If End With End Sub

codice che effettua la multiselezione e che apre il report:

-pulsante che apre il report
Private Sub Comando8_Click() On Error GoTo Errore Dim varItem As Variant Dim strCONDIZIONE As String Dim stDocName As String stDocName = "rptRipartizSpeseEsercizio" strCONDIZIONE = "" For x = 0 To Me.Lista.ListCount - 1 strCONDIZIONE = strCONDIZIONE & "[Gruppo Voci] = " & Me.Lista.Column(0, x) If x <> Me.Lista.ListCount - 1 Then strCONDIZIONE = strCONDIZIONE & " OR " End If Next x If strCONDIZIONE <> "" Then DoCmd.OpenReport stDocName, acViewPreview, , strCONDIZIONE Else MsgBox "Selezionare almeno 1 CATEGORIA...!" End If Exit Sub Errore: Resume Next End Sub
-codice della listbox da cui vengono selezionzati gli items
Private Sub Elenco_Click() On Error GoTo Errore Dim varItem As Variant presente = 0 If Me.Elenco.Column(0) = 1 Then ListIndex = 1 Lista.RemoveItem (Lista.ListIndex) Else For Each varItem In Me.Elenco.ItemsSelected Me.Lista = Me.Lista & Me.Elenco.Column(0, varItem) & "," Me.Lista.SetFocus For x = 0 To Me.Lista.ListCount - 1 If Me.Lista.Column(0, x) = Me.Elenco.Column(0, varItem) Then presente = -1 End If Next x If presente <> -1 Then Me.Lista.AddItem Me.Elenco.Column(0, varItem) & ";" & Me.Elenco.Column(1, varItem) End If Next varItem End If Exit Sub Errore: Resume Next End Sub
codice della 2° listbox in cui viene effettuata la post selezione e che funge da criterio per il report
Private Sub Lista_Click() On Error GoTo Errore ListIndex = 1 Lista.RemoveItem (Lista.ListIndex) Exit Sub Errore: Resume Next End Sub

Chiedo scusa ancora per la mia condotta e ringrazio chiunque vorrà aiutarmi (in anticipo)... ;-D

Abbraccio
Ciao
Fil
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5