[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
  REPORT FORM       Anomalies with Report forms.

  Clipper Version  1.03 dtd 09/15/90.

  Problem Statement

  1) REPORT FORM will not display character report fields which are
     4 or less characters, unless the field width is set to five.

  2) The expression *** Total *** is appended to a report containing
     numeric fields, whether or not totals are requested. If group
     action is elected, ** Subtotal ** and * Subsubtotal * will
     show in the report, whether or not totals are requested.

  3) REPORT FORM will not print a report which does not contain at
     least one character field.

  Cause

  1) FRMRUN.PRG. MLCOUNT() and MEMOLINE() do not work with a linelength
     parameter less than 4.

  2) FRMRUN.PRG programming error.

  3) FRMRUN.PRG programming error.

  Work Around(s)

  1) Set report field width to 5 for character fields less than 5
     characters OR re-program FRMRUN.PRG as follows:

     XMEMOLINE Function:

     IF nLineLength < 5
       RETURN ( SUBSTR(cString, nLineLength * (nLineNumber-1) + 1,;
                nLineLength) )
     ELSE
       RETURN( MEMOLINE( cString, nLineLength, nLineNumber, nTabSize,
               lWrap ) )
     ENDIF

     XMLCOUNT Function:

     IF nLineLength < 5
       RETURN ( INT(LEN(cString) / nLineLength) + ;
              IF( LEN(cstring) % nLineLength == 0, 0, 1 ) )
     ELSE
       RETURN( MLCOUNT( cString, nLineLength, nTabSize, lWrap ) )
     ENDIF

  2) Define a STATIC variable, say totalflag. Set this flag to .F. in
     the __ReportForm function, after the LOCAL statements. Reset this
     flag in the "// Column total elements" loop:

       IF aReportData[RP_COLUMNS,nCol,RC_TOTAL]  // reference
         totalflag := .t.                        // add
         FOR nGroup := 1 TO LEN(aReportTotals)   // reference

     and apply this flag as desired throughout the program. Compile
     and link with your programs requiring this function.

  3) Modify FRMRUN.PRG, about line 380, as follows:

   // Only run through the record detail if this is NOT a summary report
   IF !aReportData[ RP_SUMMARY ]
      // Determine the max number of lines needed by each expression
      nMaxLines := 1  // Changed from 0 to 1.
      FOR nCol := 1 TO LEN(aReportData[RP_COLUMNS])
        ....

See Also: NOCONSOLE SET CONSOLE
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson