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
瞞天過海——仿生設計萌到家
藝術啟蒙(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
主站蜘蛛池模板: 免费无遮挡AV| 色老二精品视频在线观看| 欧美精品亚洲日韩a| 18禁影院亚洲专区| 免费看美女毛片| 亚洲午夜天堂| 久久夜夜视频| 成人亚洲国产| 日韩毛片基地| 国产乱人伦精品一区二区| 国产91无毒不卡在线观看| 日本午夜三级| 男人的天堂久久精品激情| 久久五月天综合| 极品国产在线| 2021无码专区人妻系列日韩| 99精品热视频这里只有精品7| 亚洲VA中文字幕| 亚洲Aⅴ无码专区在线观看q| 国产第一页免费浮力影院| 丝袜无码一区二区三区| 久久国产亚洲欧美日韩精品| 91久久夜色精品国产网站| 国产一级毛片在线| 波多野结衣久久精品| 久久先锋资源| 凹凸国产熟女精品视频| 91精品国产自产在线观看| 天堂av综合网| 欧美黄网在线| 亚洲欧美日本国产综合在线| 亚洲欧美一区二区三区麻豆| 日韩成人免费网站| 欧美中文字幕无线码视频| 无码丝袜人妻| 亚洲午夜综合网| 亚洲国产日韩在线成人蜜芽| 国产精品综合久久久| 国产精品一区二区不卡的视频| 国产一级毛片高清完整视频版| 亚洲清纯自偷自拍另类专区| 毛片免费视频| 免费无码又爽又刺激高| 无码中文字幕乱码免费2| 日本欧美中文字幕精品亚洲| 亚洲精品第一在线观看视频| 亚洲福利一区二区三区| 中文字幕有乳无码| 亚洲国产日韩在线观看| 第一区免费在线观看| 免费Aⅴ片在线观看蜜芽Tⅴ| 伊人五月丁香综合AⅤ| 99在线观看视频免费| 久久无码免费束人妻| 日韩区欧美区| 精品国产自在现线看久久| 国产剧情伊人| 亚洲一级毛片免费观看| 91年精品国产福利线观看久久| 看国产一级毛片| 高清码无在线看| 色久综合在线| 亚洲an第二区国产精品| 欧美一级黄片一区2区| 国模沟沟一区二区三区| 色悠久久久| 18黑白丝水手服自慰喷水网站| 少妇精品在线| 国产精品久久久久久久伊一| 免费一级无码在线网站 | 超碰91免费人妻| 国产精品久久久久鬼色| 欧美激情视频二区三区| 久久人妻xunleige无码| 高清欧美性猛交XXXX黑人猛交| 91久久国产成人免费观看| 亚洲中文无码av永久伊人| www.91在线播放| 国产激爽大片高清在线观看| 中文精品久久久久国产网址| 在线视频亚洲欧美| 国产精品九九视频|