Newsgroup: it.comp.appl.access
Titolo: Creare report a più colonne senza tabella come origine

Ciao a tutti, sto creando una procedura che genera dei numeri progressivi e li stampa in 
etichette; inizialmente era un'etichetta e basta quindi, siccome voglio evitare la 
creazione di tabelle temporanee che poi vengono svuotate, ho usato un'etichetta, nella 
maschera da cui apro il report, nella quale scrivo il valore da stampare.
Durante la generazione dei numeri creo una matrice con i valori, quindi la scorro e per 
ogni valore eseguo l'OpenReport.
Il problema è sorto quando mi hanno detto che le colonne sono tre e non una.
Ho pensato di usare tre etichette, ma come posso gestirle via codice?
Forse il mio non è il metodo migliore, ma non mi viene in mente un altro modo..avete 
qualche consiglio da darmi?
Grazie mille
Alessio

 Alessio
Se parli di un comune foglio di etichette da nrighe x ncolonne, io creerei
il report con la tua etichetta basato sulla query con imposta
pagina/colonne impostato a 3 e con la priorità (vert,oriz) che vuoi
Nicoletta
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 pagina/colonne impostato a 3 e con la priorità (vert,oriz) che vuoi
Ciao Nicoletta, la query però richiede l'uso di una tabella, ed io vorrei evitare l'uso di 
una tabella temporanea...
Per ora l'ho comunque usata, per superare il problema, ma non mi piace che l'mdb aumenti 
le proprie dimensioni (rendendo necessarie compattazioni più frequenti) per i molteplici 
ADD e DELETE che una tabella così comporta.
Sbaglio?
Alessio

 Alessio
Beh, allora farei così, ma una tabella di un solo record la devi creare
(senza riempirla e svuotarla sempre)
Ci metti un record soltanto come vuoi tu, poi crei un report con origine
tale tabella, ci metti la casella di testo che vuoi tu (non associata) e
sull'evento formattazione del corpo scrivi:
Option Compare Database
Option Explicit
Dim contatore As Integer
Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
 
    If contatore <= 100 Then
        Me!Testo0.Value = contatore
        Me.NextRecord = False
    End If
 
    contatore = contatore + 1
End Sub
Private Sub Report_Open(Cancel As Integer)
contatore = 1
End Sub
in questo caso potresti usare il record della tua tabella per scriverci
dentro il valore massimo della tua etichetta, o due campi uno col minimo e
uno col massimo...


 uno col massimo...
Correggimi se ho capito male:
Il Contatore contiene la quantità di progressivi da stampare, il singolo record della 
tabella TMP viene popolato di volta in volta con il progressivo da stampare.
Posto ciò, sempre che non abbia capito male, è impossibile fare un NextRecord, perchè la 
tabella ne ha uno solo, no?
Il ciclo che hai scritto può andare solo se la tabella ha più record, ma a quel punto 
siamo tornati alla soluzione classica: tabella che fa da origine dati del report e report 
impostato a N colonne, il quale gestisce i dati da sè.
Alessio

 Alessio
Vedo che non hai voluto provare...
Il nextrecord è uguale a false, quindi dice all'origine del report di non
andare al record successivo pur continuando a stampare


 andare al record successivo pur continuando a stampare
Ti chiedo scusa Nicoletta, effettivamente non avevo provato.
Ho adattato il codice che mi hai dato usando
Me.testo0 = Mtx(contatore)
nel Format del corpo e funziona.
Ero un po' fuso e non sapevo se rispondere, prima, ed effettivamente avrei dovuto 
controllare meglio ;)
Grazie ancora,
Alessio