Example webview gadget rsp script
From Lianjapedia
Description
Example Visual FoxPro Server Page (.rsp) report from WebView Section and WebView Gadget guide.
See Also
Developing Custom WebViews in Visual FoxPro
Code
<%@ Language=VFP %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> </head> <% timeofday() if len(database())=0 open database southwind endif // get the column descriptions use example in 0 current astore(afieldList, fldlist(), ',') declare afieldDesc[ fldcount() ] adesc(afieldDesc) use // perform the query tmpfile = sys(2015) select * from example order by state save as [&tmpfile] use [&tmpfile] in 0 current declare afieldList[ fldcount() ] // declare some special symbols (html uses ampersand so do we) amp = chr(38) nbsp = amp + "nbsp;" // generate the html output ? ('<table width="100%" height="100%" cellpadding="5" cellspacing="0" bgcolor="white" border=0px>') ? ('<tr bgcolor="gray">') ? ('<td align="center" colspan="&(fldcount())">') ? ('</td>') ? ('</tr>') // display column headings ? ('<tr bgcolor="#eaeaea">') for j=1 to fldcount() ? ('<td halign=center valign=top>') ? ('<b><font color="gray">' + afieldDesc[j] + '</font></b>') ? ('</td>') next ? ('</tr>') ? ('<tr bgcolor="darkgray" height="1px">' + replicate('<td></td>', fldcount()) + '</tr>') // group subtotals by the STATE field last_state = state declare subtotals[3] subtotals[1] = 0.0 // limit subtotals[2] = 0.0 // balance subtotals[3] = 0.0 // available m_limit = 0.0 m_balance = 0.0 m_available = 0.0 // scan through the records generating the table rows and columns goto top // for all records... for i=1 to reccount()+2 if mod(i,2) = 0 rowcolor = "#f9f9f9" altcolor = "#FFFFFF" else rowcolor = "#FFFFFF" altcolor = "#f9f9f9" endif // check for subtotal break if (state != last_state and i > 1) or (i > reccount()) ? ('<tr bgcolor="lightgray" height="1px">' + replicate('<td></td>', fldcount()) + '</tr>') // display subtotals ? ('<tr bgcolor="#f5f5f5" color="gray">') if i <= reccount()+1 ? ('<td colspan="3" halign=left><b><font color="gray">Sub-total for state: ' + last_state + '</font></b>') ? (replicate('<td>&(nbsp)</td>', 5)) elseif i = reccount()+2 ? ('<td color="gray" halign=left><b>Totals:</b>') ? (replicate('<td>&(nbsp)</td>', 7)) endif ? ('<td align=right>') tmpfld = currency(subtotals[1]) fld = 'tmpfld' ? ('<b><font color="gray">' + etos(&fld)+'&(nbsp)&(nbsp)' + '</font><b>') ? ('</td>') ? ('<td align=right>') tmpfld = currency(subtotals[2]) fld = 'tmpfld' ? ('<b><font color="gray">' + etos(&fld)+'&(nbsp)&(nbsp)' + '</font><b>') ? ('</td>') ? ('<td align=right>') tmpfld = currency(subtotals[3]) fld = 'tmpfld' ? ('<b><font color="gray">' + etos(&fld)+'&(nbsp)&(nbsp)' + '</font><b>') ? ('</td>') ? (replicate('<td>&(nbsp)</td>', 1)) ? ('</tr>') ? ('<tr bgcolor="white" height="1px">' + replicate('<td></td>', fldcount()) + '</tr>') if i > reccount()+1 ? ('<tr bgcolor="white" height="1px">' + replicate('<td></td>', fldcount()) + '</tr>') ? ('<tr bgcolor="black" height="1px">' + replicate('<td></td>', fldcount()) + '</tr>') endif ? ('<tr colspan="&(fldcount())" bgcolor="&altcolor">') ? (replicate('<td>&(nbsp)</td>', fldcount())) ? ('</tr>') if i = reccount()+1 subtotals[1] = m_limit // limit subtotals[2] = m_balance // balance subtotals[3] = m_available // available loop endif subtotals[1] = 0.0 // limit subtotals[2] = 0.0 // balance subtotals[3] = 0.0 // available if i > reccount()+1 exit endif endif // save subtotal values last_state = state subtotals[1] = subtotals[1] + limit subtotals[2] = subtotals[2] + balance subtotals[3] = subtotals[3] + available m_limit = m_limit + limit m_balance = m_balance + balance m_available = m_available + available // for all columns... ? ('<tr bgcolor="&rowcolor">') for j=1 to fldcount() fld = afieldlist(j) if (upper(fld) = 'LIMIT' or upper(fld) = 'BALANCE' or upper(fld) = 'AVAILABLE') tmpfld = currency(&fld) fld = 'tmpfld' ? ('<td valign=top align=right>') else ? ('<td valign=top align=left>') endif ? (etos(&fld)+"&(nbsp)&(nbsp)") ? ('</td>') next ? ('</tr>') skip next ? ('</table>') ? ('** End of report elapsed time '+timeofday(4)+' seconds **') erase '&tmpfile..dbf' erase '&tmpfile..dbt' %> </body> </html>