Newsgroup: it.comp.appl.access
Titolo: Indice Report

Buongiorno a tutto il NG!
Ho provato a costruire un indice tramite un post di Roberto da casa che
funziona benissimo e crea un indice basato su un campo messo in intestazione
(nel mio caso marca)
Qui di seguito le modalità descritte da Roberto :
Creati una tabella chiamata Indice che abbia questa struttura:
IDIndice             Contatore e chiave primaria
Categoria            Testo (se il campo Categoria è di tipo Testo)
NumPagina         Numerico
Ragruppa il tuo report per Categoria chiedendo che il controllo associato
alla Categoria sia visualizzato nell'intestazione di gruppo, ovvero
Intestazione Categoria.
Imposta a Dopo sezione la proprietà Interruzione pagina della sezione
Intestazione report.
Imposta a Prima di sezione la proprietà Interruzione pagina della sezione
Intestazione Categoria.
Imposta a Prima di sezione la proprietà Interruzione pagina della sezione
Piè di pagina report.
Nella Sezione Piè di pagina report inserisci una casella di riepilogo
chiamata Elenco che abbia 3 colonne di cui la prima non visibile; imposta a
Si la proprietà Intestazione colonne della casella di riepilogo.
Come origine riga della casella di riepilogo usa il seguente codice SQL:
SELECT DISTINCTROW [Indice].[IDIndice], [Indice].[Marca],
[Indice].[NumPagina]
FROM [Indice];
A fronte dell'evento "Su formattazione" della Sezione Intestazione report
genera il seguente codice VBA:
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete * FROM Indice;"
DoCmd.SetWarnings True
A fronte dell'evento "Su formattazione" della Sezione Intestazione Categoria
(ovvero dell'intestazione di gruppo) genera il seguente codice VBA:
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Indice")
rst.AddNew
rst!marca = Me!marca
rst!NumPagina = Me.Page
rst.Update
Set rst = Nothing
A fronte dell'evento "Su formattazione" della Sezione Piè di pagina report
genera il seguente codice VBA:
Me!Elenco.Requery
Il mio probema è ottenere un indice da un campo che è nel "corpo" del report
che si chiama "codice".
Mi chiedo se è possibile ottenere un risultato anche in questo caso
Ringrazio infinitamente per ogni aiuto vorrete darmi ....e scusate la
lunghezza...:-)
Paolo

 ha scritto nel messaggio
news:878oa.20581$DN.5...@tornado.fastwebnet.it...

Se vuoi un'alternativa alla mia soluzione, vai sul Sito Comune (link qui
sotto) e nella Sezione Reports scarica il database di esempi allegato alla
FAQ intitolata "Esempi di utilizzo dei reports".
Apri il database scaricato e seleziona il Topic: intitolato How to Create a
Table of Contents or Index for a Report.
Pigiando il tasto Show Example ti verrà visualizzata l'anteprima di un
report che durante la visualizzazione crea una tabella che alla fin conterrà
il record; naturamente utilizzerai a tuo piacimento i dati di questa
tabella, al limite la userai per stampare un'altro report indice.
Spiegazioni dettagliate di come è stato realizzato l'esempio le trovi al
link:
http://support.microsoft.com/support/kb/articles/Q131/5/88.asp?PR=ACC
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


 Roberto
Grazie mille Roberto per l'indicazione, ho provato comunque, guardando qua e
la, ad applicare al corpo del report la seguente istruzione :
Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
DoCmd.SetWarnings False
   DoCmd.RunSQL "INSERT INTO TblIndiceListino (Codice, Pagine) select '" &
Me.Codice & "' AS codice, '" & Me.Page & "' AS Pagine;"
   DoCmd.SetWarnings True
End Sub
Private Sub Report_Open(Cancel As Integer)
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM TblIndiceListino;"
DoCmd.SetWarnings True
End Sub
dove su una tabella di appoggio faccio inserire tramiter SQL le pagine dove
è riportato il campo (codice) che mi serve per l'indice, previo svuotamento
all'apertura del report per reindicizzare il tutto.
Pare che funzioni piuttosto bene o per lo meno non ho notato anomalie.
Comunque sicuramente vedo cosa posso ricavare dal file sul Sito Comune.
Grazie ancora per la tua disponibilità sempre corretta e precisa
Buonaserata !
Paolo
