|
Here's a post I did about 6 to 9 months ago... I modified the Net.Data macro... I'll cut & paste it, but Craig Pelike did the work initially, and I played with it a little... it's a cool thing. SQL did a lot of this work... Click on the link to see it in action (my goodness - the macro still exists!!) ... *************************************************************************************************************** This is actually work done by Craig Pelike with some (ok maybe few) modifications by myself but it's merely a possibility... http://12.24.177.228/cgi-bin/db2www/ndsubfile.ndm/input This is STANDARD net-data reading an SQL request - but I'm sure it can be simulated with RPG Called routines, and Net.Data table support... I think Joel hit the head on the nail - the programming is just different. We'd not put 100 fields to fill out on one screen 640x480 screen. But - here's things I've seen that've been lost! 1) My wife ordered some Tupperware online - she's NOT a computer person. Whereas you and I know to click on images when the mouse turns into a finger, she was LOST - I observed her and learned how LITTLE intuitive stuff is really on these pages. No buttons that say "More Info" - it seems stupid to you and I - but if people can't figure it out from a glance, we're not doing our jobs right. The buttons must be clear - "Add to Cart" "More Info" etc... buttons are ugly - but they work. 2) Help - you can have some INCREDIBLE person using WORD as an editor create a help page. When someone "clicks" on it, it grabs it out of the IFS... How will the user want to use the program. How will it respond to them. That sort of touchie feelie stuff %{----------------------------------------------------------------------------%} %{ StartRow.ndm -- Net.Data table processing with Starting Row number %} %{ Create numbered links to show sections of a resultset. %} %{ %} %{ Copyright (c) 2000, Craig Pelkie %} %{ ALL RIGHTS RESERVED %} %{----------------------------------------------------------------------------%} %{----------------------------------------------------------------------------%} %{ Section A - Define section for the macro %} %{----------------------------------------------------------------------------%} %define { DATABASE = "*LOCAL" DTW_DEFAULT_REPORT = "NO" DTW_SET_TOTAL_ROWS = "YES" RPT_MAX_ROWS = "10" currentPage = "0" pageCount = "1" rowCount = "0" rowIndex = "1" rowIndexNext = "1" totalPages = "0" DTW_USE_DB2_PREPARE_CACHE="YES" %} %{----------------------------------------------------------------------------%} %{ Section B - RUNSQL - run the SQL statement, generate HTML table %} %{----------------------------------------------------------------------------%} %function(DTW_SQL) RUNSQL() { select * from apilib/parts order by partno %report{ %{--------------------------------------------------------------------%} %{ Section C - test for empty result set, exit if empty %} %{--------------------------------------------------------------------%} %if (TOTAL_ROWS == "0") No rows retrieved for query. @dtw_exit() %endif <!--------------------------------------------------- Table headers ----------------------------------------------------> <table border="1" cellpadding="2" cellspacing="0" bgcolor="white" width="500"> <!----------------------------------------------- Navigation data and links ------------------------------------------------> <tr bgcolor="white" align="right"> <td colspan="5"> <font size="-1" color="blue"> %{---------------------------------------------------------%} %{ Section D - calculate/display total number of pages to %} %{ generate (whole and fractional) %} %{---------------------------------------------------------%} @dtw_assign(totalPages, @DTW_RINTDIV(TOTAL_ROWS, RPT_MAX_ROWS)) %if (@dtw_rdivrem(TOTAL_ROWS, RPT_MAX_ROWS) > "0") @dtw_add(totalPages, "1", totalPages) %endif Total rows: $(TOTAL_ROWS) Total pages: $(totalPages) %{---------------------------------------------------------%} %{ Section E - Put "<< Prev"" option if on page 2..n %} %{---------------------------------------------------------%} %if (START_ROW_NUM > RPT_MAX_ROWS) <a href="input?s=@dtw_rsubtract(START_ROW_NUM, RPT_MAX_ROWS)"> << Prev </a> %else << Prev %endif %{---------------------------------------------------------%} %{ Section F - Put links for each page %} %{---------------------------------------------------------%} %while(pageCount <= totalPages) { %{-----------------------------------------------------%} %{ Section G - link for "current page" %} %{-----------------------------------------------------%} %if (rowIndex == START_ROW_NUM) <b>$(pageCount)</b> @dtw_assign(rowIndexNext, @dtw_radd(rowIndex, RPT_MAX_ROWS)) @dtw_assign(currentPage, pageCount) %{-----------------------------------------------------%} %{ Section H - link for other pages %} %{-----------------------------------------------------%} %else <a href="input?s=$(rowIndex)">$(pageCount)</a> %endif @dtw_add(rowIndex, RPT_MAX_ROWS, rowIndex) @dtw_add(pageCount, "1", pageCount) %} %{---------------------------------------------------------%} %{ Section I - Put "Next >>" option if on page 1..n-1 %} %{---------------------------------------------------------%} %if (currentPage < totalPages) <a href="input?s=$(rowIndexNext)"> Next >> </a> %else Next >> %endif </font> </td> </tr> <!----------------------------------------------- Section J - Column names ------------------------------------------------> <tr bgcolor="lightsteelblue"> <th><font size="-2">$(N1)</font></th> <th><font size="-2">$(N2)</font></th> <th><font size="-2">$(N3)</font></th> <th><font size="-2">$(N4)</font></th> <th><font size="-2">$(N5)</font></th> </tr> <!--------------------------------------------------- Section K - Table rows ----------------------------------------------------> %row{ <tr> <td align="center"><font size="-2">$(V1)</font></td> <td> <font size="-2">$(V2)</font></td> <td align="right"> <font size="-2">$(V3)</font></td> <td align="right"> <font size="-2">$(V4)</font></td> <td align="center"><font size="-2">$(V5)</font></td> </tr> %} </table> %} %} %{----------------------------------------------------------------------------%} %{ INPUT - initial section called, calls RUNSQL macro function %} %{----------------------------------------------------------------------------%} %html(INPUT) { <html> <head> <title>Net.Data macro StartRow.ndm</title> </head> <body> <center> <h1>Net.Data macro StartRow.ndm</h1> %{--------------------------------------------------------------------%} %{ Section L - Extract the starting row number from the Query String %} %{--------------------------------------------------------------------%} @dtw_assign(queryString, @dtw_rgetenv("QUERY_STRING")) @dtw_assign(eqPos, @dtw_rpos("=", queryString)) %if (eqPos >= "1") @dtw_assign(START_ROW_NUM, @dtw_rsubstr(queryString, @dtw_radd(eqPos, "1"))) %else @dtw_assign(START_ROW_NUM, "1") %endif @RUNSQL() </center> </body> </html> %} Andrew Borts / Webmaster Seta Corporation 6400 East Rogers Circle Boca Raton, FL 33499 E-mail: Andrewb@setacorporation.com Corporate web site http://www.setacorporation.com E-Commerce web site http://www.palmbeachjewelry.com http://www.myfreeitems.com Voice: 561-994-2660 Ext. 2211 / Fax: 561-997-0774 -----Original Message----- From: Nathan M. Andelin [mailto:nandelin@RELATIONAL-DATA.COM] Sent: Monday, October 21, 2002 2:22 PM To: web400@midrange.com Subject: Re: [WEB400] Can CGI Do this ??? > From: "Andrew Borts" <Andrewb@SETACORPORATION.com > Actually - on Pelike's web site, he has an example of a "Subfile" process > in net.data (pushing the free solution built into ALL AS/400's...) Andrew, I too am a proponent of Net.Data for some applications. Would you mind sharing the link? Nathan M. Andelin www.relational-data.com _______________________________________________ This is the Web Enabling the AS400 / iSeries (WEB400) mailing list To post a message email: WEB400@midrange.com To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/cgi-bin/listinfo/web400 or email: WEB400-request@midrange.com Before posting, please take a moment to review the archives at http://archive.midrange.com/web400.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.