Just in case this would be handy for others who haven't
tried this yet, remember how powerful it is to call a
stored procedure from within a report.

A client needed a message printed on the bottom of a report.  I was
to count up how many invoices a customer had with a bunch of
different criteria, such as date of invoice, whether paid off, if
paid off within certain time frame, amount of invoice, etc.  If no
invoices met the criteria, then no message on the report.  I could
have (1) calculated this outside the report in a temp table, but this
report is called from many different programs so it would be nice to
have it within the report itself, or (2) I could define a whole bunch
of complicated report variables.  Instead I used a stored procedure.

My report variables:

   INTEGER: RF : rvNoInvoices = (CALL WDeliver(CustID))  
      *I am passing to the stored procedure the CustID, it will
       be returning a variable with the number of invoices
   TEXT   : RF : rvFooter = 
       (IFGT(.rvNoInvoices,0,'CONGRATULATIONS! <etc....>', ' '))


Here's the text of the stored procedure:

*( WDeliver.sp, stored procedure run from report WinDelivery
   Will be passed a CustID
   Returns a count of invoices that meet criteria)
   
-- Initialize the passed in variable
SET VAR vCustID INT

SET VAR vCount INT = 0

DROP CURS wdeliver
DECLARE wdeliver CURSOR FOR SELECT servid, saledate FROM service +
  WHERE custid = .vcustid AND BalDueS <= 0.50 
OPEN wdeliver
WHILE 1 = 1 THEN
  FETCH wdeliver INTO vServid, vDate
  IF SQLCODE = 100 THEN
    BREAK
  ENDIF

  <  a bunch of tests in here to count invoices.  If it meets a
     criteria then:
        SET VAR vcount = (.vcount+1)  
  >  
  
ENDWHILE
DROP CURS wdeliver    
 
CLEAR VAR vDate, vServid
RETURN .vCount
       
RETURN




Karen

       


================================================
TO SEE MESSAGE POSTING GUIDELINES:
Send a plain text email to [EMAIL PROTECTED]
In the message body, put just two words: INTRO rbase-l
================================================
TO UNSUBSCRIBE: send a plain text email to [EMAIL PROTECTED]
In the message body, put just two words: UNSUBSCRIBE rbase-l
================================================
TO SEARCH ARCHIVES:
http://www.mail-archive.com/rbase-l%40sonetmail.com/

Reply via email to