Xojo 2017r2 - Report Designer

Ciao a tutti,
riscontro un paio di problemi con il Report Designer (presenti anche nella release precedente).

  1. Nella sezione PageHeader ho inserito una serie di ReportField, e fin qui tutto funziona regolarmente. Se aumento l’altezza della sezione, SENZA AGGIUNGERE NULLA, tutti i ReportField hanno valore Nil
  2. Inserisco una Picture, imposto la propriet Image con l’immagine che voglio visualizzare, ma non viene visualizzato niente.

Spero che qualcuno mi sappia fornire una soluzione (tenete presente che sono abbastanza nuovo di Xojo).

Grazie.

Nedi

Ciao Nedi,
il punto 2 vero e l’ho segnalato (non ci avevo mai fatto caso onestamente)
Il punto 1 non mi chiaro: nil appare nel report generato o nell’editor e come appare nil?

Ciao Antonio, se dopo aver semplicemente aumentato l’altezza della section provo ad eseguire la stampa, mi segnala un errore nell’evento BeforePrinting di un ReportField che dovrebbe stampare una data: guardando sia gli altri ReportField che il Recordset noto che tutto Nil
Il codice sul quale si genera l’errore questo:

Dim dte As Date

dte = New Date
dte.SQLDate = me.Text
me.Text = dte.ShortDate

Grazie.

Ho provato a replicare il problema ma non ci sono riuscito

Cambiando l’altezza e generando il report, mettendo anche un break nell’evento vedo correttamente i campi e il datasource punta al primo record.

Caro Antonio, il mistero si infittisce!!! Ho messo un breakpoint sull’istruzione che genera l’errore (dte.SQLDate = me.Text) ed ho eseguito una prima volta il report. Il programma si ferma una sola volta sul breakpoint (com’ logico che sia) e il report viene visualizzato correttamente.
Dopo di che porto l’altezza della section da 106 a 110 e tutto funziona regolarmente.
Porto l’altezza a 130 e tutto funziona regolarmente.
Porto l’altezza a 150 e il programma si ferma sul breakpoint due volte: la seconda tutti i campi sono Nil…

Non ci capisco pi un piffero!

Dunque, questi sono i risultati dei miei test:
a) il report ha le seguenti sezioni con le seguenti ampiezze (in millimetri)
PageHeader = 107
GroupHeader = 0 (non si deve vedere)
Body = 5.08
GroupFooter = 25.4
PageFooter = 44.5

Posso ampliare la PageHeader fino ad un max di 146: oltre va in errore

Se accorcio la PageFooter a 40 posso ampliare la PageHeader fino a 151, dopo di che va in errore.

C’ una logica in tutto questo? Magari c’ e sono io che non la conosco.

Mi sembra strano visto che riavvii il programma ogni volta per farlo.
Riprover con le dimensioni che mi hai dato

La cosa che più mi sembra strana è che, quando superi il limite che ho indicato, i campi del PageHeader vengono impostati due volte: una prima volta con il record corrente, la seconda quando non esiste più alcun record corrente, e i campi del recordset sono tutti Nil (da qui l’errore nell’evento BeforePrinting)

Credo di avere in parte capito cosa succede: quando aumento l’ampiezza del PageHeader di quel tanto che basta a far scattare la seconda pagina, in questa seconda pagina i dati della PageHeader sono tutti vuoi (ed ecco perch vedevo il programma che passava due volte dall’evento BeforePrinting).
Il problema che nelle pagine oltre la prima Xojo non dovrebbe stampare i dati della PageHeader prendendoli dal record corrente, ma dovrebbe replicare la PageHeader iniziale.

Ultima considerazione (e poi per oggi basta!):
il problema si verifica quando il salto alla seconda pagina avviene dopo aver stampato l’ultimo record di dettaglio, prima di stampare le sezioni GroupFooter e PageFooter.
Se il salto pagina avviene quando ci sono ancora record di dettaglio tutto funziona regolarmente.

Alla fine il problema era uno solo: se dopo aver stampato l’ultimo record di dettaglio si arrivati in fondo alla pagina, il salto alla pagina successiva comporta la riscrittura del PageHeader. Non essendoci pi un record corrente l’intera sezione sar vuota.
Secondo me una volta stampato l’ultimo record bisogna tenerlo in memoria e non perderlo.
Ho risolto ricorrendo ad un artifizio che il buon Antonio Rinaldi mi aveva suggerito tempo fa, ma si tratta pur sempre di un artifizio.
Voi che ne pensate? (ammesso che qualcuno abbia seguito tutta la vicenda!)