此方法(用 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”函数中使用。
然后重新查询该表单以显示新创建的记录。