Domanda numerazione pagine report Access

Giu239

Utente abituale
Original poster
4 Luglio 2018
107
3
18
Reggio Calabria
Office xp
Salve ho un data base con più tabelle da cui poi ho creato un report con sottoreport. ho inserito a piè di pagina la numerazione di pagina come pagina c di y ma nel sottoreport vorrei che la numerazione fosse indipendente e seguisse la sua numerazione ad esempio nel mio report è relativo a un numero di registro x e questo numero contiene 5 campioni la cui descrizione contiene 2 pagine quindi in totale avrei 10 pagine quindi il report dovrebbe avere in calce la numerazione pagina 1 di 10 2 di 10 ..... mentre ogni campione dovrebbe avere la numerazione 1 di 2 e 2 di 2.
è possibile farlo?
 

TheTruster

Utente abituale
Expert
19 Gennaio 2021
929
432
95
thetruster.altervista.org
LTSC 2024
Ciao,
Non è una cosa immediata e serve sicuramente il VBA.
Per prima cosa il report principale deve essere raggruppato per l'ID del campione, e devi assicurarti che siano visualizzati Intestazione Gruppo o Piè di pagina Gruppo, a seconda di dove vuoi che appaiano i numeri di pagina. In questa sezione ci metti un controllo TextBox per visualizzare il numero di pagina e lo stesso fai nella sezione PièDiPagina del Report.

Poi nel codice del Form dichiari una variabile per tenere il conto delle pagine del campione:

Dim PagCampione As Integer

Poi nel l'evento IntestazioneGruppo del Campione :

Visual Basic:
Private Sub IntestazioneGruppoCampione_Format(Cancel As Integer, FormatCount As Integer)
    If FormatCount = 1 Then '<--- si verifica ogni volta che inizia un nuovo campione
        PagCampione = 0
    End If
End Sub

invece nel PièDiPagina del Report:

Visual Basic:
Private Sub SezionePièDiPaginaPagina_Format(Cancel As Integer, FormatCount As Integer)
    If FormatCount = 1 Then
        PagCampione = PagCampione + 1
    End If
    Me.txtPaginaRegistro = "Pagina Reg: " & Me.Page & " di " & Me.Pages
    Me.txtPaginaCampione = "Pagina Campione: " & PagCampione
End Sub

Il problema è che con Me.Pages puoi sapere certamente quante pagine avrà il Report totale, ma non hai modo di sapere quante pagine sarà il campione.
Se sono sempre 2, allora puoi metterlo direttamente

Me.txtPaginaCampione = "Pagina Campione: " & PagCampione & " di 2"

Se invece non sai a priori quante sono, potresti provare a fare una query al volo (o un DCount basato sulla condizione che determina il sottoreport) per vedere se si riesce a determinare il numero di record e, di conseguenza, capire quante pagine possono occupare.

TheTruster
 
  • Like
Reactions: alfrimpa

Giu239

Utente abituale
Original poster
4 Luglio 2018
107
3
18
Reggio Calabria
Office xp
Grazie per la risposta ma non credo di riuscire a fare quello che hai scritto inoltre il numero di pagine del campione è indefinito potrebbe essere 1 come 10. comunque grazie mille
 

TheTruster

Utente abituale
Expert
19 Gennaio 2021
929
432
95
thetruster.altervista.org
LTSC 2024
Se puoi fornire un file di prova con le tabelle interessate dal report e ovviamente dati fittizi, ma con la struttura del report effettiva, magari posso essere più specifico.

Valuta tu.

TheTruster
 

TheTruster

Utente abituale
Expert
19 Gennaio 2021
929
432
95
thetruster.altervista.org
LTSC 2024
fornire un file di prova con le tabelle interessate dal report e ovviamente dati fittizi, ma con la struttura del report effettiva

Sarebbe stato opportuno inserire almeno dei dati fittizi, per ottenere la situazione che riscontri, ovvero più pagine di report con più pagine di campioni.
La struttura così com'è non consente nemmeno di fare delle prove, senza alcun dato inserito.

Inoltre non avendo idea della logica che sta dietro la struttura del tuo DB, un minimo di spiegazione sarebbe stata gradita.

TheTruster
 
  • Like
Reactions: alfrimpa

Giu239

Utente abituale
Original poster
4 Luglio 2018
107
3
18
Reggio Calabria
Office xp
hai ragione provo a spiegare brevemente quello che vorrei fare il repot rp_flc che deriva dalla query qry_ flc oltre ad avere la numerazione di pagina che ha già a piè di pagina del report dovrebbe avere una seconda numerazione indipendente che mi dica il numero di pagina relativo al numero di campione in pratica il mio report totale potrebbe avere 20 pagine se ho ad esempio 10 campioni e ogni campione ha un report di due pagine non è detto però che ogni campione abbia un report di due pagine potrebbe succedere che un campione abbia due pagine uno una e un altro 5.
se è necessario provo a rifare il database mettendo dei dati e a ripostarlo.
 

TheTruster

Utente abituale
Expert
19 Gennaio 2021
929
432
95
thetruster.altervista.org
LTSC 2024
se è necessario provo a rifare il database mettendo dei dati e a ripostarlo.
Se non lo fai tu che hai concezione di come devono essere questi dati, dovrei farlo io senza averne la minima idea.
Servono dei dati giusto per fare 2 prove. Per vedere se si riesce a gestire il numero di pagina.
Cerca di riprodurre, con dati fasulli, almeno un report con qualche campione, altrimenti si va alla cieca.

TheTruster
 

Giu239

Utente abituale
Original poster
4 Luglio 2018
107
3
18
Reggio Calabria
Office xp
ciao ho modificato e riempito un po' il DB con dei dati fittizi ho provato ad allegarlo anche zippato ma non me lo fa allegare dice che è troppo grande. come faccio a postarlo avrei anche un altro database dove quello che vorrei fare con i numeri di pagina doppi viene bene ma non riesco ad adattarlo al mio DB. Se mi consigliate come fare li posto entrambi
grazie
 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.437
6.230
2.345
55
Arce
2016, 2019, 365

TheTruster

Utente abituale
Expert
19 Gennaio 2021
929
432
95
thetruster.altervista.org
LTSC 2024
Ho visto il DB, ma non sono riuscito a fare una query che restituisse dati. Sarà che non ho ben chiara la struttura che hai dato alle tabelle.
Comunque, ho tolto le condizioni nell'unica query e qualcosa nel report è saltato fuori.
Prova a modificare i raggruppamenti come nell'immagine ed aggiungi i campi segnati.

Report.jpg


Poi nel Report usa questo codice:

Visual Basic:
Option Compare Database
Option Explicit

Dim PagCampione As Integer
Dim PagRegistro As Integer

Private Sub IntestazioneGruppo1_Format(Cancel As Integer, FormatCount As Integer)
    If FormatCount = 1 Then
        PagRegistro = PagRegistro + 1
        PagCampione = 0          ' reset campioni ad ogni nuovo registro
    End If
End Sub

Private Sub IntestazioneGruppo0_Format(Cancel As Integer, FormatCount As Integer)
    If FormatCount = 1 Then
        PagCampione = PagCampione + 1
    End If
End Sub

Private Sub PièDiPaginaGruppo0_Format(Cancel As Integer, FormatCount As Integer)
    Me.txtPaginaCampione.Value = "Pagina Campione: " & PagCampione
End Sub

TheTruster
 

Giu239

Utente abituale
Original poster
4 Luglio 2018
107
3
18
Reggio Calabria
Office xp
ciao grazie ho provato ma non funziona inoltre appena apro il report access si chiude e mi da errore...
 
Ultima modifica di un moderatore: