Newsgroup: it.comp.appl.access
Titolo: ridimensionamento automatico casella di riepilogo

Buonasera.
Ho creato una form in cui inserisco le attività da fare con relative scadenze.
Ho creato inoltre una maschera, al cui interno ho una casella di riepilogo che mi esplode solo i record non eseguiti e quelli da eseguirsi entro 30 giorni.
Vorrei che l'altezza di questa maschera e/o relativa casella di riepilogo fosse dinamica in base ai record.
Su internet ho trovato questo codice ma sta scritto che va bene per la maschera (fonte 
http://www.archivum.info/microsoft.public.it.office.access/2006-08/00118/Re-dimensionare-una-maschera.html
).
Secondo voi è fattibile? Mi date qualche dritta?
Grazie.
 
Private Sub Form_Open(Cancel As Integer)
Dim intNumRec as integer
Dim intAltezza as integer
 
 
 
   'Con il metodo MoveSize regoliamo l'altezza della maschera.
   'Per fare ciò impostiamo il quarto argomento del metodo MoveSize
   'con il calcolo (intAltezza * intNumRec) + 800.
   'intAltezza è l'altezza di un singolo record
   '800 è l'altezza dell'intestazione della maschera e della barra del
titolo.
 
'Calcoliamo il numero di record
   intNumRec= Me.RecordsetClone.RecordCount
 
   intaltezza = 400     '  mettere qui l'altezza del corpo quando visualizza
un solo record
 
   DoCmd.MoveSize 1440, 2400, , (intAltezza * intNumRec) + 800
 
End Sub

Il controllo listbox espone la proprietà HEIGHT e WIDTH il movesize come hai letto si applica solo alle maschere/report.
Se hai dubbi puoi sempre aprire la guida in li da e verificare trovi i dettagli.
 
@Alex


Grazie Alex.
Per il momento ho risolto eliminando la casella di riepilogo e impostando la form a maschera continua e funziona. Poi approfondisco la guida con le proprietà che mi hai indicato tu.
Ma come faccio ad evitare l'ultimo record che è vuoto?
Saluti.
Giuseppe


Non vorrei avere le idee poco chiare... ma da usare una Listbox a estire Maschere continue è molto diverso concettualmente... mi chiedo dove sta il ripensamento... ma... va bene.
 
Per non avere l'ultimo Record VUOTO devi impedire le AGGIUNTE.
 
@Alex

 Per non avere l'ultimo Record VUOTO devi impedire le AGGIUNTE.
 
Nella form ho messo No a Consenti aggiunte ma nell'origine dati la Query mi restituisce i record in base ai criteri ma anche un ultimo record vuoto con l'asterisco dove mi consente di scrivere dati nei campi.
Grazie.
 
Giuseppe


Ho studiato la proprietà Eight e sono arrivato a questo punto.
Su evento apertura della form calcolo il numero dei record sia della form che della casella di riepilogo:
Private Sub Form_Open(Cancel As Integer)
   intNumRec = Me.RecordsetClone.RecordCount
   intAltezza = 400     
 
   DoCmd.MoveSize 17000, 0, , (intAltezza * intNumRec) + 10
 
Me!Elenco0.Height = Me!Elenco0.ListCount * 567 * 0.5
End Sub
 
Il risultato ottenuto è come lo desidero solo che per effetto del record con l'asterisco alla fine dell'origine dati ho dovuto aggiungere +1 al conteggio dei record sia della form che della casella di riepilogo.
Sicuramente il metodo utilizzato non è coinciso ma funziona.
Spero in consigli su come ottenere lo stesso risultato con meno acrobazie.
Grazie.
Giuseppe.

Se lo applichi alla Maschera COntinua come fai è da migliorare e corregere... tieni poi presente che se la Maschera ha Intestazione e PieDiPagina Maschera vanno SOMMATI...
 
QUindi ipotizzado una Maschera continua, abbiamo che il Numero di Record impatta solo sulla Sezione [acDetail] e non su tutto:
 
Dim TotHeight As Integer
Dim iRecCount As long
Constant cBordForm as Integer=5
Me.RecordsetClone.MoveLast
Me.RecordsetClone.Bookmark=me.Bookmark
 
iRecCount=Me.RecordsetClone.RecordCount
 
TotHeight =(iRecCount+1) * Me.Section(acDetail)
TotHeigh =TotHeigh + Me.Section(acHeader).Height  ' Se hai l'Intestazione
TotHeigh =TotHeigh + Me.Section(acFooter).Height  ' Se hai il PieDiPagina
TotHeigh = TotHeigh  + cBordForm*2 ' 2 Volte il Bordo in quanto c'è sopra e sotto
 
DoCmd.MoveSize 17000, 0, , TotHeigh
 
 
@Alex


Grazie tante Alex.
Ho utilizzato la maschera singola con la sottomaschera, pertanto il tuo codice lo terrò in considerazione per una eventuale form continua da ridimensionare.
Un'ultimo suggerimento: come faccio a non far aprire la form se i record dell'origine dati sono pari a 0? E comunque non ho risolto il problema di non far uscire nell'origine dati, il record vuoto alla fine.
Giuseppe

 Giuseppe
 
@Alex


Alex scusa l'ignoranza ma non capisco.
In una query o nell'origine dati di un una maschera o casella di riepilogo che ha SELECT ecc.. e relativi criteri non vedo la possibilità di impostare la proprietà ConsentiAggiunte=False. Nella maschera l'ho già fatto ma è ininfluente perchè l'origine dati mi esplode anche il record vuto.
Scusa.
Giuseppe

 Giuseppe
 
@Alex


Alex ho risolto e capito la differenza.
Innanzitutto il record vuoto alla fine non lo avevo nella maschera o nella casella di riepilogo ma andando a vedere i record restituiti dalla query (origine dati di entrambe) in visualizzazione foglio dati.
Il risultato che volevo visivamente ottenere, che era comunque ininfluente, era come quello delle query di raggruppamento.
Quindi tutto ok. 
Adesso mi concentro sul non far aprire la maschera in assenza di record seguendo il tuo consiglio di qualche risposta precedente.
Grazie ancora.
Giuseppe