Newsgroup: it.comp.lang.visual-basic
Titolo: Datareport: data e numero di pagina

Buongiorno a Tutti!!!
Ho un problema che riguarda il datareport.
Avrei la necessità di inserire due label nella sezione PieDiPagina;
la prima contenente la data odierna e la seconda dovrebbe avere il numero
di pagina corrente, ad esempio pagina 1 di 3.
Non riesco a gestire le label da codice. Come si potrebbe fare? 
Grazie Mille a Tutti!!!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Non riesco a gestire le label da codice. Come si potrebbe fare?
La data non è un problema, perchè comunque puoi cambiare la caption di una
label inserita a design time attraverso l'object model del datareport.
Per la pagina invece non puoi, perchè la caption è statica e non varia
all'interno del datareport.
Anche gestendo gli eventi asincroni del ciclo di vita del datareport, la
generazione delle singole pagine avviene dopo che le caption sono state
'inchiodate', quindi non sono più manipolabili.
Quello che puoi fare, è guardare quei caratteri speciali tipo %p, %i, %t,
ecc..., che vengono sostituiti a run-time da valori significativi.
Non c'è documentazione, ma puoi provare mettendo una label con dentro in
sequenza tutti i caratteri con il % davanti, poi guardi in anteprima.
Altrimenti so che c'era un sito (non MS) che li elencava. Su MSDN io non ho
mai trovato la documentazione relativa.
Ciao
Alberto

 mai trovato la documentazione relativa.
Ciao Albe V°!!!
Ti ringrazio per la spiegazione sei stato molto gentile, però non ho
capito una cosa, l'object model del datareport di cui tu parli, è la
proprietà Object del datareport? 


 proprietà Object del datareport?
Beh, no...
E' il modello degli oggetti del datareport, simile a quello di tante altre
strutture in VB.
Ad esempio, per accedere ad una RptLabel della tal sezione:
DataReport1.Sections.Item("Tal_Sezione").Controls.Item("Tal_Controllo").Capt
ion="Ciao"
Comunque per le tue necessità ho visto che %p dà la pagina e %d dà la data.
Non ho trovato il simbolo per il numero di pagine totali (che però potresti,
forse, gestire all'interno degli eventi asincroni del datareport,
modificando parte della RptLabel in cui inserisci %p).
Ciao
Alberto

 Non ho trovato il simbolo per il numero di pagine totali
%P (maiuscolo) pagine totali
%p (minuscolo) pagina corrente
--
Salutoni
Sergio

 ion="Ciao"
Ho scritto nell'evento Initialize del datareport
drElencoFornitori.Sections.Item("PieDiPaginaPagina").Controls.Item("lbData").Caption
="Ciao" , ma con il debug.print mi da falso.
Cmq ho messo nella caption della prima label direttamente %D che da la data
per esteso e
nell'altra, Pagina %p di %P. Ora funziona!!:) evvai!!!
Non conoscevo questa possibilità di mettere le %d o %p, neanche sulla guida
le ho trovate.
Ma di che si tratta?
Grazie Mille a te e a Sergio!!!!
SMACK SMACK!!!!
--------------------------------
Inviato via 
http://usenet.libero.it

 Non ho trovato il simbolo per il numero di pagine totali
a parte quanto detto nell'altro post, qualcosa, indirettamente si riesce a
sapere da vb.
Dalla finestra progettazione del date report, bottone destro del topo su una
sezione del report, dal menù contestuale scegliere inserisci controllo, è
possibile introdurre la data in vari formati, più pagina/pagine.
Non so se siano elencate tutte le possibilità.
--
Salutoni
Sergio

 ="Ciao" , ma con il debug.print mi da falso.
Non capisco il discorso di "debug.print mi dà falso".
Comunque, diciamo che se non hai rinominato le sezioni, il piè di pagina
dovrebbe essere qualcosa tipo "Section5", per cui dovresti mettere:
drElencoFornitori.Sections.Item("Section5").Controls.Item("lbData").Caption
= "Ciao"
Comunque se hai già risolto con i %, tieni buona questa cosa per le mille
altre occasioni in cui dovresti inserire dei testi fissi per tutto il
report, ma da definire in run-time (caso tipico, il nome dell'utente che
lancia la stampa).
Ciao
Alberto

 lancia la stampa).
D'accordo, grazie!!!


 label lbData, non scrive Ciao, non accade nulla.
Allora funziona perfettamente.
Ciao
Alberto
PS: tu sai la differenza fra l'operatore = come assegnazione e l'operatore =
come confronto, vero?

 come confronto, vero? Si, perchè?:)


 Si, perchè?:)
Spero, ma veramente in modo sincero, che tu stia scherzando, facendo finta
di non capire.
Credo che sapere la differenza fra queste due forme sia una base
imprescindibile:
1) Print A=B
2) A=B
Ciao
Alberto

Se io nell'evento DataReport_Initialize scrivo:
drElencoFornitori.Sections.Item("PieDiPaginaPagina").Controls.Item("lbData").Caption
= "Ciao"
quando avvio il programma e si genera l'anteprima di stampa nella label
lbData non c'č scritto niente.
Se io scrivo:
drElencoFornitori.Sections.Item("PieDiPaginaPagina").Controls.Item("lbData").Caption
"Ciao", genera errore:
Errore di run-time '438' Proprietą o metodo non supportati dall'oggetto.
Ora non so perchč a me non funzioni, perņ conosco la differenza tra
assegnare il valore di B ad A e stampare il valore di A.


 assegnare il valore di B ad A e stampare il valore di A.
Guarda che io ho detto una cosa diversa, e proprio il fatto che tu non mi
stia seguendo mi convince che tu tu non sappia esattamente quello che stavi
facendo.
Non ho mai detto che stavi stampando il valore di A, ma che stavi stampando
il confronto fra A e B, ossia Print A=B, perņ, nei tuoi post, ti stupivi del
fatto che, facendo Print A=B, dopo aver stampato Falso tu non ti ritrovassi
A effettivamente uguale a B, cosa che invece io ritengo abbastanza ovvia.
Ciao
Alberto

 A effettivamente uguale a B, cosa che invece io ritengo abbastanza ovvia.
E' vero, non hai mai parlato di voler stampare il valore di A, però mi hai
chiesto
se conoscevo la differenza tra Print A=B e A=B.
Allora per sapere cosa contiene la caption della label come devo fare?


 Debug.Print miaVar
Allora mi sa che stiamo parlando di cose diverse, perchè a me quel 4 suona
molto strano. Avrei scommesso sul 3.
E facendo
drElencoFornitori.Sections.Item(4).Controls.Item("lbData").Caption = "Ciao"
oppure
drElencoFornitori.Sections.Item(3).Controls.Item("lbData").Caption = "Ciao"
non funziona comunque?
Ciao
Alberto

 non funziona comunque?
Con il 4 non accade nulla, non scrive niente nella label, con il 3 genera
errore:
errore di run-time '8574'
impossibile trovare l'oggetto lbData
perchè la lbData è in quella section non c'è.


 Con il 4 non accade nulla, non scrive niente nella label
Facciamo l'ultima prova per capire cosa sta succedendo:
A design-time, prova a scrivere "Pippo" come caption della label, lasciando
nell'Initialize:
drElencoFornitori.Sections.Item(4).Controls.Item("lbData").Caption = "Ciao"
A run-time, quando guardi l'anteprima, vedi regolarmente "Pippo", o la label
proprio non si vede?
Ciao
Alberto

 proprio non si vede?
Fatto. Quando guardo l'anteprima vedo "Pippo" ma di "Ciao" neanche l'ombra.
Ma da che potrebbe dipendere?
