国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

在VB中引用.dbf及索引文件

2019-11-18 17:49:18
字體:
供稿:網(wǎng)友
如何用FOX以外的編程語言來取得.dbf數(shù)據(jù)庫的記錄值和引用.idx和.cdx索引一直都是程序員討論的話題之一。現(xiàn)有一任務(wù)是在一個(gè)觸摸屏系統(tǒng)中加入一個(gè)用戶查詢水費(fèi)界面。每個(gè)用戶可隨時(shí)查詢到自己的水費(fèi)記錄。我使用VB5.0,希望打開NetWare系統(tǒng)下營業(yè)收費(fèi)系統(tǒng)的七個(gè).dbf數(shù)據(jù)表并進(jìn)行查詢。每個(gè)數(shù)據(jù)表有將近10萬條記錄。通過10M集線器交換數(shù)據(jù),查詢的字段都不是唯一的。顯然這樣大的數(shù)據(jù)量,又是通過10M網(wǎng)絡(luò)傳遞,如果VB使用SQL方式查詢,則最少要2分鐘時(shí)間才能得到答復(fù)。讓一個(gè)用戶在機(jī)器旁邊等2分鐘是不現(xiàn)實(shí)的。于是想利用FoxPRo自身的.idx或.cdx索引文件來查找。
  編程可用兩種方式實(shí)現(xiàn)。一種是直接在VB中調(diào)用,另一種使用VB中的shell函數(shù)調(diào)用FoxPro的exe程序。
  方法一、直接在VB中調(diào)用.dbf文件
  一、.在FoxPro數(shù)據(jù)庫的所在目錄下建立一個(gè)與FoxPro數(shù)據(jù)庫文件名相同的.inf文本文件
  步驟:1.創(chuàng)建文本文件*.inf,與數(shù)據(jù)表同名。
  2.在文本文件的第一行,輸入[FoxPro2.5];如果指定的是FoxPro2.0索引,則輸入[FoxPro2.0],其余以此類推。
  3.依次輸入各指定索引文件名形式IDXn=*.idx或CDXn=*.cdx。其中n為數(shù)字,依次表示第1個(gè)IDX索引文件,第2個(gè)IDX索引文件。或第1個(gè)CDX索引文件,第2個(gè)……以此類推。
  注意:如果不能將.inf文件與數(shù)據(jù)庫存儲(chǔ)在同一目錄下,或?yàn)榱司S護(hù)方便而希望將所有文件存儲(chǔ)在一個(gè)共享點(diǎn)。可采用創(chuàng)建Windows注冊(cè)表項(xiàng)的方法,指向存儲(chǔ).inf的文件路徑。(詳見VB5的聯(lián)機(jī)手冊(cè))
  二、編寫程序
  用OPENDATABASE方法直接打開外部FoxPro表。
  主要語句如下:
  dimdbasdatabase
  dimtbasrecordset
  ′打開外部數(shù)據(jù)庫
  setdb=opendatabase(“c:/fox/”,false,false,”foxpro2.5;”)′注意FoxPro與2.5之間必須有空格
  settb=db.openrecordset(“abc”)
  ′調(diào)用索引
  tb.index=“abc1#idx”′注意索引名為“索引文件名#后綴名”
  tb.seek“=”,“111-111”′搜索唯一值為“111-111”的記錄
  方法二、用shell()函數(shù)調(diào)用VF的idx文件
  用VB接受用戶命令,然后調(diào)用VF的.prg編譯的.exe文件,按用戶要求在數(shù)據(jù)庫中查詢,將查詢結(jié)果放置在一個(gè).TXT文件中。VB從.TXT文件取數(shù)顯示,再次將查詢結(jié)果傳遞給VF的.prg編譯的.exe文件,查詢?nèi)?shù)結(jié)果。具體編程從略,這里要著重討論shell()函數(shù)的特性:shell函數(shù)是以異步方式來執(zhí)行其它程序的。也就是說,用shell啟動(dòng)的程序可能還沒有完成執(zhí)行過程,就已經(jīng)執(zhí)行到shell函數(shù)之后的語句。這種執(zhí)行方式打亂了程序固有的順序執(zhí)行方式,如果不加注意,程序的運(yùn)行將產(chǎn)生混亂。
  如果語句如下
  ……
  shell(c:/file1.exe)′調(diào)用file.exe文件,并把結(jié)果放置在X1.txt中
  openc:/x1.txtforoutputas#1′打開X1.TXT文件,取查詢結(jié)果。
  ……
  按一般執(zhí)行方式,上述語句應(yīng)能正確執(zhí)行。然而實(shí)際運(yùn)行時(shí),即使語句全部正確,也會(huì)彈出錯(cuò)誤信息框:x1.txt文件不存在。原因就在于VB在執(zhí)行shell()語句時(shí),file1.exe文件還未執(zhí)行完,就繼續(xù)下一行語句:打開file1文件創(chuàng)建的x1.txt;所以出現(xiàn)錯(cuò)誤。
  經(jīng)過多次實(shí)驗(yàn),我最后采用了VB工具條中的timer控件來完成時(shí)間等待,程序編程通過。
  ……
  shell(c:/file1.exe)
  ‘運(yùn)行計(jì)時(shí)器
  timer1.enabled=true
  ……
  subtimer1_timer()
  ifdir(“c:/x1.txt”)<>””then
  openc:/x1.txtforoutputas#1
  ……
  timer1.enabled=false
  endsub
實(shí)際運(yùn)行速度很快,2~3秒內(nèi)完成查詢操作。->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 孝感市| 彰化市| 南和县| 呼玛县| 万山特区| 宁城县| 湘潭市| 永嘉县| 广东省| 澄迈县| 太和县| 嘉义县| 五常市| 上林县| 宜兰县| 金坛市| 吉首市| 綦江县| 区。| 屯门区| 新源县| 特克斯县| 奉化市| 塔河县| 长顺县| 大丰市| 长顺县| 冀州市| 边坝县| 乳山市| 泰兴市| 长沙市| 石家庄市| 禹州市| 香格里拉县| 宣汉县| 渭南市| 盐边县| 沁水县| 札达县| 民权县|