亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Gm d VFP中使用函數(shù)對(duì)檔案數(shù)據(jù)庫(kù)進(jìn)行模糊查詢(xún)

        2015-10-31 09:17:59
        中國(guó)科技縱橫 2015年14期
        關(guān)鍵詞:子項(xiàng)關(guān)鍵字命令

        陳 元

        (中國(guó)建筑西北設(shè)計(jì)研究院有限公司,陜西西安 710018)

        Gm d VFP中使用函數(shù)對(duì)檔案數(shù)據(jù)庫(kù)進(jìn)行模糊查詢(xún)

        陳元

        (中國(guó)建筑西北設(shè)計(jì)研究院有限公司,陜西西安 710018)

        VFP6.0是一種優(yōu)秀的小型數(shù)據(jù)庫(kù)管理軟件,功能齊全,程序語(yǔ)言簡(jiǎn)潔直觀,將它作為工具用于單位工程檔案數(shù)據(jù)庫(kù)的建立與管理是比較理想的選擇。用這兩種方法設(shè)計(jì)的檢索程序在投入實(shí)際工作后,在快速查找,數(shù)據(jù)匯總等方面大大提高了工作效率,使用至今,比較穩(wěn)定可靠,給檔案處日常工作帶來(lái)的便利是實(shí)實(shí)在在的,目前準(zhǔn)備繼續(xù)擴(kuò)展功能,從而使其更好地在工作中發(fā)揮作用。

        VFP 函數(shù) 檔案數(shù)據(jù)庫(kù)

        本單位使用VFP的表設(shè)計(jì)器建立了30多年已歸檔的工程檔案數(shù)據(jù),包含設(shè)計(jì)編號(hào),工程名稱(chēng),子項(xiàng)名稱(chēng),設(shè)計(jì)單位,設(shè)總姓名,底圖柜,歸檔時(shí)間,設(shè)計(jì)階段,電子文件等字段,數(shù)據(jù)庫(kù)文件名為shuju. dbf,目前記錄了約3萬(wàn)個(gè)項(xiàng)目的信息,只列舉少數(shù)部分如表1。

        對(duì)數(shù)以萬(wàn)計(jì)的記錄如果靠手工查詢(xún)統(tǒng)計(jì),效率是很低下的。所以必需設(shè)計(jì)相應(yīng)的程序,應(yīng)當(dāng)說(shuō)明的是,數(shù)據(jù)庫(kù)處于基礎(chǔ)位置,所有程序都是對(duì)它進(jìn)行操作,數(shù)據(jù)庫(kù)文件本身的重要性不言而喻。

        工作中要求對(duì)工程名稱(chēng),子項(xiàng)名稱(chēng)等實(shí)施快速檢索,輸入關(guān)鍵字后將符合要求的記錄輸出,如果找不到則輸出空白提示。對(duì)此,最簡(jiǎn)單的辦法是直接使用查詢(xún)數(shù)據(jù)庫(kù)記錄命令FIND和SEEK,但這兩個(gè)命令都有一個(gè)不盡人意的地方,雖然它們也可以模糊查詢(xún),并不一定要求輸入的關(guān)鍵字與記錄的字段內(nèi)容完全一致,但卻要求輸入的關(guān)鍵字必須是數(shù)據(jù)庫(kù)記錄內(nèi)容字符串前面的一部分才認(rèn)為匹配成功,而在實(shí)際中,我們很難作到輸入的關(guān)鍵字一定是數(shù)據(jù)庫(kù)記錄的前一個(gè)或幾個(gè)關(guān)鍵字,假如,查詢(xún)子項(xiàng)名稱(chēng)時(shí)輸入“大廈”,名稱(chēng)為“信息大廈”的記錄卻被濾掉,這在實(shí)際工作中是絕不被允許的,而且如果輸入為空時(shí),F(xiàn)IND和SEEK會(huì)立即報(bào)錯(cuò)并退出整個(gè)程序,穩(wěn)定性也不令人滿(mǎn)意。

        表1

        為解決這個(gè)問(wèn)題,可以在VFP中采取了如下兩種方法做到真正的模糊查詢(xún),首先介紹函數(shù)法,使用STORE SPACE()TO和READ命令建立內(nèi)存變量用于讀入用戶(hù)輸入的關(guān)鍵字,建立的內(nèi)存變量應(yīng)有能容納5個(gè)漢字以上的空間以確保能夠接受內(nèi)容多少不一的關(guān)鍵字,然后用RTRIM()和LTRIM()函數(shù)除去輸入內(nèi)容左右兩邊的空格,除去空格的目的是,1.絕大多數(shù)情況下,空格不是查找的關(guān)鍵字,2.如果輸入的關(guān)鍵字未能占滿(mǎn)內(nèi)存變量,那么輸入的內(nèi)容將是“輸入的關(guān)鍵字+剩余的幾個(gè)空格”,所以必需要以經(jīng)處理的字符串作為查詢(xún)依據(jù),然后打開(kāi)數(shù)據(jù)庫(kù),用SORT命令重排數(shù)據(jù)庫(kù)——按需要查詢(xún)的字段名排序(相當(dāng)于使用FIND、SEEK命令前對(duì)數(shù)據(jù)庫(kù)的索引),打開(kāi)新數(shù)據(jù)庫(kù),建立循環(huán),接著就是最關(guān)鍵的一步——利用判斷子串函數(shù)AT()去判斷經(jīng)處理后的關(guān)鍵字是否為第一個(gè)相應(yīng)字段內(nèi)容的子串,如果是則將該記錄全部或部分字段內(nèi)容輸出,不是則繼續(xù)用AT()判斷下一條記錄的相應(yīng)字段內(nèi)容。在滿(mǎn)足條件記錄較多的情況下,可以輸出幾條記錄后就用CLEAR命令清屏,在原位置上重新輸出,直到將所有記錄判斷完畢,結(jié)束循環(huán)。

        如果對(duì)子項(xiàng)名稱(chēng)執(zhí)行檢索,程序代碼如下:(注:程序后引號(hào)內(nèi)文字是對(duì)程序的說(shuō)明)

        SET TALK OFF

        CLEAR

        DO WHILE.T.

        STORE SPACE(12) TO DG

        @ 8,18 SAY"請(qǐng)輸入關(guān)鍵字:" GET DG

        READ “建立并提示輸入關(guān)鍵字,并讀入”

        DG1=RTRIM(DG)

        DG2=LTRIM(DG1) “除去空格”

        CLEAR

        F=2

        USE shuju.dbf

        SORT ON 工程名稱(chēng) TO shuju1

        USE

        USE TUSHU1“對(duì)數(shù)據(jù)庫(kù)排序,打開(kāi)新數(shù)據(jù)庫(kù)”

        DO WHILE .not.eof()

        DX=工程名稱(chēng)

        IF AT(DG2,DX)<>0 “判斷是否滿(mǎn)足條件,是則輸出全部

        @ f,15 say 工程名稱(chēng) 字段內(nèi)容,否則判斷下一條記錄”

        @ f,87 say 子項(xiàng)名稱(chēng)

        F=F+1

        @ f,22 say 合同號(hào)

        @ f,59 say 設(shè)計(jì)所

        @ f,77 say 底圖柜

        F=F+1

        @ f,22 say 設(shè)總

        @ f,85 say 歸檔時(shí)間

        F=F+1

        @ F,15 SAY"記錄分界線(xiàn)"

        SKIP

        F=F+1

        ELSE

        SKIP

        ENDIF

        if f=18 “屏幕已滿(mǎn),用亮帶提示繼續(xù)查找或結(jié)束”

        F=F+1

        @F,20 PROMPT"繼續(xù)"MESSAGE""

        @F,40 PROMPT"結(jié)束"MESSAGE""

        SET MESSAGE TO 20

        D=1

        MENU TO D

        DO CASE

        CASE D=1

        F=2

        CLEAR

        LOOP

        CASE D=2

        CLEAR

        EXIT

        ENDCASE

        ENDIF

        ENDDO

        F=F+1

        IF F=3 “提示未能找到符合條件的記錄”

        @6,35 SAY"未找到匹配的記錄"

        ENDIF

        @F,30 PROMPT"重新開(kāi)始"MESSAGE"" “數(shù)據(jù)庫(kù)查找完畢,用亮帶

        @F,50 PROMPT"結(jié)束退出"MESSAGE"" 提示開(kāi)始新的查找或結(jié)束”

        C=1

        SET MESSAGE TO 20

        MENU TO C

        DO CASE

        CASE C=1

        CLEAR

        LOOP

        CLEAR

        CASE C=2

        EXIT

        CLEAR

        ENDCASE

        ENDDO

        CLEAR

        USE

        DELETE FILE TUSHU1.DBF

        RETURN

        (上述程序在VFP6.0下運(yùn)行通過(guò))

        這種方法實(shí)現(xiàn)了真正意義的模糊查詢(xún),如果對(duì)程序稍加修改,輸入多個(gè)字符串,在一次循環(huán)中使用多次AT()函數(shù),就能實(shí)現(xiàn)多字段的復(fù)合查找,如果使用在程序中使用SET DEVICE TO FILE(PRINTER)命令,就可以將查找的的內(nèi)容直接輸出到文件或打印機(jī)。嚴(yán)格說(shuō),這個(gè)過(guò)程是重組數(shù)據(jù)庫(kù)然后再按順序?qū)ζ洳檎?,因此速度肯定不及FIND和SEEK命令,但實(shí)際使用中是感覺(jué)不到的,主要存在的問(wèn)題是,程序代碼比較多,程序設(shè)計(jì)有相當(dāng)多“@”命令,只是為了設(shè)置屏幕輸出的位置,而且,查詢(xún)結(jié)果不能直接生成文件,所以還是有值得改進(jìn)的地方。

        “面向?qū)ο蟆痹O(shè)計(jì)的方法具有人機(jī)對(duì)話(huà)界面直觀,在設(shè)計(jì)器中直接建立完成,程序代碼相對(duì)較少等優(yōu)點(diǎn),而且輸出結(jié)果能夠一次完成,拖動(dòng)滾動(dòng)條即可全部顯示,直接調(diào)用菜單欄的“另存”即可生成文件,快捷方便,程序不再需要繁瑣的屏幕輸出顯示設(shè)置,因此編程工作得到了簡(jiǎn)化。首先使用表單設(shè)計(jì)器直接建立起應(yīng)用界面如圖1。

        仍舊使用原來(lái)的數(shù)據(jù)庫(kù)文件shuju.dbf,直接用于查詢(xún)的命令語(yǔ)句仍需在對(duì)應(yīng)的設(shè)計(jì)器內(nèi)使用函數(shù),除原先的AT函數(shù)可用外,SELECT命令同樣有此功能且更加簡(jiǎn)潔,讀入輸入的數(shù)據(jù),首先也要濾掉空格,在SELSCT命令行加入LIKE選項(xiàng),判斷其是否是被查詢(xún)字段的子串,是則選中,否則對(duì)下一條字段內(nèi)容繼續(xù)判斷,比對(duì)完所有數(shù)據(jù)庫(kù)后將選中的記錄按設(shè)定的順序全部輸出,找不到時(shí)直接輸出空表。選擇子項(xiàng)名稱(chēng)后運(yùn)行界面及源代碼如下圖2;圖3。

        點(diǎn)擊“確定”源代碼如下

        PUBLIC GUJ1

        DO form GUJ1

        PUBLIC M

        M=GUJ1.TEXT1.TEXT

        M1=RTRIM(M)

        M2=LTRIM(M1)

        M3="%"+M2+"%"

        select 設(shè)計(jì)編號(hào),子項(xiàng)號(hào),工程名稱(chēng),子項(xiàng)名稱(chēng) FROM shuju WHERE 工程名稱(chēng) LIKE M3 ORDER BY 設(shè)計(jì)編號(hào)

        CLOSE ALL

        GUJ1.RELEASE

        點(diǎn)擊“退出”源代碼如下

        GUJ.RELEASE

        (上述程序在VFP6.0下運(yùn)行通過(guò))

        結(jié)語(yǔ):用這兩種方法設(shè)計(jì)的檢索程序在投入實(shí)際工作后,在快速查找,數(shù)據(jù)匯總等方面大大提高了工作效率,使用至今,比較穩(wěn)定可靠,給檔案處日常工作帶來(lái)的便利是實(shí)實(shí)在在的,目前準(zhǔn)備繼續(xù)擴(kuò)展功能,發(fā)揮檔案處已保存有多年的電子文件的優(yōu)勢(shì),將在查詢(xún)結(jié)果追加一個(gè)鏈接輸出,指向被查詢(xún)項(xiàng)目CAD文件在硬盤(pán)的存儲(chǔ)路徑,用戶(hù)只需選擇打開(kāi)就能看到CAD文件。實(shí)現(xiàn)看到文字和數(shù)字結(jié)果的同時(shí)也能迅速找到圖形信息的目的。程序設(shè)計(jì)的目的是為了為現(xiàn)實(shí)工作服務(wù),因此,歡迎為以上程序設(shè)計(jì)的不足提供寶貴的修改意見(jiàn),使其更好地在工作中發(fā)揮作用。

        猜你喜歡
        子項(xiàng)關(guān)鍵字命令
        履職盡責(zé)求實(shí)效 真抓實(shí)干勇作為——十個(gè)關(guān)鍵字,盤(pán)點(diǎn)江蘇統(tǒng)戰(zhàn)的2021
        只聽(tīng)主人的命令
        成功避開(kāi)“關(guān)鍵字”
        移防命令下達(dá)后
        右擊桌面就能控制系統(tǒng)
        這是人民的命令
        淺析劃分子項(xiàng)不得相容與詞語(yǔ)意義的模糊性
        戲劇之家(2015年16期)2015-02-28 01:57:50
        藍(lán)色命令
        基于用戶(hù)反饋的關(guān)系數(shù)據(jù)庫(kù)關(guān)鍵字查詢(xún)系統(tǒng)
        誘導(dǎo)性虛假下載鏈接不完全評(píng)測(cè)
        一区二区三区中文字幕脱狱者| 综合精品欧美日韩国产在线| 精品久久久久久午夜| 综合久久一区二区三区| 国产亚洲精品美女久久久久| 精品淑女少妇av久久免费| 在线精品国内视频秒播| 国产成人久久综合第一区| 久久精品国产av麻豆五月丁| 亚洲啪av永久无码精品放毛片| 在线观看av中文字幕不卡| 亚洲人妻中文字幕在线视频| 成人av毛片免费大全| 亚洲乱码日产精品一二三| 成年男女免费视频网站| 亚洲天堂中文字幕君一二三四| 99久久国产精品免费热| 帮老师解开蕾丝奶罩吸乳网站| 在线观看av中文字幕不卡| 日韩精品极品视频在线免费| 美女很黄很色国产av| 人妻丝袜av中文系列先锋影音| 午夜毛片午夜女人喷潮视频| 日韩av一区二区三区在线观看| 无码伊人66久久大杳蕉网站谷歌| 亚洲日本在线电影| 日韩久久久黄色一级av| 亚洲精品一区二区三区四区| 77777_亚洲午夜久久多人| 亚洲av永久无码一区| 亚洲综合欧美在线一区在线播放| 99精品一区二区三区免费视频| 三级日本午夜在线观看| 亚洲最新无码中文字幕久久| 日韩内射美女人妻一区二区三区| 无码熟妇人妻AV不卡| av在线高清观看亚洲| 我把护士日出水了视频90分钟| 亚洲日韩图片专区小说专区| 日韩女优在线一区二区| 人人妻人人澡人人爽超污|