Ok , mi scuso..
Mi sembra giusto spiegare in maniera esaustiva e concisa:
Il mio problema è che non riesco ad aprire un report, chiamato "carta"
Il report deve essere filtrato in base a una lst che si trova nella maschera mStampa.
Ecco il percorso da fare per accedervi.
Un per primo deve aprire mDati, selezionare valori dalle cmb , premere sul pulsante adiacente che esegue i requery .
Ora si preme il pulsante in alto a destra con il disegnino della stampa. Questo apre la maschera mStampa in dialogo.
a questo punto bisogna selezionare uno o più valori dalla lst nella maschera, poi premere il pulsante di stampa in basso. Tale pulsante apre in anteprima stampa il report. Ecco l'errore:mi compare errore runtime 2501 (se faccio debug mi seleziona la riga dell openreport).
Allora subito mi sorge il dubbio che il pulsante dell openreport abbia qualche riga errata; in effetti quel pulsante possiede il codice per filtrare il report in base alla selezione della lst su mStampa. Che sia questo il problema? no, poi spiego.
Allora immagino che il problema sia che ci siano codici sul report che generino errori... No, i codici del report sono su Attivato e su apertura, ma se li cancello il problema rimane.
Allora mi rimangono a logica due opzioni: o genera errore il sottoreport del report (collegato a una query diversa del main report) che ha qualche semplice codice su caricamento, o si è corrotto l'oggetto. Ho provato a togliere tutti i codici dal report e dal sottoreport ma compare sempre l'errore.
Andabdo con ordine ecco gli errori che compaiono:
-se lascio tutti i codici: errore runtime 2501 e mi evidenzia l openreport
-se tolgo i codici dal report e dal sottoreport (anche aprendo il report dal riquadro di spostamento) : si aprono le finestre popup della query collegata al report o al sottoreport (e non so perchè)
-se lascio i codici nel report e sottoreport ma tolgo il filtro dal tasto di apertura del report nella maschera mStampa: errore 2501
L'errore compare an che se apro il report non in anteprima di stampa.
Quindi il problema non è il filtro, nè i codici nel report. Non capisco tuttavia perchè l'errore 2501 appaia nè perche mi compaiono le finestre popup della query collegata se tolgo i codici dal report.
Questo è tutto quel che so riguardo al problema.
Altre info utili non credo ce ne siano eccetto i codici che posto di seguito. Ah, il campo da filtrare è di tipo numerico intero ed è "anno" il suo nome, omonimo nella query, nella tabella a esso collegato e nella casella report.
codici
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
db corretto: