REPORT

Ciao a tutti

ho creato un report per stampare fatture, ma mi succede quanto segue: sotto una stessa voce (numero fattura) ho diversi items ma quando stampo , invece di stampare tutti gli items sotto la voce fattura , mi stampa un item su ognni pagina, quindi se gli items erano 10 nella stessa fattura mi stampa 10 fatture.

Como posso risolvere il problema?

grazie

Probabilmente hai inserito un gruppo per ogni elemento di item e nel relativo groupFooter hai abilitato lo StartNewPageAtEndOfGroup

stai parlando del report?

Si certo

ti posto il codice

'dim f as FolderItem

Dim pagamenti As New SQLiteDatabase

// Set Database File
pagamenti.DatabaseFile= SpecialFolder.Documents.Child(“pagamenti.sqlite”)
// Connect to the database
If pagamenti.databaseFile.Exists Then
// The database file already exists, so we want to connect to it.
If pagamenti.Connect = False Then

  // there was an error connecting to the database
  MsgBox("Database Error: " + Str(pagamenti.ErrorCode) + EndOfLine + EndOfLine + pagamenti.ErrorMessage)
  
  Return
End If

Else
MsgBox(“Database not found!”)
Return
End If

// Build the SQL statement that will be used to select the records
Dim sql As String =(“SELECT * FROM pagamenti WHERE fattura = '” +(TextField41.Text) + “’”)
Dim rpt As New Report_fatture
'// Now we select the records from the database and add them to the list.
Dim rs As recordSet
rs = pagamenti.sqlSelect(sql)
rs.MoveNext

If rs = Nil Then
Beep
MsgBox(“No records found to print.”)
Else
Dim ps As New PrinterSetup
// set the resolution to 300 DPI for printing
ps.MaxHorizontalResolution = 300
ps.MaxVerticalResolution = 300

If ps.PageSetupDialog Then
  Dim g As Graphics
  g = OpenPrinterDialog(ps, Nil)
  
  If g <> Nil Then
    
    // if the report runs successfully
    If rpt.Run(rs, ps) Then
      rpt.Document.Print(g)
    End If
  End If
End If

End If

Rs=pagamenti…
rs.moveNext

if rs=nil

se rs nil rs.moveNext va in errore
rs nil se c’ un problema con la query (tipo hai sbagliato sintassi)
rs con EOF a true se non ci sono record per cui dovresti scrivere:

rs=pagamenti…
if rs=nil then
if pagamenti.error then
msgbox “Errore db:”+pagamenti.errormessage
else
msgbox “Errore nella richiesta”
end if
return
end if
if rs.eof then
msgbox “non ci sono record”
else…

(tra l’altro non capisco a cosa ti serve rs.moveNext)

In ogni caso se nel report vedi i dati come non desideri (uno per pagina) probabilmente devi controllare il report

CARO MAESTRO PER QUESTO SEI UN EVANGELIST ED IO UN DISCEPOLO

cosa devo controllare del report?

stampo e stampa una fattura alla volta invece di raggrupparli sotto un solo numero di fattura.

Il tuo codice e perfetto ma mi serve per gestire gli errori nel caso non incontra un record.

io avevo aggiunto rs.moveNext per passare al prossimo record una volta che sono al cambio pagina (spero sia giusta la intenzione)

Non vedo settaggi particolari nel report a meno che ti riferisci al codice che in questo caso non saprei come fare… per questo mi rivolgo ad un evangelist esperto

I cambi pagina li fai nel report (guarda nell’inspector)
Nel body metti le voci e gli importi (non so come chi chiamano i campi, diciamo voce e importo)
Nel report devi creare un gruppo e nel suo header (tramite l’inspector) inserisci fattura nella voce GroupByField, nel suo footer abiliti lo startNewPageAtEndOfGroup e nel contenuto di questo group footer metti un campo indicando come databile importo e come summary GrandTotal

I gruppi li inserisci con il primo pulsante della toolbar dell’editor

Nel mio codice se rs.nil allora ci sono errori
se rs.eof non ci sono record (manca un return dopo il msgbox)
Ci pensa il report a scorrere e a paginare se lo imposti correttamente.

come sempre grazie Maestro

scusate c’e’ una guida in italiano per fare un report da zero?