Jim,
On of the things it took me a long while to get around to learning and using
was the SWITCH/ENDSW command. Eventually, I had so many IF/ENDIF sections that
a better way for multiple choices just had to be found!
Razzak has already given you a solution to your CHOOSE question but - to my
mind - your following code screams out to use SWITCH/ENDSW.
Apologies if you know this already and/or have a reason to do it the way you
are. It's impertinent of me as well, but I wish I had known how to use it
earlier:
SWITCH .vReportOutput
CASE 'Screen'
PRINT KayParkQuote WHERE QuoteID = .vQuoteID +
OPTION SCREEN|WINDOW_STATE MAXIMIZED +
|ZOOM_TYPE PERCENTAGE|ZOOMPERCENT 100
BREAK
CASE 'Printer'
PRINT KayParkQuote WHERE QuoteID = .vQuoteID +
OPTION PRINTER
BREAK
CASE 'PDF'
SET VAR vFileName = ('PDF\SalesQuote_'+.vQuoteID+'.PDF')
PRINT KayParkQuote WHERE QuoteID = .vQuoteID +
OPTION PDF +
|FILENAME &vFileName +
|TITLE Kay Park Recreation +
|SUBJECT Sales Quote +
|AUTHOR Sales Quote Processing Department +
|OPEN ON
BREAK
DEFAULT
GOTO LabelEnd -- whatever you need if one of the above is not chosen!
BREAK
ENDSW
Also, even though you only have two reports at the moment and you could use
IF/ENDIF perfectly effectively you could also deal with a Report choice to do
nothing or any additional reports later were you to use SWITCH/ENDSW after the
CHOOSE process as well - especially if your report names do not inform the
users easily what one to choose:
CHOOSE vChoose FROM ...
SWITCH .vChoose
CASE 'KayParkQuote'
SET VAR vReport = 'KayParkQuote'
BREAK
CASE 'KayParkOrder' -- for example!
SET VAR vReport = 'KayParkOrder'
BREAK
DEFAULT
GOTO LabelEnd -- whatever you need if one of the above is not chosen!
BREAK
ENDSW
If you were to use this after your CHOOSE then your PRINT command first lines
in my first example need to be changed to:
PRINT .vReport WHERE QuoteID = .vQuoteID +
The great advantage that I find with SWITCH/ENDSW over IF/ENDIF is that it is
so much easier to understand what you are doing and to add (or remove) choices
as requirements change.
Good luck,
Regards,
Alastair.
----- Original Message -----
From: Jim Belisle
To: RBASE-L Mailing List
Sent: Tuesday, December 02, 2008 1:20 PM
Subject: [RBASE-L] - Choosing report
Below is the present syntax for printing a specific report (KayParkQuote) to
either the screen, printer or file. What I want to do is give the sales person
the option of choosing between two different reports rather than using only the
one report. Is the CHOOSE command the best command to use? I was thinking of
using the below syntax right after the THEN:
CHOOSE vreport FROM REPORTS WHERE (I am not sure what to put here) IN
(KayParkQuote,KayParkQuote_Price)
PRINT .vreport WHERE QuoteID = .vQuoteID
I would use the above command for all three choices.
(present syntax)
IF vReportOutput = 'Screen' THEN
PRINT KayParkQuote WHERE QuoteID = .vQuoteID +
OPTION SCREEN|WINDOW_STATE MAXIMIZED +
|ZOOM_TYPE PERCENTAGE|ZOOMPERCENT 100
ENDIF
IF vReportOutput = 'Printer' THEN
PRINT KayParkQuote WHERE QuoteID = .vQuoteID +
OPTION PRINTER
ENDIF
IF vReportOutput = 'PDF' THEN
SET VAR vFileName = ('PDF\SalesQuote_'+.vQuoteID+'.PDF')
PRINT KayParkQuote WHERE QuoteID = .vQuoteID +
OPTION PDF +
|FILENAME &vFileName +
|TITLE Kay Park Recreation +
|SUBJECT Sales Quote +
|AUTHOR Sales Quote Processing Department +
|OPEN ON
ENDIF
Jim
------------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG - http://www.avg.com
Version: 8.0.176 / Virus Database: 270.9.12/1823 - Release Date: 01/12/2008
19:59