home *** CD-ROM | disk | FTP | other *** search
- *****************************************************************
- FUNCTION MEMOFIND
- *****************************************************************
-
- * Finds text in a memo field
-
- * Copyright(c) 1991 - James Occhiogrosso
-
- LOCAL counter := 0, field_text := '', num_finds := 0, ;
- old_area := 0, old_ndx := 0, old_rec := 0, rec_list := ''
-
- PARAMETERS file_name, memo_field, search_for, ;
- recs_array, case_sen
-
- * Set case sensitivity off if no value passed
- case_sen = IF (case_sen = NIL, .F., case_sen )
-
- * Save entry conditions
- old_area = SELECT()
- old_ndx = INDEXORD()
- old_rec = RECNO()
-
- rec_list = ''
-
- * Turn off all indexes to speed search
- SET ORDER TO 0
- SELECT (file_name)
- GO TOP
-
- * Check for case sensitivity, and search for specified text
-
- counter = 0
- DO WHILE .NOT. EOF()
-
- * Equate the field to a variable
- field_text = &memo_field
-
- * And search the variable for specified text
- IF case_sen .AND. search_for $ field_text .OR. !case_sen ;
- .AND. upper(search_for) $ upper(field_text)
-
- * Increment counter and add each record number to list
- counter++
- rec_list = rec_list + LTRIM(STR(RECNO())) + ' '
- ENDIF
- SKIP
- ENDDO
-
- num_finds = counter
-
- IF num_finds > 0
-
- * Resize passed array to number of found records
- ASIZE(recs_array, num_finds)
-
- * Load array with record numbers
- FOR counter = 1 TO num_finds
- recs_array[counter] = VAL(PARSE(@rec_list))
- NEXT
-
- ENDIF
-
- * Reinstate entry conditions
-
- SELECT (old_area)
- SET ORDER TO old_ndx
- GO old_rec
-
- * Return True if at least one record was found
-
- RETURN IF(num_finds > 0, .T., .F.)
-
-