Этот метод (написанный на 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 извлекает последнюю созданную запись по ее идентификатору (accID) из таблицы (tbl_Accounts), где ее тип учетной записи (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». На этот раз он выберет имя учетной записи (accName) из таблицы (tbl_Accounts), где идентификатор (accID) равен нашему максимальному идентификатору, который компилятор выбрал из первого оператора SELECT (varMaxID).
Затем строка будет использоваться для передачи в нашу функцию OpenRecordset и инициализироваться как «varMaxUser». На этот раз 'varMaxUser' будет очищен от любых символов, поэтому будет возвращено только число.
Затем это число будет преобразовано в INT с использованием «CInt» и последующим добавлением 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, которая выполняет этот оператор.
Затем форма запрашивается для отображения вновь созданной записи.