Newsgroup: it.comp.appl.access
Titolo: Creare un indice tipo libro

Qualcuno mi sa dire come è possibile  creare un indice (come quello di un
libro, descrizione e numero di pagina)?
Mi spiego meglio:
Ho un elenco di codici articolo (numeroso, circa 3000) relazionati 1 a molti
con la tabella "Categoria Articolo".
Raggruppando per categoria, creo un report ordinato alfabeticamente, dove
per ogni categoria sono elencati tutti gli articoli secondo la loro
relazione con la tabella Categoria.
Fin qui nulla di strano.
Ho la necessità, per facilitarne la ricerca nel listino stampato, di creare
un report che faccia da indice, riportando l'elenco delle categorie e il
loro numero di pagina all'interno del listino stampato.
Credo che io debba leggere il numero di pagina ad ogni cambio di categoria
di prodotto, ma non so come fare.
Qualcuno può p.f. aiutarmi?
Grazie.
Omar.

 ha scritto nel messaggio
news:vvML6.20418$RX4.1...@news.infostrada.it...

Ho risolto un problema simile al tuo, forse in modo complicato...
- Ho dovuto impostare il numero massimo di righe per pagina (50);
- poi con una query di creazione tabella (chiamata per esempio Step_2) ho
inserito due nuovi campi: pagina e riga;
- ho creato una query di selezione che mi ordina i dati (di Step_2) come mi
servivano;
- con una ruotine scorro i record in Step_2 numerando la riga e ogni break
significativo: numero righe = 50 o un diverso argomento; riparte la
numerazione aggiornando il campo del numero di pagina (pagina+1) e riga
(riga = 1);
- poi con un'altra query mi faccio restituire il valore minimo del campo
pagina e utilizzando la stessa per un report ho l'indice della
pubblicazione.
Sperando di essermi capito.
Ciao.

 wrote in message
9dojg5$bpr$1...@canarie.caspur.it...



Per favore scrivi dopo il messaggio precedente come faccio io, grazie.
Il valore della pagina lo puoi leggere con Page e Pages (vedi help), solo
che la costruzione dell'indice dove la fai? Sempre su un altro report che
leggerà i dati da un'altra tabella che avrai riempito con l'esecuzione del
report precedente (che legge le pagine). Sembra un cane che si morde la
coda...
Ciao.

 coda...
A meno che non stampi prima ile pagine ( e intanto crei l'indice in una
tabella) e poi stampi l'indice prendendo i valori dalla tabella di rpima

 tabella) e poi stampi l'indice prendendo i valori dalla tabella di rpima
Quello che intendevo dire io...
Ciao.

 coda...
A meno che non stampi prima ile pagine ( e intanto crei l'indice in una


tabella) e poi stampi l'indice prendendo i valori dalla tabella di rpima
Scusa, ma non capisco.
Mando in anteprima il report e intanto creo l'indice in una tabella?
Ma come?
Se non capisco male, devo intervenire sull'evento "formattazione", vero?
Come faccio a leggere il nuovo valore del raggruppamento quando questo
cambia mentre si riempie il report?
(leggere la pagina a questo punto non dovrebbe essere un problema, ma come
intercetto il cambio di valore del raggruppamento?)
Mi sfugge qualcosa... che avrei piacere qualcuno mi facesse afferrare!
Grazie a tutti.
Omar.
-- 
Posted from [195.206.0.11] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Omar.
Era proprio per questo motivo che io mi creavo prima la "struttura"
dell'indice scorrendomi i record (ordinati) e intercettando io il cambio di
valore del raggruppamento.
Se, e dico se, è possibile che scorrendosi le pagine di un report e
intercettando gli eventi giusti (se ci sono) ci si possa creare una tabella
con l'indice, a mio avviso è una "forzatura". Ogni volta che l'indice cambia
devo per forza scorrermi tutte le pagine del report per ricrearmi la
tabella; io ho applicato il metodo illustrato a due pubblicazioni (interne
all'ufficio) entrambi di 600 pagine circa e ho (diciamo) perfezionato la
procedura in modo tale da poter impostare l'inizio (in numeri di pagine) di
sezioni (tematiche differenti).
Il risultato è che posso inserire "tranquillamente" dei nuovi argomenti
(altri report con tabelle, grafici etc..) e ricrearmi l'indice senza aprire
nessun report.
Tutto questo prevede un'analisi della pubblicazione e delle sue parti:
numero delle sezioni, ordine dei dati delle tabelle, grandezza dei grafici
etc etc. che mi ha portato a crearmi un'altra tabella (che chiamo setup)
dove posso inserire per ogni sezione l'inizio del numero di pagina e il
numero delle righe per pagina che deve contenere.
La fine di tutto questo lavorio è (udite udite) quattro macro; una che
esegue tutti i passaggi senza l'intervento dell'operatore, le altre sono i
vari step.
Ciao.



Si, bisogna "ciclare" con i report, ti do ragione, ma non ci sono vincoli
relativi a numeri di pagine o di sezioni da configurare.
Ognuno scelga il prezzo che preferisce pagare, per fare quello che vuole!
Cmq, grazie, mi piace anche questa soluzione.
Se a qualcuno interessasse, io invece ho risolto così:
Ho usato due report, uno chiamato "Listino" e uno chiamato "Indice", che
funzionano separatamente e subordinatamente uno con l'altro, nel senso che
per far funzionare il tutto correttamente è necessario lanciare per primo (è
sufficiente l'anteprima) il report "Listino" (tramite il quale riempio una
tabella di comodo) e solo dopo il report "Indice" (che prenderà i valori
appunto dalla tabella di comodo).
Purtroppo non riesco a legarli o metterli uno dentro l'altro, e ottenere una
sola cosa.
Ad ogni buon conto, per fare una piccola introduzione al problema,
la partenza è un listino, costituito dalle tabelle Tblcategoria e
Tblprodotti relazionate tra loro.
Il report "Listino" è un normale report con un raggruppamento (Articolo),
"Indice" è il nostro cercato indice in stile libro basato su quanto
contenuto in "Listino".
In sintesi:
1) Creo una tabella di comodo, TblIndiceListino, con i seguenti campi:
     RaggArticolo (è il campo che viene raggruppato nel report e che
necessita della numerazione)
     Pagina
