• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

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

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 34次 | 進入軟件測試論壇討論

    領測軟件測試網 作者:羊黎蓉

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

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>