Webhtmlviewer stampa dati da una base dati

Ciao a tutti, Antonio un saluto speciale

Devo stampare dei dati che provengono da una base dati, usando il webhtmlviewer.

var rsEtapa2 as RowSet
rsEtapa2 =  Session.mDB.SelectSQL("SELECT * FROM etapa_2 WHERE op = ?", op)

for Each row as DatabaseRow in rsEtapa2
  
  htmlEtapa2 = ("<html><body>"+_
  "<hr>"+_
  "<h4 style='font-family:Montserrat'>ETAPA 2: PESAJE DE MATERIAS PRIMAS</h4>"+_ 
  "<div style='font-family:Montserrat'>"+_
  "<table style= 'width:100%' 'border: 1px solid black'>"+_
  "<thead style= 'text-align:left'>"+_ // start head table
  "<tr>"+_
  "<th style='width:10%'>Control</th>"+_
  "<th style='width:60%'>Materia Prima</th>"+_
  "<th style='width:10%'>%</th>"+_
  "<th style='width:10%'>Gramos</th>"+_
  "<th style='width:10%'>Pesado</th></tr>"+_
  "</thead>"+_ // head table
  "</div>"+_
  "<tbody>"+_
  "<tr>"+_
  "<td>" +  row.Column("control").StringValue   + "</td>"+_
  "<td>" + row.Column("materia_prima").StringValue  + "</td>"+_
  "<td>" +  row.Column("percentuale").StringValue  + "</td>"+_
  "<td>" +  row.Column("grammi").StringValue   + "</td>"+_
  "<td>" +  row.Column("pesado").StringValue   + "</td></tr>"+_
  "</tbody></table>"+_
  "</body></html>")
next

var stampa as String = htmlBatchRecord + htmlEtapa2 

HTMLViewerPrintBatchRecord.LoadHTML(stampa)

Uso i tag html per formattare il testo ed un ciclo each for per i dati da stampare.
L’unico problema che riscontro e’ che della base dati(dei dati che sono stati filtrati) mi stampa solo l’ultimo valore invece di stamparli tutti

Dall’immagine che ti allego nella Etapa 2 come puoi vedere stampa solo un valore.
Non vedo dove sto sbagliando.
Mi puoi dare una mano per favore?

Grazie come sempre per il tuo aiuto

alla variabile htmlEtapa2 devi accodare il contenuto, non sovrascrivere. In altre parole

htmlEtapa2 = htmlEtapa2 + bla...bla...bla

non so se sono stato chiaro.

Ciao Antonio

Ecco l’errore che non vedevo. Come sempre sei attento, puntale e geniale.
Un grandissimo grazie per l’aiuto

eheh ti ringrazio, ma non sono “quell’Antonio”, ma un altro… solo una omonimia! :smiley:

… e quell’Antonio ti suggerisce di utilizzare un array per accodare.
ad esempio (stile pseudocodice)
var html() as string
//intestazione
if true then //solo per eliminare subito l’array di appoggio
var appoggio() as string
appoggio.add "
… tutto il resto dell’intestazione fino a…
appoggio.add “”
html.add String.fromArray(appoggio, “”)
end if
for each row …
var appoggio() as string
appoggio.add “”
appoggio.add … le singole td dei campi
appoggio.add “”
html.add String.fromArray(appoggio, “”)
end for

if true
//analogo per il resto da a
end if
//raccogli il tutto
htmlEtapa2=String.FromArray(html, “”)

In questo modo è più veloce e risparmi memoria

Ciao Ant

No fa niente, tutte le cose che ho detto valgono anche per te ovviamente. :smiley:

Ancor grazie

Ciao Antonio (l’originale)

Bella soluzione, la provo e ti faccio sapere.
Grazie 1000000