2) Nell'evento "apertura" del report "Listino" svuoto la tabella di comodo
con questo codice:
      DoCmd.SetWarnings False
      DoCmd.RunSQL "DELETE * FROM TblIndiceListino;"
      DoCmd.SetWarnings True
   in modo da non avere nella tabella stessa dati non coerenti col report
che intendo stampare.
3)  Nell'evento "su formattazione" della sezione "Intestazione" NON del
report ma del campo da raggruppare (Articolo), metto questo codice:
   DoCmd.SetWarnings False
   DoCmd.RunSQL "INSERT INTO TblIndiceListino (RaggArticolo, Pagina) _
                select '" & me.Articolo & "' AS Espr1, '" & me.Page & "' AS
Espr2;"
   DoCmd.SetWarnings True
In questo modo scrivo nella tabella di comodo i valori che interessano
l'indice che devo creare, man mano viene formattato il report (in sostanza
in questo punto Access intercetta il nome dell'articolo così come
raggruppato, e il relativo numero di pagina del report in cui si trova
esattamente quell'articolo.
4) A questo punto nella TblIndiceListino ho i dati di ogni intestazione di
raggruppamento (Articolo), e il suo esatto numero di pagina che ha nel
report "Listino". E' facile quindi preparare il secondo report "Indice" che
riassume questi dati.
ATTENZIONE!
Se nel report "Listino" selezionate "ripeti sezione" nel raggruppamento (in
modo che ogni volta che cambia pagina, sia ripetuto in alto), troverete per
quei raggruppamenti che terminano in concomitanza con il fine o inizio
pagina, due o più numeri di pagina (Praticamente li legge due volte) . Si
ovvia a questo, prendendo come record suorce del report "Indice" non la
tabella stessa, ma una query di raggruppamento sul campo "Articolo" e valore
minimo per numero di pagina come criteri di aggregazione.
Ciao, e grazie.
Omar.

tabella) e poi stampi l'indice prendendo i valori dalla tabella di rpima
Ho trovato il modo per fare tutto in un colpo solo!
In pratica basta mettere questo codice nell'eventoi click del tasto che fa
partire la stampa del report:
    stDocName = "RptElencoElementiListinoESTESO"
    DoCmd.OpenReport stDocName, acPreview
    stDocName = "RptElencoElementiListinoINDICE"
    DoCmd.OpenReport stDocName, acPreview
Far stampare cioò in sequenza i due report.
Il risultato è che a video trovi aperti due report diversi, ma con i dati
coerenti, relativi al tuo listino, più l0indice che riprende le pagine come
stampate nel listino stesso.
Grazie.
Ciao.


 Cmq, grazie, mi piace anche questa soluzione.
Ti pare; Ciao.