That's neat Sami,
I haven't used ITEMCNT yet. That's a good one for my looseleaf notebook.
Thanks,
Bernie Lis
----- Original Message -----
From: "Sami Aaron" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, November 21, 2002 3:08 PM
Subject: Re: A Duh Moment
> Ben -
>
> The new CHOOSE varname FROM #LIST syntax has made this even easier. Here
is
> an example
>
>
> SET V vpick TEXT = NULL
> SET VAR vlines INTEGER = NULL
> SET VAR vmenutext TEXT = NULL
> SET V vmenutext = +
> 'Add/Edit Customers,Print Reports,Year End Process,Database
> Maintenance,Send Tech Support Email,R> Prompt,Exit'
> SET VAR vlines = (ITEMCNT(.vmenutext))
> IF vlines > 20 THEN
> SET V vlines = 20
> ENDIF
>
> CHOOSE vpick FROM #LIST .vmenutext +
> AT 12 12 TITLE 'Tower Technology Main Menu' CAPTION .gDatabase LINES
> .vlines
> IF vpick = 'Exit' THEN
> GOTO bottom
> ENDIF
>
> SWITCH (.vpick)
> CASE 'Add/Edit Customers'
> RUN cust.rmd
> BREAK
>
> CASE 'Print Reports'
> RUN reports.rmd
> BREAK
>
> CASE 'Year End Process'
> RUN yearend.rmd
> BREAK
>
> CASE 'Database Maintenance'
> RUN dbmaint.rmd
> BREAK
>
> CASE 'Send Tech Support Email'
> SET V vemail = ('mailto:[EMAIL PROTECTED]')
> SET V vemail = (.vemail + '&Subject=RBase Tech Help')
> LAUNCH .vemail
> BREAK
>
> CASE 'R> Prompt'
> CLEAR ALL VAR EXCEPT G%
> SET V FCUID INTEGER
> QUIT
> BREAK
>
> ENDSW
>
> This produces a menu option of each item in the list and is the easiest
menu
> pick routine I've found yet - and to think, I just kind of "borrowed" it
> from Razzak's samples from the conference ... :)
>
> Sami
>
> -----------------------------------------------------------
> Sami Aaron
> Software Management Specialists
> 19312 W 63rd Terr
> Shawnee KS 66218
> 913-915-1971
> http://www.softwaremgmt.com
>
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
> > Behalf Of Ben Petersen
> > Sent: Thursday, November 21, 2002 3:47 AM
> > To: [EMAIL PROTECTED]
> > Subject: A Duh Moment
> >
> > This is one of those things I came across recently that had me
> > laughing at myself. Certainly nothing earth shaking, but one of
> > those simple things that helps a bit.
> >
> > I use choose a lot. I also use Bill D's tip for unions to add literal
> > choices to the menu... so forever I've been doing it like this:
> >
> > CHOOSE txtInvID FROM #VALUES FOR +
> > '* Add New Invoice',0 +
> > FROM Dummy WHERE LIMIT = 1+
> > UNION +
> > SELECT '* Purchase on Account', -1 +
> > FROM Dummy WHERE LIMIT = 1 +
> > UNION +
> > SELECT '* Re-display by Name', -2 +
> > FROM Dummy WHERE LIMIT = 1 +
> > UNION +
> > SELECT DISTINCT(CTXT(T1.InvoiceNum)&T2.CusName),TranID
> > FROM ar_InvoiceVW T1, +
> > CusName T2 +
> > WHERE T1.CustomerID = T2.CusID AND +
> > T1.CustSrc = T2.CustSrc +
> > ORDER BY 1 AT 5,1 +
> > TITLE 'Press [Esc] to Quit' +
> > CAPTION Invoices +
> > LINES .vCT
> >
> > This example produces a menu with
> >
> > * Add new Invoice
> > * Purchase on Account
> > * Order by Name
> > [list of invoice#/CusName]
> >
> > But when my customers first start a system I don't want things like
> > "Order by Name" or "Purchase on Account" until there is
> > supporting data to allow a choice (if there are no invoices to sort or
> > customers with approved credit to choose why present the option?).
> > And so I would dutifully do counts and conditional stuff and end up
> > with an accurate menu 10 or 15 lines down the page.
> >
> > What never occurred to me was rather than selecting from my
> > Dummy table I should just base that particular select against the
> > table which holds the supporting data... if there is no data there is
> > no choice in the menu.
> >
> > So ...
> > UNION +
> > SELECT '* Re-display by Name',1 +
> > FROM ar_InvoiceVW WHERE LIMIT = 1 +...
> >
> > now is only included when there are invoices to address.
> >
> > Hope I didn't bore everybody with something this obvious! But
> > maybe there is some poor slob like me out there who can benefit
> > <g>.
> >
> > Ben Petersen
> >
> >
> > ================================================
> > 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/
> >
> > ================================================
> > 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/
> >
> >
> >
>
>
> ================================================
> 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/
>
================================================
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/