大家好,我們今日繼續講解VBA代碼解決方案的第135講內容:隨機文件的應用,建立一個準數據庫的隨機文件。VBA到這裡文件的講解進入一個十分精華的部分,我要通過這幾講的內容讓大家看到一個實際的準數據庫的操作。今天就講如何建立一個類似於數據的隨機文件。我們先來看看第127講講過的內容:要從一個文件讀取數據,必須先使用Open語句打開該文件。
語法:Open pathname For mode [Access access][lock] As [#]filenumber [Len=reclength]
其中共有6個參數:
① Pathname是你要打開的文件名稱,可以包括驅動器和文件夾名稱
② Mode是個決定文件如何打開的關鍵字。順序文件可以以下列模式之一來打開:Input, Output 或Append。使用Input讀文件,Output寫文件,將覆蓋任何存在的文件,以及Append來寫入文件,同時附加上任何已經存在的信息。
③ Access是決定決定文件讀寫的關鍵字,Access可以是:Shared(共享),Lock Read(鎖定讀),Lock Write(鎖定寫)或Lock Read Write(鎖定讀寫)。
④ Lock決定了哪些文件的操作是允許其它過程進行的。例如,Read, Write 或者 Read Write。
⑤ Filenumber是從1到511的數字,該數字用來指向順序操作中的文件。一個唯一的文件號碼。
⑥ reclength明確順序文件裡總字符數,或者是隨機文件裡記錄大小。
我們來看這六個參數中的第6個參數指出,如果是隨機文件要以記錄的大小打開此文件,這一點要特別注意。
我們先看下面的代碼截圖:
我們看下面的代碼:
Option Explicit
Type MyDictionary
myen As String * 10
mysp As String * 20
End Type
Sub MytypeDictionary()
Dim d As MyDictionary
Dim RecNr As Long
Dim myrecord As String
Dim totalRec As Long
RecNr = 1
Open "E:\nz\work\文章\MytypeDictionary.txt" For Random As #1 Len = Len(d) '打開文件作隨機訪問
Do
myrecord = InputBox("Enter an type word", "我的型號字典")
d.myen = myrecord
If myrecord = "" Then Exit Do '如取消則退出循環
myrecord = InputBox("Enter the describe for " _
& d.myen, ":")
If myrecord = "" Then Exit Do
d.mysp = myrecord
Put #1, RecNr, d ' 寫入記錄
RecNr = RecNr + 1 ' 計數器增加
Loop Until myrecord = "" '詢問型號直到取消
totalRec = LOF(1) / Len(d)
MsgBox "文件共有 " & totalRec & "條記錄."
Close #1 ' 關閉文件
End Sub
在上述過程中要建立一個我自己的型號字典的小型數據,只不過這個數據庫是TXT的,
過程MytypeDictionary開始時,聲明四個變量,變量d聲明為用戶定義的類型myDictionary。該類型在前面就用Type語句聲明瞭。在給變量RecNr賦予了初始值之後,VBA打開文件E:\nz\work\文章\MytypeDictionary.txt,並且將其作為文件編碼1隨機訪問。指令Len(d)告訴VB每條記錄的大小為10+20=30個字符。
接下來VB執行Do…Until循環裡面的語句,直到你取消。循環裡的第一條語句提示你輸入一個type,並且將其賦予變量myrecord,然後該值被傳遞給用戶定義d的第一個成員(d.myen)。
一旦你停止輸入數據,VB就會退出Do循環,並且執行程序裡的最後的語句計算和顯示文件裡的記錄總數。最後一條語句將文件關閉。如果你輸入了type並點擊確定,那麼下個對話框就會提示你輸入對type的描述語。當然,如果你決定現在就退出的話,VB就會跳出循環並且繼續剩下的語句。如果一切正常,你輸入了type的描述語,那麼VB就會將它賦予變量myrecord並且傳遞給用戶自定義變量d的第二個成員(d.mysp),接下來,VB使用下述語句將整條記錄寫入到文件裡:
Put #1, recNr, d
寫入第一條記錄後,VB會給記錄計數器增加1,然後重複循環裡的語句。過程MytypeDictionary允許你在你的字典裡輸入任意多條記錄。當你退出提出詞語時,過程使用LOF和Len函數來計算文件裡的總記錄數。VB在顯示信息後關閉該文本文件。
創建隨機文件僅僅是個開始,接下來的下一講中我們將講解如何使用一個開啟的隨機文件的 記錄。
下面我們看看運行的結果:
同理我們再錄入:"機械2" 和"設備2上用的B類設備"
這時我們的數據庫會是什麼樣子呢?打開文件吧:
今日內容迴向:
1 隨機文件的打開和順序文件的打開有什麼不同?
2 隨機文件如何寫入數據?
閱讀更多 VBA專家 的文章