此方法(以 Visual Basic 編寫)建立一個新的帳戶迭代。當同時建立多個遵循特定命名約定的帳戶時,這非常有用。
在我的工作領域,我需要每天在多個網路環境中建立多個帳戶。這些帳戶必須遵循每個環境的特定命名約定。新帳戶的命名約定可以是:
“節點”+姓氏+環境後綴+#。
例如,在我們的測試環境中,「nodemccoytest200」將是正確的命名約定。
必須考慮這些帳戶,然後是密碼、預設語言和原籍國。為此,我建立了一個 Access 資料庫,因為我喜歡表單和選項卡的可存取性。
現在,想像一下必須輸入基本相同的用戶名和帳戶詳細信息,多個。時代。一天。
我這樣做了大約兩個月......然後我想我不喜歡腕管的感覺,所以我創建了一個 VB 腳本來為我做這些骯髒的工作。
這是我創建的用於輸入和編輯測試環境的所有帳戶的表單的螢幕截圖。如您所見,我建立了多個帳戶...
我創建的最新帳戶被列為“nodemccoytest280”。
這裡,當我們選擇底部的「新帳戶」按鈕時,就會建立一個遵循命名約定的新帳戶,並且向上一級; “nodemccoytest281”。
Private Sub cmdQuickAccountTest_Click()
'----------------Declarations----------------------
Dim dbs As DAO.Database, rst As DAO.Recordset, rst2 As DAO.Recordset
Dim varMaxID As Integer
Dim varMaxUser As String
Dim varUserNumber As String
'----------------String: Latest ID-------------------
Dim strFindID As String
strFindID = "SELECT Max(accID) as maxID " _
& "FROM tbl_Accounts " _
& "WHERE accType = 'TST';"
'----------------Method: Get latest ID --------------------
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(strFindID)
varMaxID = rst!maxID
在函數開始時,我們需要宣告資料庫和記錄集變數才能執行 OpenRecordset 函數。 SELECT 語句從表格 (tbl_Accounts) 的 ID (accID) 中取得最新建立的記錄,其中帳戶類型 (accType) 等於「TST」(這是我們測試環境的後綴)。然後它將被初始化為字串變數“strFindID”。
然後“strFindID”將被傳遞到我們的 OpenRecordset 函數並讀取。它將找到 maxID,然後將其初始化為“varMaxID”。
'----------------String: Latest username (from ID) -------------------
Dim strFindLastUser As String
strFindLastUser = "SELECT accName " & _
"FROM tbl_Accounts " & _
"WHERE accID = " & varMaxID & ""
'----------------Method: Get latest Username, then clean string to find the number-----------
Set rst2 = dbs.OpenRecordset(strFindLastUser)
varMaxUser = rst2!accName
varUserNumber = CleanString(varMaxUser)
Dim finalNumber As Integer
finalNumber = CInt(varUserNumber)
finalNumber = finalNumber + 1
'---------------------------------------------------------------------------------------------
這裡我們的第二個 SELECT 語句被初始化為字串變數「strFindLastUser」。這次,它將從表 (tbl_Accounts) 中 SELECT 帳戶名稱 (accName),其中 ID (accID) 等於編譯器從第一個 SELECT 語句中選擇的最大 ID (varMaxID)。
然後,該字串將用於將其自身傳遞給 OpenRecordset 函數,並初始化為「varMaxUser」。這次,「varMaxUser」將清除所有字符,這樣只會傳回一個數字。
然後,使用「CInt」將該數字轉換為 INT,然後將其本身加 1。
'-----------------Method: Declare all new variables before insert-----------------------------
Dim finalUsername As String
Dim finalEmail As String
Dim finalPassword As String
Dim finalLanguage As String
Dim finalCountry As Integer
Dim finalType As String
finalUsername = "nodemccoytest" & finalNumber
finalEmail = "* +test" & finalNumber & "@gmail.com"
finalPassword = "Password123!"
finalLanguage = "English (EN)"
finalCountry = 233
finalType = "TST"
在這裡,我們正在初始化所有要讀入 SELECT 語句的變數。這樣 SELECT 語句才可讀。預設情況下,這也是更改您想要的任何變數的時間,因為每次呼叫函數時,這些變數都會插入資料庫。
'-----------------String: Insert new Username into table--------------------------------------
Dim strInsert As String
strInsert = "INSERT INTO tbl_Accounts " & _
"(accName, accEmail, accPassword, accLang, accCountry, accType) VALUES " & _
"('" & finalUsername & "' , '" & finalEmail & "', '" & finalPassword & "', '" & finalLanguage & "' , " & CStr(finalCountry) & " ,'" & finalType & "');"
'---------------------------------------------------------------------------------------------
dbs.Execute (strInsert)
DoCmd.Requery
End Sub
這是我們的最終形式。 INSERT 語句初始化為字串,並在執行該語句的「dbs.Execute」函數中使用。
然後重新查詢該表單以顯示新建立的記錄。