PROC SearchDB() PRIVATE Choice, Lookup, Name, i IF ISEMPTY("Ref") THEN MESSAGE "Data base is empty" SLEEP 1000 RETURN ENDIF UNLOCKRECORD FORMKEY MOVETO "Lookup" FORMKEY WHILE TRUE WAIT RECORD PROMPT "Fill in what you are looking for and press F2", "F10 - Menu, Esc - cancel operation, Del - clear" UNTIL -60, ;"F2" 27, ;"Esc" -68, ;"F10" -83, ;"Del" -59 ;"F1" SWITCH CASE Retval = 27 : ;"Esc" UNDO FORMKEY MOVETO TableMain FORMKEY RETURN CASE Retval = -60 : QUITLOOP ;"F2" CASE Retval = -83 : DEL ;"Del" CASE Retval = -68 : ;"F10" SHOWMENU "Load" : "Load Lookup table from file", "Save" : "Save Lookup table to file" TO Choice SWITCH CASE Choice = "Load" : CURSOR NORMAL Name = GetFile("*.lu", "Name:", "Enter name of ASCII file (without extension) or directory", Dir, TRUE) CURSOR OFF IF Name = "" THEN LOOP ENDIF Dir = GetDir(Name) DEL DO_IT! MENU {Tools} {ExportImport} {Import} {Ascii} {AppendDelimited} SELECT Name + ".lu" {Lookup} COEDITKEY FORMKEY CASE Choice = "Save" : CURSOR NORMAL Name = GetFile("*.lu", "Name:", "Enter name of ASCII file (without extension) or directory", Dir, FALSE) CURSOR OFF IF Name = "" THEN LOOP ENDIF Dir = GetDir(Name) IF ISFILE(Name + ".lu") THEN RUN "del " + Name + ".lu" ENDIF DO_IT! MENU {Tools} {ExportImport} {Export} {Ascii} {Delimited} {Lookup} SELECT Name + ".lu" COEDITKEY OTHERWISE : BEEP ENDSWITCH CASE Retval = -59 : ;"F1" IF FIELD() = "Keys" THEN KeyLu(FALSE) ELSE HelpScreen() ENDIF ENDSWITCH ENDWHILE UNLOCKRECORD IF NOT ISEMPTY("Lookup") THEN COPYTOARRAY Lookup Choice = 0 FOR i FROM 2 TO 10 RemoveSpace(i) Choice = Choice + LEN(Lookup[i]) ENDFOR ELSE ARRAY Lookup[10] FOR i FROM 2 TO 10 Lookup[i] = "" ENDFOR ENDIF IF ISEMPTY("Lookup") OR Choice = 0 THEN SHOWMENU "Cancel" : "go back to viewing the data base", "Forward" : "all the records will be put in Answer table" TO Choice SWITCH CASE Choice = "Cancel" OR Choice = "Esc" : FORMKEY MOVETO TableMain FORMKEY RETURN ENDSWITCH ENDIF DO_IT! MENU {Ask} SELECT TableMain CHECK Choice = Prepare([Index], 2) IF LEN(Choice) > 0 THEN [Index] = "_num, " + Choice ELSE [Index] = "_num" ENDIF [Year] = Prepare([Year], 3) SWITCH CASE UPPER(Lookup[4]) = "MARKED" : [Flag] = "NOT BLANK" CASE UPPER(Lookup[4]) = "UNMARKED" : [Flag] = "BLANK" OTHERWISE : [Flag] = "" ENDSWITCH IF LEN(Lookup[5]) > 0 THEN MENU {Ask} {Ath} [Index] = "_num" [Authors] = Prepare([Authors], 5) ENDIF IF LEN(Lookup[6]) > 0 THEN MENU {Ask} {Ins} [Index] = "_num" [Institute] = Prepare([Institute], 6) ENDIF IF LEN(Lookup[7]) > 0 THEN MENU {Ask} {Nam} [Index] = "_num" [Name] = Prepare([Name], 7) ENDIF IF LEN(Lookup[8]) > 0 THEN MENU {Ask} {Src} [Index] = "_num" [Source] = Prepare([Source], 8) ENDIF IF LEN(Lookup[9]) > 0 THEN MENU {Ask} {Abs} [Index] = "_num" [Abstract] = Prepare([Abstract], 9) ENDIF IF LEN(Lookup[10]) > 0 THEN MENU {Ask} {Key} [Index] = "_num" [Keys] = Prepare([Keys], 10) ENDIF MESSAGE "Working - search is under way" DO_IT! MOVETO 1 WHILE IMAGETYPE() = "Query" CLEARIMAGE ENDWHILE IF ISEMPTY("Answer") THEN MESSAGE "Nothing is found (press any key to continue)" i = GETCHAR() TableMain = "Ref" IF TableName[1] = "Answer" THEN TableName[1] = "Ref" ENDIF MOVETO TableMain COEDITKEY FORMKEY RETURN ENDIF COPYFORM "Ref" "F" "Answer" "F" TableMain = "Answer" IF TableName[1] = "Ref" THEN TableName[1] = "Answer" ENDIF MOVETO TableMain FORMKEY COEDITKEY ENDPROC PROC RemoveSpace(i) WHILE SUBSTR(Lookup[i], 1, 1) = " " Lookup[i] = SUBSTR(Lookup[i], 2, LEN(Lookup[i]) - 1) ENDWHILE WHILE SUBSTR(Lookup[i], LEN(Lookup[i]), 1) = " " Lookup[i] = SUBSTR(Lookup[i], 1, LEN(Lookup[i]) - 1) ENDWHILE ENDPROC PROC Prepare(Str, i) PRIVATE Mode IF LEN(Lookup[i]) > 0 THEN Mode = 1 Str = Str + ".." WHILE LEN(Lookup[i]) > 0 SWITCH CASE SUBSTR(Lookup[i], 1, 1) = " " : IF Mode = 1 THEN Str = Str + ".. OR .." ELSE Str = Str + " " ENDIF CASE SUBSTR(Lookup[i], 1, 1) = "\"" : Mode = -Mode Str = Str + "\"" ; CASE SUBSTR(Lookup[i], 1, 1) = "\"" : ; Str = Str + "\\\"" ; CASE SUBSTR(Lookup[i], 1, 1) = "\\" : ; Str = Str + "\\\\" OTHERWISE : Str = Str + SUBSTR(Lookup[i], 1, 1) ENDSWITCH Lookup[i] = SUBSTR(Lookup[i], 2, LEN(Lookup[i]) - 1) ENDWHILE Str = Str + ".." ENDIF RETURN Str ENDPROC PROC SearchOneRecord() IF ISEMPTY("Ref") THEN MESSAGE "Data base is empty" SLEEP 1000 RETURN ENDIF IF FieldLookUp <> ifn THEN FieldLookUp = ifn Value = "" ENDIF PAINTCANVAS ATTRIBUTE AtMenu 0, 0, 1, 79 STYLE ATTRIBUTE AtMenu @ 1,0 CLEAR EOL ?? "Enter value or pattern to search for" @ 0,0 CLEAR EOL ?? "Value: " CURSOR NORMAL ACCEPT "A60" DEFAULT Value TO Value CURSOR OFF IF NOT Retval THEN RETURN ENDIF SearchAgain(FALSE) ENDPROC PROC SearchAgain(Cond) PRIVATE Num IF FieldLookUp <> ifn OR Value = "" THEN MESSAGE "No search value specified" SLEEP 1000 RETURN ENDIF UNLOCKRECORD FORMKEY IF itn <> 1 THEN MOVETO TableName[ifn - 2] MOVETO FIELD FieldName[ifn] ENDIF MESSAGE "Working - search is under way" IF Cond THEN DOWN LOCATE NEXT PATTERN ".." + Value + ".." ELSE LOCATE PATTERN ".." + Value + ".." ENDIF IF NOT Retval THEN MESSAGE "Value or pattern not found" SLEEP 1000 IF Cond THEN UP ENDIF MOVETO TableMain ELSE IF itn <> 1 THEN Num = [Index] WHILE TRUE MOVETO TableMain MOVETO [Index] LOCATE Num IF Retval THEN QUITLOOP ELSE MOVETO TableName[ifn - 2] MOVETO FIELD FieldName[ifn] MESSAGE "Working - search is under way" DOWN LOCATE NEXT PATTERN ".." + Value + ".." IF NOT Retval THEN MESSAGE "Value or pattern not found" SLEEP 1000 UP MOVETO TableMain QUITLOOP ELSE Num = [Index] ENDIF ENDIF ENDWHILE ENDIF ENDIF FORMKEY ENDPROC