Buona sera,
commento questo argomento ormai datato perchè purtroppo si è verificato un problema con i codici. Ho creato un altro argomento per discutere di ciò ma purtroppo non ne sono venuto a capo, quindi ho deciso di scrivere qui, dove è stato postato per la prima volta il codice.
Faccio riferimento al db che mi è stato passato tramite link da @Alex in cui una maschera veniva filtrata dalla selezione dei valori in una listbox. Apllicando i consigli datimi ho rifatto lo stesso non con una maschera ma con un report. Purtroppo se apro il report tramite pulsante da maschera, con quei codici, si genera errore 2501 e mi evidenzia la riga dell openreport. Non ne sono venuto a capo. Cosa ho sbgaliato?
Il report ha dei codici su Attivato e Su apertura, poi ha un sottoreport che ha codici su Caricamento.
Repilogo brevemente il problema. Ho una maschera mDati che si apre in modo normale; in questa c'è un pulsante che mi apre mStampa in dialogo. Qui ho una listbox con selezione multipla semplice (lst_anno). In questa seleziono dei valori numerici interi, e in base ai valori selzionati filtro il report che vado ad aprire consecutivamente tramite bottone da maschera mStampa.
Ecco i nomi che non ho già citato:
lst_anno è collegata al campo "anno" di Query_calcoli. La stessa query è collegata al già citato report, che possiede una casella (nel corpo) con nome "anno", collegata anche lei al campo "anno" della suddetta query.
Questo è il codice del bottone che fa partire la stampa (si trova in mStampa):
Private Sub cmdStampa_Click()
Dim strItems As String
strItems = FillItems(Me.lst_anno)
If Len(strItems) > 0 Then
If Me.FilterOn = True Then Me.FilterOn = False
Me.Filter = "anno IN (" & strItems & ")"
Me.FilterOn = True
End If
DoCmd.OpenReport "carta", acViewPreview, , Me.Filter
End Sub
Private Function FillItems(lst As Access.ListBox) As String
Dim varItem As Variant
Dim strItems As String
For Each varItem In lst.ItemsSelected
strItems = strItems & lst.Column(0, varItem) & ","
Next
If Len(strItems) > 0 Then strItems = Mid$(strItems, 1, Len(strItems) - 1)
FillItems = strItems
End Function
questi sono i codici che si trovano nel main report (che deve essere filtrato):
Private Sub Report_GotFocus()
On Error GoTo Macro3_Err
DoCmd.RunCommand acCmdPrint
Macro3_Exit:
DoCmd.RunCommand acCmdCloseWindow
DoCmd.Close acReport, "carta"
Exit Sub
Macro3_Err:
Resume Macro3_Exit
DoCmd.RunCommand acCmdCloseWindow
DoCmd.Close acReport, "carta"
End Sub
Private Sub Report_Open(Cancel As Integer)
If Len(Forms("mStampa").Name) > 0 Then
Me.Grafico.Visible = Forms!mStampa!chkGrafico
Me.PièDiPaginaReport.Visible = Forms!mStampa!chkGrafico
End If
If Len(Forms("mStampa").Name) > 0 Then
Me.SezioneIntestazionePagina = Forms!mStampa!chkRiepilogo
Me.Corpo.Visible = Forms!mStampa!chkRiepilogo
End If
End Sub
Questo è il codice nel sottoreport:
Private Sub Report_Load()
Testo176.Visible = (nome_ogg = "Strumento portatile")
Testo131.Visible = (nome_ogg = "Strumento portatile")
Testo183.Visible = (nome_ogg = "Strumento portatile")
Testo87.Visible = (nome_ogg = "Portale A") Or (nome_ogg = "Portale B")
Testo185.Visible = (nome_ogg = "Portale A") Or (nome_ogg = "Portale B")
Testo140.Visible = (nome_ogg = "Portale B") Or (nome_ogg = "Portale A")
End Sub
Non ho davvero idea di come risolvere questo problema. Il report non si apre..
L'unica cosa che sono riuscito a ottenere è che se io creo un nuovo report e ci sposto tt i controlli, allora questo si apre la prima volta se lo apro senza usare il filtro; quando poi lo apro con il filtro, mi dà errore e me lo dà anche le volte successive (anche se non uso più il filtro per aprirlo).
Vi ringrazio per l'ascolto
Link al db:
Jibi