Perch� non posta un link alla vecchia discussione dove c'� molto
pi� informazione che nel tuo messaggio qui. p.e. la situazione,
il testo dell'errore per capire cosa vuol dire "non funziona" ecc.?
http://groups.google.com/group/it.comp.appl.access/browse_frm/thread/be1c8b695172aa01/
> In una maschera continua ho messo due pulsanti "PgSu" e "PgGiu" per
> andare avanti o indietro con le pagine.
> Il codice, con il suggerimento di Massimiliano Amendola, �:
> Option Compare Database
> Option Explicit
> Dim iPage As Byte
>
> --------------------------------------------------------------------------------------
> Private Sub Pulsante_Next_Click()
> iPage = iPage + 1
> DoCmd.GoToPage iPage
> End Sub
>
> -------------------------------------------------------------------------------------
> Private Sub pulsante_Previous_Click()
> If iPage > 0 Then
> iPage = iPage - 1
> DoCmd.GoToPage iPage
> Else
> MsgBox "We Ciccio ma 'ndo vai???"
> End If
> End Sub
> Perch� non funziona?
Seguendo la vecchia discussione non hai pagine nella tua maschera
ovvero una sola pagina come tutti che non usano il controllo
"Interruzione di pagina".
Confondi le pagine nel concetto di Access (--> GoToPage) con "pagine"
dello schermo (--> Tasti <PaginaSu> e <PaginaGi�>).
Cio� GoToPage non serve.
Se ancora vedi 5 record sullo schermo e vuoi fare con i pulsanti
cosa fanno i tasti, prova con
On Error Resume Next
DoCmd.GoToRecord , , acGoTo, CurrentRecord - 5
e
On Error Resume Next
DoCmd.GoToRecord , , acGoTo, CurrentRecord + 5
--
HTH
Karl
*********
Access FAQ: www.donkarl.com/it
Grazie Karl per la risposta.
Ho voluto aprire un nuovo post per rendere più facile la lettura del
problema.
La tua riposta oltre che per la soluzione è esauriente per farmi
capire il motivo per cui non funzionasse.
Applicando il tuo codice per il pulsante PaginaGiu tutto bene, per
quello PaginaSu succede che per andare avanti dei 5 record devo
cliccare due volte.
Così facendo va avanti di 10. Ho provato a mettere prima di
> On Error Resume Next
> DoCmd.GoToRecord , , acGoTo, CurrentRecord + 5
me.paginasu.setfocus
ma non è cambiato niente.
I due pulsanti si trovano nel piè di pagina maschera. Attendo una tua
preziosa risposta.
Grazie ancora. Ciao.
Giuseppe.
Non volendo entrare nel merito del codice suggeritoti, che vista la
provenienza sicuramente funzionerà, ti linko un demo che ho messo on-
line tempo fa, e che al suo interno contiene anche quel che chiedi...
la paginazione.
Credo ti possa esser utile.
Difficile a dire senza vedere la tua maschera.
Forse non ci sono esattamente 5 record sullo schermo ma p.e. 5,25.
Prova se aiuta spostare il focus al primo controllo posizionato in alto
nella sezione dettaglio, cio�:
On Error Resume Next
Me!TuoControlloPiuInAlto.SetFocus
DoCmd.GoToRecord , , acGoTo, CurrentRecord - 5
O spostare il focus al ultimo controllo ed usare -6 invece di -5.
Dipende dal disegno della tua maschera.
La maschera continua ha origine su una query che mostra i record solo
dopo aver selezionato nella maschera in cui vorrei spostarmi con i
pulsanti, l'idAzienda e la data da cui mostrare i record.
Nel corpo, in base all'altezza della maschera mi visualizza 8 record.
Ho messo su evento click del pulsante PaginaSu :
Me.ID.SetFocus
On Error Resume Next
DoCmd.GoToRecord , , acGoTo, CurrentRecord + 8
Appena inseriti l'idazienda e la data mi mostra i record da 1 a 8.
Dopo aver cliccato la prima volta su PaginaSu mi mostra i record da 2
a 9. Quando clicco la seconda volta va avanti di 8 record ma
aumentandoli non dal 1 record visualizzato ma dall'ultimo per cui mi
mostra i record da 17 a 24. Poi ancora avanza di uno solo (18-25) e
poi di 8 sempre partendo dall'ultimo (33-40).
Sicuramente non va bene il codice
me.id.setfocus perchè non si posiziona sul primo record di quelli
visualizzati.
Il pulsante PaginaGiu invece con lo stesso codice ma con -8 alla fine
funziona.
Cosa dovrei correggere?
Grazie Karl.
Giuseppe.
Ho adottato l'esempio propostomi da Pablitomf e finalmente dopo vari
tentativi da solo ci sono riuscito.
Ora il problema è:
se clicco sui pulsanti su e giù tutto ok.
Se premo i pulsanti della tastiera PGSU e PGGIù nonostante abbia messo
su evento keydown:
If KeyCode = 34 Then
il codice uguale a quello di pagina giu
End If
If KeyCode = 33 Then
il codice uguale a quello di pagina su
End If
Il tasto PGGIù probabilmente si posiziona su un record vuoto. Il tasto
PGSU va indietro di un record (l'ultimo) e se lo pigio ancora va
sull'ultimo record della prima pagina, se lo pigio ancora al primo
della prima pagina.
Perchè il codice non funziona?
Grazie. Ciao.
Mi correggo. La maschera aveva anteprima tasti impostato su no e
quindi non funzionava.
Ora il tasto PGGIù si sposta sull'ultimo record della prima pagina e
mi fa vedere solo quello, mentre il pulsante PGSU funziona benissimo.
Scusate ma ero convinto che tutte le mie maschere avessero l'anteprima
tasti su si.
Ciao.