Trapping an Update
Bruce Easton
bruce at stn.com
Sun Dec 5 08:36:08 PST 2010
Yes, and to translate that back to Boaz's purpose saying that
screen 2 is the special totaling screen:
top If:
Then: end
@keyU If: @sn eq "2"
Then: gosub total; display; end
If:
Then: screen; goto top
For this, the field holding the total needs to be global. Now
I am curious as to what the answer to Ken's question about
this might be to make me realize something that was
overlooked.
In 5.6, dokey does seem to make some things a lot easier.
Bruce
On 12/5/10 12:34 AM, flowersoft at compuserve.com wrote:
> And if not in 5.6...
>
> @keyH if:
> Then: inputpw pw "Enter Password "
> If: pw = "" or pw ne "password"
> Then: END
> If:
> Then: hardcopy;END
>
> -----Original Message-----
> Richard Kreiss wrote:
>
> Subject: RE: Trapping an Update
>
> With 5.6 At line 2 in the example you can use dokey "u" to have filepro run
> the normal update.
>
> DOKEY allows one use filepro "reserved' keys for more then what they
> previously were reserved for; using B for a custom browse or the filepro
> browse.
>
> I have one application where H-hardcopy is passworded.
>
> @keyH if:
> Then: inputpw pw "Enter Password "
> If: pw = "" or pw ne "password"
> Then: END
> If:
> Then: dokey "H";END
>
> Check the latest doc's.
>
>
> Richard Kreiss
> GCC Consulting
> rkreiss at gccconsulting.net
>
>
>> -----Original Message-----
>> Bruce Easton wrote:
>>
>> Here's another way of doing capturing 'U' to initiate totaling of dummy
> fields
>> on a special control file screen - without ever putting user in update
> mode.
>> (If it were up to me, I'd make the user press 'T' for total and let them
> always
>> think 'U' is reserved for really doing an update to something, but hey.):
>>
>> 1 ------- - - - - - - - - - - - -
>> If: '(input table)
>> Then: end
>> 2 ------- - - - - - - - - - - - -
>> @entsel If: @sn ne "2"
>> Then: end 'not on totaling scrn, give fp normal ctrl
>> 3 ------- - - - - - - - - - - - -
>> If:
>> Then: cls("22")
>> 4 ------- - - - - - - - - - - - -
>> If: 'could add H/F to this for print opts
>> Then: eb="\r U \r-Total, Screen Number, \r X \r-Exit"
>> 5 ------- - - - - - - - - - - - -
>> If: 'allow U, X or another valid scrn#
>> Then: errorbox ("22","") eb,"","UX13"
>> 6 ------- - - - - - - - - - - - -
>> If: @sk eq "BRKY" 'ignore cancel key
>> Then: goto @entsel
>> 7 ------- - - - - - - - - - - - -
>> If: @bk eq "X" 'wants to exit
>> Then: pushkey "X"; end
>> 8 ------- - - - - - - - - - - - -
>> If: @bk ne "U" 'wants to go to another scrn#
>> Then: pushkey @bk; end
>> 9 ------- - - - - - - - - - - - -
>> If: 'fell thru - U pressed--total dets into 'tl'
>> Then: tl(10,.0)=""
>> 10 ------- - - - - - - - - - - - -
>> If:
>> Then: lookup dets = totdetails@ k=("BBB") i=A -nx
>> 11 ------- - - - - - - - - - - - -
>> detsloo If: not dets 'done totaling BBB
>> Then: display; goto @entsel
>> 12 ------- - - - - - - - - - - - -
>> If: dets(1) ne "BBB" 'done totaling BBB
>> Then: display; goto @entsel
>> 13 ------- - - - - - - - - - - - -
>> If:
>> Then: tl=tl+dets(2); getnext dets; goto detsloo
>>
>> Here, I'm trying to total all details that match 'BBB' from the file
> 'totdetails',
>> and screen 2 is the 'special' screen with dummy field 'tl'
>> to show a total. This control file also has a screen 1 and a screen 3
> where real
>> updates to the record can occur.
>>
>> Assumptions:
>>
>> 1. This is a control file where, for the purposes of this function, only
> one
>> record needs to be accesssed.
>> 2. No writing is necessary to the control file record from the special
> screen.
>> This could easily be modified to work for several screens of the same
> record
>> where each had a different set of dummy fields.
>>
>> Lines 5-8 could be easily redone with a combo of show statements and
>> waitkey I believe to give a more precise look and feel to what you have
> now
>> (instead of using errorbox).
>>
>> I have to wonder, though, why not just do the totaling as soon as someone
>> arrives at the special screen (from @entsel and just test for the screen
>> number)? Unless it takes a really long time and they might hit that
> screen
>> number by mistake. But even in that case, you could just ask before
> starting
>> the totaling with a (i.e., yes/no
>> errorbox) and then switch/restore a previous screen if they really didn't
>> mean to go there. That would also keep control of this in just @entsel.
>>
>> Bruce
>>
>> Bruce Easton
>> STN, Inc.
>>
>>
>>
>>
>> On 12/3/10 11:00 PM, Boaz Bezborodko wrote:
>>> I'm sure that many of you probably already have this as a tool in your
>>> toolbox, but I figured I'd just share a simple way I used to trap an
>>> Update in a specific screen.
>>>
>>> The core of our software was written about 20 years ago and included a
>>> control file that also contained pertinent daily information such as
>>> daily and monthly sales totals. One screen was used to allow you to
>>> total up all existing open AR invoices, open AP invoices, and open
>>> orders. It would do this in one screen that contained a slew of dummy
>>> variables. Once we started doing a lot of business that required
>>> large amounts of dropship orders (each package requires its own order,
>>> invoice, etc.) this record started to get a lot of activity and
>>> totaling up these numbers in the screen could freeze other people
>>> until the totals were completed and unlocked. The totaling routine
>>> looked at other files and didn't touch anything in the record itself.
>>>
>>> Obviously totaling from within the record was not a good idea and I
>>> wanted to have this done from within @entsel which wouldn't lock the
>>> record. But I didn't want to change the look and feel of the program
>>> which entailed that people hit "U" to start the process. I was
>>> thinking of trapping "U" with an @keyU, but that meant that I would
>>> have to have a different line to jump to each of the other screens
>>> someone might want to update.
>>>
>>> The solution was to have a @WEF for the first field in this screen's
>>> cursor path that looked something like this:
>>> @wefaa if:
>>> then: DECLARE What_Mode(7,*,g)
>>> if:
>>> then: What_Mode="Totals" ; ESCAPE
>>>
>>> @Entsel if: What_Mode="Totals"
>>> then: Gosub (routine) ; What_Mode="" ; GOTO @Entsel
>>>
>>> Now the users can run this routine to their hearts content without
>>> interrupting anyone else. The @Entsel and "What_Mode" trick I learned
>>> from John Esak.
>>>
>>> Just in case this helps anyone else.
>>>
>>> Boaz
>>> _______________________________________________
>>> Filepro-list mailing list
>>> Filepro-list at lists.celestial.com
>>> Subscribe/Unsubscribe/Subscription Changes
>>> http://mailman.celestial.com/mailman/listinfo/filepro-list
>>>
>>>
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL: http://mailman.celestial.com/pipermail/filepro-
>> list/attachments/20101204/730b258e/attachment.html
>> _______________________________________________
>> Filepro-list mailing list
>> Filepro-list at lists.celestial.com
>> Subscribe/Unsubscribe/Subscription Changes
>> http://mailman.celestial.com/mailman/listinfo/filepro-list
> _______________________________________________
> Filepro-list mailing list
> Filepro-list at lists.celestial.com
> Subscribe/Unsubscribe/Subscription Changes
> http://mailman.celestial.com/mailman/listinfo/filepro-list
>
>
>
More information about the Filepro-list
mailing list