大家好,我們今日繼續講解VBA代碼解決方案的第134講內容:隨機文件的特點及如何用自定義數據類型訪問隨機文件。當某文件包含結構數據時,就可以以隨機模式打開它。以隨機模式打開文件你可以做到:同時讀寫、快速訪問某特別記錄。

隨機文件有什麼特點呢?原來,在隨機文件裏,所有記錄都是等長度的,並且每條記錄都有相同數目的固定大小區域。區域的長度必須在文件寫入數據之前就確定。如果寫入某區域的字符串長度小於該區域的大小,那麼VBA就會自動在該字符串後面加空格來填充區域。如果寫入的文本比區域長度長的話,超出的字符就不會被寫入。說到這裏,你是不是看到了數據庫的影子呢?數據庫就是這樣,有很多朋友問到數據庫的相關問題,在這套"VBA代碼解決方案"中雖然會有所涉及,但不會很多,在之後,會專門出一本關於數據庫的書。

再次歸納一下,隨機文件是指儲存的記錄可以隨機訪問的文件,這意味着隨機文件裏的任何記錄都可以讀取,而不必讀取它之前的每條記錄。這是同順序文件的最爲顯著的區別。

爲什麼要自定義一種數據類型呢?因爲在操作隨機文件時經常會用到這類自定義的數據類型,或者說你在建立數據庫時會事先定義數據的類型,當你再次訪問這類數據時要定義一個與之匹配的變量與數據類型相一致爲好。

在VBA中,允許你在模塊的上面使用Type…End Type語句定義一個非標準的數據類型。這種非標準數據類型也經常成爲用戶自定義的數據類型。用戶自定義數據類型可以包括各種數據類型(字符串,整型,日期等等)的內容。當你在使用隨機訪問的文件時,該變量使你可以輕易地訪問個別記錄。

下面我們將實例說明一下如何自定義一個數據類型:

Option Explicit

Type MyDictionary

myen As String * 10

mysp As String * 20

End Type

Sub Mytype()

Dim myrecord As MyDictionary '聲明一個MyDictionary類型的變量

myrecord.myen = InputBox("請輸入一個數據", "記錄信息")

myrecord.mysp = InputBox("請輸入另一個數據", "記錄信息")

MsgBox "數據1:" & myrecord.myen & vbLf & "數據2:" & myrecord.mysp, vbOKOnly, "基本信息"

MsgBox "數據1的長度:" & Len(myrecord.myen) & vbLf & "數據2的長度:" & Len(myrecord.mysp), vbOKOnly, "基本信息"

End Sub

代碼截圖:

上面的例子中,用戶定義的名爲MyDictionary的類型包括兩個聲明爲String(字符串)的項目,並且有特定的大小。成員myen可以接受最多10個字符,第二個項目mysp的大小不能超過20個字符。

在運行過程中,要求輸入兩個字符,然後用對話框顯示你的輸入,最後爲了驗證字符的長度,再次顯示一下你錄入字符的長度。下面我們看一下運行的結果:

上面的對話框顯然是超過了10個字符。第二個對話框:

這次我錄入的字符是小於20個字符的數據。

我們看彈出的結果:

可以看出數據1被截取了,再看長度:

數據1的長度是10,數據2的長度是20,和我們的定義是完全一致的。這就是自定義數據的神奇之處。

今日內容迴向:

1 什麼是自定義數據?

2 什麼是隨機文件?談到隨機文件,你會想到什麼常用文件呢?

相關文章