Newsgroup: it.comp.appl.access
Titolo: focus sul primo dei record visualizzati in una maschera continua

Buongiorno a tutti.
Espongo il mio problema.
Ho una form continua con origine una query in cui i criteri dipendono dalle caselle di testo della form continua.
Una volta inseriti i dati nelle due caselle di testo, la query restituisce alla maschera continua n record.
La maschera contiene sei record per volta, cliccando su un pulsante visualizzo altri sei record. Se però nel momento in cui clicco sul pulsante il focus si trova sul terzo record mi visualizza i 6 record successivi a partire dal terzo e non dal primo.
Quindi ho la necessità di spostare prima il focus sul primo record visualizzato e poi di andare avanti con 
DoCmd.GoToRecord , , acGoTo, Me.CurrentRecord + 6
Grazie.
Giuseppe.

Giuseppe explained on 06-06-12 :

Non me lo dire, è una faticaccia inenarrabile!
Che poi non serve a niente, è solo una questione estetica.
Immagino non ti sarai fatto mancare una form in esacromia 3D.
Già, perché quel che conta è quel che appare, poi se il programma è 
fatto coi piedi e funziona a c... di cane... cosa importa?
 
Hai provato con:
acGoTo, CurrentRecord + 6 - CurrentRecord Mod 6
???
 
Bruno
 
 


Ciao Bruno.
La form l'ho impostata così pensando fosse di più facile interpretazione.
Ho provato il tuo suggerimento ma va avanti di sei record a partire da quello in cui si trova il focus e non dal primo visualizzato.
Giuseppe.

 in cui si trova il focus e non dal primo visualizzato. Giuseppe.
 
Prova così:
=======================
Private Sub Command14_Click()
 
If (CurrentRecord Mod 6) = 0 Then
    DoCmd.GoToRecord , , acGoTo, CurrentRecord + 1
Else
    DoCmd.GoToRecord , , acGoTo, CurrentRecord + 7 - (CurrentRecord Mod 
6)
End If
 
End Sub
========================
 
ed accertati che - cosa IMPORTANTE - la scheda mostri solo 6 record, e 
del sesto record non tutta l'altezza della cella.
Basta che tu ne porti via, dimensionando la scheda, una frazione di 
millimetro.
 
È un sistema barbaro ma al momento non mi viene in mente altro.
 
Bruno
 
 


Ciao Giuseppe,
se non ho capito male, basta un requery per spostare il focus sul primo record:
Me.Requery
DoCmd.GoToRecord , , acGoTo, Me.CurrentRecord + 6
Ciao Vladimiro


Oppure:
DoCmd.GoToRecord , , acFirst
DoCmd.GoToRecord , , acGoTo, Me.CurrentRecord + 6
Di nuovo Vladimiro.


Bruno ti ringrazio e ringrazio (sconosciuto) per i Vs, interventi.
Pensavo bastasse un rigo di codice per spostare il focus.
Nella form, anche grazie all'aiuto di Alberto Morelli e all'esempio se non ricordo male  di Massimiliano Amendola, in base al conteggio dei record restituiti dalla query, calcola il numero di pagine ed in base alla pagina visualizzata e ai record da visualizzare, cliccando sul pulsante per visualizzare i record successivi ci sono diversi if.
Posto il codice completo così è più semplice farmi capire, perchè finora le soluzioni proposte non hanno purtroppo funzionato.
Ecco il codice sul pulsante:
If Me.PAGINA < Me.U_PAGINA Then
    Me.PAGINA = Me.PAGINA + 1
 
    Me.S_REC = Me.S_REC + Me.ADD_REC
    Me.E_REC = Me.E_REC + Me.ADD_REC
End If
Me.Etichetta34.Caption = "<- " & Me.PAGINA & " ->"
If (Int(DLookup("Ultimofat", "[varultfat]")) - Me.CurrentRecord) = 6 Then
 
DoCmd.GoToRecord , , acGoTo, Me.CurrentRecord + 6
Else
If (Int(DLookup("Ultimofat", "[varultfat]")) - Me.CurrentRecord) < 7 Then
DoCmd.GoToRecord , , acGoTo, Me.CurrentRecord + (Int(DLookup("Ultimofat", "[varultfat]")) - Me.CurrentRecord) - (Int(DLookup("Ultimofat", "[varultfat]")) - Me.CurrentRecord)
 
