Se volete sapere come formattare le date…

In questo post oltre al commento sulla nuova release potete anche vedere le componenti utilizzabili per formattare un oggetto dateTime come volete.

Ho provato ad eseguire un report con la versione 2019r3, sostituendo il RecordSet con il nuovo RowSet (e cambiando tutto quello che ci sta dietro: Field -> Column, BOF->BeforeFirstRow ecc.ecc.).
Ma quando arrivo al metodo Run del Report vedo che vuole i vecchi parametri (RecordSet, PrinterSetup) e, naturalmente, non funziona.
Anche i progetti di esempio installati con la nuova versione stanno utilizzando i RecordSet e non RowSet.

Ho sbagliato qualcosa io o veramente cos?
Dobbiamo “rispolverare” il tuo RowSetBridge?

Se guardi l’esempio List of product Preview, realizzato direttamente con i rowset e funziona.
Puoi confrontarlo con il tuo codice segnalarmi se ci sono problemi?

Il report da te indicato funziona, ma il mio no: evidentemente c’ qualcosa da me che tocca.
Questo il codice:

// Esecuzione Report "ProgrammaAllenamenti"

Dim ps As New PrinterSetup
Dim rpt As New ProgrammaAllenamenti

Dim RS As RowSet       // attivit estratte

RS = oCalendario.ElencoAttivitaProgramma(txtAnno.Text.Val, popMesi.ListIndex + 1,  txtSquadra.Text.Trim)

// Nessuna attivit estratta
If RS.BeforeFirstRow And RS.AfterLastRow Then
  lblMsg.Text = "Non sono presenti attivit a fronte dei parametri inseriti."
  Return
End If

' ---------------------------------------------
// carico le impostazioni della stampante
Dim SetupString As String
'SetupString = ReadSetupString("PrinterSettings_1.txt")      // A4_1
SetupString = ReadSetupString("PrinterSettings_3.txt")      // PDF
If SetupString <> "ERRORE" Then
  ps.SetupString = SetupString
End If
' ---------------------------------------------
ps.Landscape = False


ps.MaxHorizontalResolution = 300
ps.MaxVerticalResolution = 300
Dim g As Graphics 

g = OpenPrinter(ps)
If g <> Nil Then
  If rpt.Run( RS, ps ) Then 'If the report runs successfully
    If rpt.Document <> Nil Then rpt.Document.Print(g)
  End If
End If

Non ci vedo niente di strano.ma il metodo Run vuole un RecordSet.

Chiedo venia!!! Il problema non il metodo Run che vuole un RecordSet ( la stessa cosa anche nel report di esempio), ma un problema nel report (l’ho duplicato da un altro report, ed rimasta l’indicazione di un campo inesistente nel Group by Field.
Avendo per azzerato la propriet Height non riesco pi a toglierlo e comunque non mi spiego perch con la 2019r1.1 il r eport funzioni…

Probabilmente perch il rowsetBridge pi robusto e permissivo della loro implementazione (basata sulla prima release)
In quella pubblica ho dovuto introdurre un controllo in pi perch nella 2.1 veniva richiesto un campo con etichetta vuota (equivalente ad un campo non esistente). Probabilmente hanno corretto questo campo extra, ma evidentemente se chiedi un campo non esistete il report va in errore (a mio avviso dovrebbe segnalarlo ma non andare in errore)

OK: eliminato qualunque riferimento a campi non esistenti il report funziona!!

Grazie Antonio!!

Ho riscontrato una differenza tra la 2019r3 e le versioni precedenti: nella sezione PageHeader del report ho una label che imposto con un campo del Datasource: il record per contiene tutti Nil (evidentemente a livello di PageHeader non ancora stata fatta la lettura del primo record).

Probabilmente non hanno implementato il moveToFirstRow nel metodo run del loro bridge.
Prova a segnalare il bug, io ho gi privatamente segnalato che con un campo non esistente il report segnala un errore (ma alla fine funziona in ogni caso, solo che te lo segnala per ogni record): ora o non generi l’errore (come prima) o lo rendi “prendibile” in modo da poter raccogliere informazioni sull’errore e segnalarlo.

Nel tuo caso, ad esempio, il report alla fine funzionava e lasciava il relativo campo vuoto (almeno se compili l’applicazione) e in debug puoi vedere l’errore e il campo mancante.

Non sono abilitato a inserire nuovi Case nel Feedback…
A me dava un errore in fase di esecuzione del report (solo in debug mode, perché non ho ancora la licenza R3 e non riesco a compilare) per cui il progetto termina l’esecuzione.
Non potendo entrare nell’Inspector della sezione perché avevo impostato Height=0, ho risolto facendo un a ricerca del nome del campo errato e sostituendolo con stringa vuota.

Strano, qui risulti XojoPro e Pre-release tester per cui l’accesso al feedback garantito e pure con il moltiplicatore di punti.

Non avevo mai notato che non potevi cambiare l’altezza della sezione una volta impostata a zero, un bug e l’ho appena segnalato come (https://xojo.com/issue/58633)]58633

In ogni caso puoi salvare il report in formato

[quote]Antonio Rinaldi
Strano, qui risulti XojoPro e Pre-release tester per cui l’accesso al feedback garantito e pure con il moltiplicatore di punti.[/quote]
Infatti qualche mese fa (1 Agosto) avevo inserito il case 56749, ma ora l’opzione “Create New Case” disabilitata, ma non so il perch.
Comunque oggi provo a salvare il report in formato testo per vedere come posso modificare l’altezza di una sezione.
Grazie, Antonio!

Per inserire un nuovo Case in Feedback occorre digitare il titolo nella casella di ricerca e premere Search: a questo punto la voce “Create New Case” si abilita.

Si.
Non ovvio, ma serve ad evitare di inserire un report prima di aver verificato se esiste qualcosa di simile

Antonio, forse tu mi puoi aiutare: c’ modo di sapere, in una sezione di un report, l’ordine col quale i vari elementi vengono stampati?
Spesso mi succede di impostare, nell’evento BeforePrinting di un ReportField, un dato che dovrebbe essere stampato in un altro ReportField, ma che magari viene stampato prima, mandando a pallino le mie impostazioni.
Se sapessi l’ordine esatto di stampa farei le mie impostazioni nel primo ReportField…

Ordine con cui sono stati inseriti e l’unico modo di modificarlo salvare il progetto come testo e modificare l’ordine a mano