Newsgroup: it.comp.appl.access
Titolo: ForceNewPage

Ciao a tutti,
 
non essendo ancora riuscita a risolvere questo problema, non avendo finora avuto tempo da dedicarci, provo a riproporre la domanda:
 
ho la necessità di stampare su entrambe le facciate di un foglio gli ordini
di una serie di clienti. Le stampanti che fanno fronte/retro consentirebbero
questa possibilità, ma il problema si verifica quando cambia l'ordine, per
cui sarebbe necessario inserire una pagina bianca.
Se avessi sempre lo stesso numero di pagine per ordine non ci sarebbe problema (basterebbe inserire una pagina vuota), invece potrebbe essere che un ordine abbia una pagina, due pagine, n. pagine...
 
Io ho provato ad aggiungere un'interruzione di pagina dopo sezione ma dovrebbe funzionare solo se serve... quindi ho scartato l'idea.
 
Ho provato inserendo questa routine su formattazione in IntestazioneGruppo1 (che mi rappresenta l'inizio dell'ordine) ma non funziona:
 
Dim intGetVal As Integer
intGetVal = Reports![OrdiniClienti].Section(1).ForceNewPage
 
Vorrei in qualche modo far sì che ogni nuovo ordine venga stampato in una pagina dispari, ho provato quindi così: su formattazione piè pagina dell'ordine (dove IntPag è l'interrruzione di pagina che ho inserito alla fine del piè pagina dell'ordine):
 
If PageFooter / 2 <> Int(PageFooter / 2) Then
'"il numero è dispari"
Me.IntPag.Visible = False
Else
'"il numero è pari"
Me.IntPag.Visible = True
End If
 
oppure
 
If Page / 2 <> Int(Page / 2) Then
'"il numero è dispari"
   Me.Section(1).ForceNewPage = 0
 
Else
'"il numero è pari"
   Me.Section(1).ForceNewPage = 2
 
End If
 
Ho provato a leggere i consigli degli argomenti inerenti, ma non sono riuscita ad arrivare ad una soluzione...
 
Qualcuno avrebbe la pazienza di spiegarmi come fare o farmi capire dove sbaglio...?
 
Grazie mille


Per la pagina DISPARI di solito si usa MOD 2...
 
If Page MOD 2 >0 Then
  ' Dispari
Else
  ' Pari
End If
 
Secondo me tu come hai operato NON rilevi il cambio ORDINE...
Quindi puoi usare una Variabile STATIC...
 
Ti suggerisco di ATTRIBUIRE un nome alle SEZIONI e non lasciare quello di DEFAULT, solo per la Leggibilità...!
 
Private Sub IdOrdine_Format(Cancel As Integer, FormatCount As Integer)
    Static OldIdOrdine
    If Me.IdOrdine <> OldIdOrdine then
      If Page MOD 2 > 0 THEN
         Me.Section("IdOrdine").ForceNewPage=1
      End if
      OldIdOrdine=Me.IdOrdine
    End If
End Sub
 
Non ho provato, dovrei avere un DEMO per testarlo... ma ti lascia modo di rifletterci e provare...
 
@Alex


Ciao Alex,
grazie mille per il tuo supporto...
Però ho provato e mi viene la finestra con errore run-time 438
Proprietà o metodo non supportati dall'oggetto...
Si blocca su If Me.IdOrdine <> OldIdOrdine Then ... dicendo OldIdOrdine=vuoto
 
Tanto per capire dove sbaglio: per te IdOrdine è l'intestazione o il piè di pagina del gruppo Ordini? o qualcos'altro?
 
Grazie per i tuoi suggerimenti! Sono molto apprezzati!

Quello è il controllo associato alla PK dell'ordine...
Si ti avrei detto di inserire il controllo del valore NULL che essendo Variant è il primo.che trova...
Quindi in caso di NULL alla prima occorrenza devi solo valorizzarlo = Me.IdOrdine...
 
L'altro invece è il nome della Sezione chiamala come vuoi tu...
 
@Alez

 @Alez
 
Oddio, mi sento analfabeta... che significa PK dell'ordine?
Non ho ben capito... sorry
Help


PK è la CHIAVE PRIMARIA della Tabella ORDINI, banalmente tutti la chiamano IDORDINI... tu chiamala come credi ma sempre PK rimane...!
 
 
Quindi si traduce in questo:
 
Private Sub IntestazioneSezioneOrdine_Format(Cancel As Integer, FormatCount As Integer)
    Static OldIdOrdine
 
    If Len(OldIdOrdine & vbNullstring)=0 then
       OldIdOrdine=Me!ControlloAsssociatoChiavePrimariaOrdine
    ElseIf Me.ControlloAsssociatoChiavePrimariaOrdine<> OldIdOrdine then
      If Page MOD 2 > 0 THEN
         Me.Section("IdOrdine").ForceNewPage=1
      End if
      OldIdOrdine=Me.ControlloAsssociatoChiavePrimariaOrdine
    End If
End Sub
 
@Alex