>This is an extract from the VFP Help:
>"RECNO( ) issued without the optional arguments nWorkArea or cTableAlias returns the current record number for the table in the currently selected work area.
>If you have issued SEEK unsuccessfully in an indexed table, you can specify 0 for nWorkArea to use “soft seek” logic to return the record number of the closest matching record. RECNO(0) returns 0 if a close match cannot be found. Visual FoxPro generates an error message if you issue GO RECNO(0) when a close match isn’t found."
>
>My question is how do I bypass GO RECNO(0) without generating an error.If I try to LOCATE FOR records that are not in the table , the error message is generated.
>Any Suggestions?
Recno(0) is set only after a SEEK, and I've never heard of it being set after a LOCATE.
Anyway, the usual sequence goes like this:
if seek(lcKey)
* then it's OK
else
lnRecno0=recno(0)
do case
case lnRecno(0)>recc()
* lcKey is greater than any of our keys
go bott
case lnRecno()=0
* lcKey is less than any of our keys
go top
other
* lcKey doesn't exist, but it's between two existing keys, so let's go to the next greater one:
go lnRecno
endcase
endif