Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Set FILTERS and GO rec problem?
Message
 
To
30/11/2001 12:06:40
Peter Brama
West Pointe Enterprises
Detroit, Michigan, United States
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00585621
Message ID:
00588086
Views:
25
Rather than using Go lnRecNo I've used locate for recno()=lnRecNo and that seems to work.

>Doesn't work either.... I checked RECNO before and after FILTER call with the "current" record NOT being in the new filter set - RECNO() does not change.
>
>>Peter,
>>You could try the following:
>>
>>lnRecNo = RECNO()
>>SET FILTER TO < whatever >
>>*-- attempt to restore the pointer
>>GO lnRecNo
>>IF lnRecNo = RECNO()
>>  *-- previous record is part of filtered set
>>  *-- and the record pointer has been restored
>>ELSE
>>  *-- record not part of filtered set, so we
>>  *-- issue a LOCATE which will select the first
>>  *-- record in the filtered set
>>  LOCATE
>>ENDIF
>>
>>
>>HTH
>>>The problem is... if the record I want to have "current" IS in the set, I need to GOTO that record. If it is NOT in the set, I need to go to either TOP or the closest record. I can't figure out, other than doing a search through the set, how to get an error flag so I know where to go.
>>>
>>>
>>>
>>>>>I have an application that displays records in a grid. There are OPTION buttons to limit what records are displayed. I am having a problem "controlling" the current record when using these FILTERS.
>>>>>
>>>>>Here is an example.
>>>>>
>>>>>
>>>>>RECNO     MARKED
>>>>>1           N
>>>>>2           Y
>>>>>3           N
>>>>>4           Y
>>>>>5           Y
>>>>>6           N
>>>>>
>>>>>
>>>>>In the above table... when my FILTER is set to NONE, all are displayed.
>>>>>
>>>>>Assuming my "current" record is 2 and the FILTER is switched to show only MARKED records... then current isn't a problem because it is in the FILTERed records.
>>>>>
>>>>>If the "current" record is 3 and the FILTER is switched to show only MARKED records... then current is a problem because that record is NOT displayed.
>>>>>
>>>>>I have a METHOD that controls the "highlight" of the current record and this is where the problem is very noticeable. I was storing the current RECNO() and then issuing the FILTER change. Then I was using a GO vStoredRecNo to highlight the "current" record. This worked fine when I was on a displayable record when the filter was changed. The GO appears to operate fine when it is not, but the "current" rec is not there so therefore nothing is highlighted.
>>>>>
>>>>>I tried using an EOF() or FOUND() call to see if I could capture this problem to no avail.
>>>>>
>>>>>Ideally, if the "current" record is NOT in the displayed filtered set, then I suppose going to TOP would be the course to follow but I don't know how to achieve this short of issuing a series of SEEKS, SKIPS or a LOCATE or somthing similar that will fire an EOF or FOUND().
>>>>>
>>>>>Suggestions?
>>>>
>>>>Once you've changed your filter, do a GO TOP or just a SKIP to force the filter to "kick in" or any other command that forces the record pointer to move.
Caroline
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform