Example webview gadget rsp script
From Lianjapedia
Revision as of 08:48, 24 November 2016 by Yvonne.milne (Talk | contribs)
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>