999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Gm d VFP中使用函數對檔案數據庫進行模糊查詢

2015-10-31 09:17:59
中國科技縱橫 2015年14期
關鍵詞:程序數據庫設計

陳 元

(中國建筑西北設計研究院有限公司,陜西西安 710018)

Gm d VFP中使用函數對檔案數據庫進行模糊查詢

陳元

(中國建筑西北設計研究院有限公司,陜西西安 710018)

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

VFP 函數 檔案數據庫

本單位使用VFP的表設計器建立了30多年已歸檔的工程檔案數據,包含設計編號,工程名稱,子項名稱,設計單位,設總姓名,底圖柜,歸檔時間,設計階段,電子文件等字段,數據庫文件名為shuju. dbf,目前記錄了約3萬個項目的信息,只列舉少數部分如表1。

對數以萬計的記錄如果靠手工查詢統計,效率是很低下的。所以必需設計相應的程序,應當說明的是,數據庫處于基礎位置,所有程序都是對它進行操作,數據庫文件本身的重要性不言而喻。

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

表1

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

如果對子項名稱執行檢索,程序代碼如下:(注:程序后引號內文字是對程序的說明)

SET TALK OFF

CLEAR

DO WHILE.T.

STORE SPACE(12) TO DG

@ 8,18 SAY"請輸入關鍵字:" GET DG

READ “建立并提示輸入關鍵字,并讀入”

DG1=RTRIM(DG)

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

CLEAR

F=2

USE shuju.dbf

SORT ON 工程名稱 TO shuju1

USE

USE TUSHU1“對數據庫排序,打開新數據庫”

DO WHILE .not.eof()

DX=工程名稱

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

@ f,15 say 工程名稱 字段內容,否則判斷下一條記錄”

@ f,87 say 子項名稱

F=F+1

@ f,22 say 合同號

@ f,59 say 設計所

@ f,77 say 底圖柜

F=F+1

@ f,22 say 設總

@ f,85 say 歸檔時間

F=F+1

@ F,15 SAY"記錄分界線"

SKIP

F=F+1

ELSE

SKIP

ENDIF

if f=18 “屏幕已滿,用亮帶提示繼續查找或結束”

F=F+1

@F,20 PROMPT"繼續"MESSAGE""

@F,40 PROMPT"結束"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"重新開始"MESSAGE"" “數據庫查找完畢,用亮帶

@F,50 PROMPT"結束退出"MESSAGE"" 提示開始新的查找或結束”

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下運行通過)

這種方法實現了真正意義的模糊查詢,如果對程序稍加修改,輸入多個字符串,在一次循環中使用多次AT()函數,就能實現多字段的復合查找,如果使用在程序中使用SET DEVICE TO FILE(PRINTER)命令,就可以將查找的的內容直接輸出到文件或打印機。嚴格說,這個過程是重組數據庫然后再按順序對其查找,因此速度肯定不及FIND和SEEK命令,但實際使用中是感覺不到的,主要存在的問題是,程序代碼比較多,程序設計有相當多“@”命令,只是為了設置屏幕輸出的位置,而且,查詢結果不能直接生成文件,所以還是有值得改進的地方。

“面向對象”設計的方法具有人機對話界面直觀,在設計器中直接建立完成,程序代碼相對較少等優點,而且輸出結果能夠一次完成,拖動滾動條即可全部顯示,直接調用菜單欄的“另存”即可生成文件,快捷方便,程序不再需要繁瑣的屏幕輸出顯示設置,因此編程工作得到了簡化。首先使用表單設計器直接建立起應用界面如圖1。

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

點擊“確定”源代碼如下

PUBLIC GUJ1

DO form GUJ1

PUBLIC M

M=GUJ1.TEXT1.TEXT

M1=RTRIM(M)

M2=LTRIM(M1)

M3="%"+M2+"%"

select 設計編號,子項號,工程名稱,子項名稱 FROM shuju WHERE 工程名稱 LIKE M3 ORDER BY 設計編號

CLOSE ALL

GUJ1.RELEASE

點擊“退出”源代碼如下

GUJ.RELEASE

(上述程序在VFP6.0下運行通過)

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

猜你喜歡
程序數據庫設計
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
“程序猿”的生活什么樣
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 亚洲va在线观看| 极品国产一区二区三区| 高清国产在线| 狠狠色香婷婷久久亚洲精品| 精品伊人久久久香线蕉| 国产成人你懂的在线观看| 99热这里只有精品2| 国产在线观看精品| 国产亚洲欧美在线视频| 国产麻豆精品在线观看| a毛片基地免费大全| 91精品国产一区| 国产丝袜啪啪| 日本人妻一区二区三区不卡影院 | 久久这里只精品国产99热8| аⅴ资源中文在线天堂| 91无码视频在线观看| 日本91视频| 国产香蕉一区二区在线网站| 精品视频一区二区三区在线播| 国产一区自拍视频| 精品少妇人妻无码久久| 亚洲男女在线| 不卡视频国产| 成人国产精品2021| 国产h视频在线观看视频| 午夜精品影院| 午夜啪啪福利| yjizz视频最新网站在线| 亚洲精品午夜天堂网页| 国产精品19p| 欧美日韩成人在线观看| 亚洲欧洲日韩久久狠狠爱| 国产永久在线观看| 青青青亚洲精品国产| 婷婷亚洲视频| 欧美亚洲综合免费精品高清在线观看| 国产毛片片精品天天看视频| 色久综合在线| 日韩欧美国产成人| 国产免费黄| 亚洲精品欧美重口| 亚洲一级毛片免费观看| 粉嫩国产白浆在线观看| 国产欧美日韩视频怡春院| 91成人免费观看在线观看| 国产欧美日本在线观看| 91久久国产热精品免费| 在线观看的黄网| 网友自拍视频精品区| 91亚洲精品第一| 手机在线国产精品| 欧美精品成人一区二区视频一| 91麻豆精品国产91久久久久| 亚洲成人高清无码| 国产成人精品2021欧美日韩| 宅男噜噜噜66国产在线观看| 91在线精品麻豆欧美在线| 亚洲动漫h| 动漫精品中文字幕无码| 久久影院一区二区h| 国产福利影院在线观看| 国产区人妖精品人妖精品视频| 成年午夜精品久久精品| 免费va国产在线观看| 国产无人区一区二区三区| 狠狠色丁香婷婷综合| 成人一级免费视频| 青青国产在线| 国产黄色免费看| 亚洲国产精品国自产拍A| 亚洲综合色婷婷中文字幕| 91久久偷偷做嫩草影院| 欧美亚洲欧美| 色天天综合久久久久综合片| 国产内射在线观看| 伊在人亚洲香蕉精品播放| 亚洲一级毛片免费看| 狠狠色噜噜狠狠狠狠奇米777| 欲色天天综合网| 欧美一区二区人人喊爽| 国产成人综合日韩精品无码首页|