Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

riproposizione problema cambio pagina in maschera continua

38 views
Skip to first unread message

Giuseppe

unread,
Nov 24, 2009, 3:53:36 AM11/24/09
to
Mi scuso per il nuovo post, ma a distanza di tempo ho riprovato ma
non funziona.
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?

Karl Donaubauer

unread,
Nov 24, 2009, 7:59:07 AM11/24/09
to
Giuseppe wrote:
> Mi scuso per il nuovo post, ma a distanza di tempo ho riprovato ma
> non funziona.

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


Giuseppe

unread,
Nov 24, 2009, 10:51:05 AM11/24/09
to
On 24 Nov, 13:59, "Karl Donaubauer" <NoS...@donkarl.com> wrote:
> Giuseppe wrote:
> > Mi scuso per  il nuovo post, ma a distanza di tempo ho riprovato ma
> > non funziona.
>
> 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/...

>
>
>
> > 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.

pablitomf

unread,
Nov 24, 2009, 11:18:33 AM11/24/09
to

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.

http://www.accessgroup.it/HomeArgomenti.asp?ID=56&Oggetto2=Personalizza%20maschera%20da%20codice%20VBA

Credo ti possa esser utile.

Karl Donaubauer

unread,
Nov 24, 2009, 11:42:21 AM11/24/09
to
Giuseppe wrote:
> Karl Donaubauer wrote:
>>
>> Perch� non posta un link alla vecchia discussione
>> ...
>> 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.
>> ...

>> 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
> ...

> 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.
> ...

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.

Giuseppe

unread,
Nov 25, 2009, 3:51:56 AM11/25/09
to
On 24 Nov, 17:42, "Karl Donaubauer" <NoS...@donkarl.com> wrote:
> Giuseppe wrote:
> > Karl Donaubauer wrote:
>
> >> Perché non posta un link alla vecchia discussione
> >> ...
> >>http://groups.google.com/group/it.comp.appl.access/browse_frm/thread/...

> >> ...
> >>> In una maschera continua ho messo due pulsanti "PgSu" e "PgGiu" per
> >>> andare avanti o indietro con le pagine.
> >> ...
> >> 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
> > ...
> > 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.

> > ...
>
> 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.
>
> --
> HTH
> Karl
> *********
> Access FAQ:www.donkarl.com/it

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.

Giuseppe

unread,
Nov 26, 2009, 4:45:55 AM11/26/09
to

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.

Giuseppe

unread,
Nov 26, 2009, 6:42:37 AM11/26/09
to

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.

0 new messages