Progr.SetFocus
Me.cmd_AVANTI1.SetFocus
 
Else
 
DoCmd.GoToRecord , , acGoTo, Me.CurrentRecord + 7
DoCmd.GoToRecord , , acGoTo, Me.CurrentRecord - 1
 
Progr.SetFocus
Me.cmd_AVANTI1.SetFocus
 
End If
End If
 
Grazie.
Giuseppe.


Scusa Vladimiro nel mio ultimo posto ti ho citato come (sconosciuto) perchè vedevo quello, mentre sotto ti sei firmato.
Grazie del tuo intervento, ma non funziona. Ho postato tutto il codice, nella speranza di riuscire a risolvere.
Giuseppe

 hanno purtroppo funzionato.
[...]
 
La soluzione che ti ho proposto non funzionerà a casa tua, a casa mia 
funziona perfettamente.
 
Comunque l'importante è che in qualche modo tu abbia risolto.
 
Bruno
 
 


Ciao Giuseppe, dire che non funziona è un pò riduttivo non trovi? Dovresti spiegare quello che succede. Poi, a prescindere dal codice, quello che ti ho suggerito determina lo spostamento sul primo record nella maschera continua (dove dovrebbe risiedere il pulsante)prima di spostarsi sul settimo record della stessa maschera continua.Ora, se la struttura del db è diversa da come l'ho descritta, magari con la presenza di sottomaschere, allora il discorso cambia e sarebbe opportuno che mettessi a disposizione il db(naturalmente con lo stretto necessario) al seguente spazio web gratuito:
http://skydrive.live.com/
 
Ciao Vladimiro.
 


Ciao Vladimiro, ciao Bruno. Scusate il ritardo ma ho avuto tanto da fare.
E' la prima volta che uso lo spazio web che mi hai indicato, spero di aver fatto bene.
Questo è il link:
https://skydrive.live.com/#cid=1436911FD22E7470&id=1436911FD22E7470!132&sc=documents
 
Grazie.
Giuseppe.


Ciao Giuseppe, io il db l'ho scaricato e ... adesso che dovrei fare visto che la maschera RicercaAzienda non esiste, la casella combinata cboprimafattura non è visibile e tra l'altro rendendola visibile è priva di dati ecc... ecc...
Vladimiro.


Ciao Giuseppe, anche se metto come id il numero 2 mi fa vedere solo due dati compresa la data del 01/12/2009 e nel corpo della maschera nulla.
Vladimiro


Se metti come azienda "1" e confermi la data che ti propone "09/02/2009" la maschera si popola di 207 record. Se clicchi su Pg.Av. con il focus sul primo record si sposta al record n. 7 se invece il focus si trova ad es. sul terzo record la maschera successiva anzichè mostrare i record dal 7 al 12 li mostra dal 9 al 14. 
A me anche se cambio la data funziona.
Fammi sapere al limite lo rimando.
Grazie.
Giuseppe.


Ciao Giuseppe, a me la maschera non si popola probabilmente perchè non riesco a capire il significato di confermare la data?!!!
Vladimiro


Ciao Giuseppe, ho tolto i filtri nella query che dà origine alla maschera in modo da visualizzare tutti i record. Anche se non funziona il primo passaggio che dovrebbe far visualizzare i primi 6 record, la sostanza non cambia; nel senso che mi pare ovvio che non si possa fare quello che chiedi in quanto i records, anche se non li vedi nel monitor, ci sono tutti. Basta reinserire la barra di scorrimento verticale nella maschera e ti accorgi di quello che ti sto dicendo. Senza entrare nel merito di quello che hai realizzato e soffermandomi solo sulla tua richiesta, quello che mi viene in mente che si potrebbe fare, è creare ad esempio in apertura della maschera la suddivisione di tutto il recordset in gruppi di record da 6 e poi tramite casella combinata sceglierti il gruppo che vuoi.
Fammi sapere.
Ciao Vladimiro


Grazie Vladimiro.
Se non è possibile ottenere quel che chiedo, credo che opterò per la visualizzazione della barra di scorrimento verticale.
La seconda opzione non mi piace, perchè non posso e non vorrei rinunciare ai filtri (n. azienda e data di inizio) oltre a non gradire la casella combinata al posto dei pulsanti PgAv e PgInd.
Ciao.
Giuseppe.