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毫秒