Database 版 (精华区)
发信人: sleep (休息休息), 信区: Database
标 题: 如何进行全文检索
发信站: 哈工大紫丁香 (2000年12月04日13:41:16 星期一), 站内信件
2.如何进行全文检索
新建一FORM,包含以下控件:
StartSearch :COMMANDBUTTOM
edtText :EDITBOX
SearchString :TEXT
chkCase :CHECKBOX
將下列程式加入 StartSearch BUTTOM 的 CLICK METHOD
LOCAL cTAGER, cSOURCE, i, llFound, lnStart, lnLen, lnChoice
LOCAL llKeepLooking, llCaseSensitive
llFound = .F.
llCaseSensitive = THISFORM.chkCase.Value &&比較大小寫
cTAGER = THISFORM.SearchString &&輸入搜尋字串欄位
IF EMPTY(cTAGER.Text)
WAIT WINDOW "您尚未輸入目的字串" TIMEOUT 1.5
cTAGER.SetFocus
RETURN
ENDIF
* 搜尋第一個符合條件者
cSOURCE = THISFORM.edtText &&本文
lnLen = LEN(ALLTRIM(cTAGER.Text)) &&搜尋字串長度
lnStart = cSOURCE.SelStart &&由游標位置開始搜尋
* 判斷字串是否已被 selected
IF cSOURCE.SelText = ALLTRIM(cTAGER.Text) OR ;
(!llCaseSensitive AND (UPPER(cSOURCE.SelText) =
UPPER(ALLTRIM(cTAGER.Text))))
lnStart = lnStart + 1 &&由下一個字元找起
ENDIF
THISFORM.LockScreen = .T.
cSOURCE.HideSelection = .T. &&去除Selected
llKeepLooking = .T.
DO WHILE llKeepLooking
FOR i = lnStart TO LEN(cSOURCE.Value)
cSOURCE.SelStart = i
cSOURCE.SelLength = lnLen
IF cSOURCE.SelText = ALLTRIM(cTAGER.Text) OR ;
(!llCaseSensitive AND ;
(UPPER(cSOURCE.SelText) = UPPER(ALLTRIM(cTAGER.Text))))
llFound = .T.
llKeepLooking = .F.
EXIT
ENDIF
ENDFOR
IF !llFound
lnChoice=MESSAGEBOX("無此字串,是否由本文起始搜尋?",64+0+4,"無此字串")
IF lnChoice = 6 && Yes
llKeepLooking = .T.
lnStart = 0
ELSE
llKeepLooking = .F.
ENDIF
ENDIF
ENDDO
cSOURCE.HideSelection = .F.
THISFORM.LockScreen = .F.
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.227.121]
--
※ 修改:·sleep 於 12月04日13:52:42 修改本文·[FROM: 202.118.227.121]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.101毫秒