Visual Basic으로 작성된 이 메서드는 새 계정 반복을 만듭니다. 이는 특정 명명 규칙을 따르는 여러 계정을 동시에 만들 때 매우 유용합니다.
제 업무 분야에서는 여러 웹 환경에 걸쳐 하루에 여러 개의 계정을 생성해야 합니다. 이러한 계정은 환경별로 특정 명명 규칙을 따라야 합니다. 새 계정의 명명 규칙은 다음과 같습니다.
"노드" + 성 + 환경 접미사 + #.
예를 들어 테스트 환경에서는 "nodemccoytest200"이 적절한 명명 규칙입니다.
이러한 계정을 설명하고 비밀번호, 기본 언어, 출신 국가를 입력해야 했습니다. 저는 양식과 탭에 대한 접근성을 좋아하기 때문에 이러한 이유로 Access 데이터베이스를 만들었습니다.
이제 기본적으로 동일한 사용자 이름과 계정 세부 정보를 MULTIPLE로 입력해야 한다고 상상해 보세요. 타임스. 하루.
저는 약 2개월 동안 이 일을 했습니다. 그러다가 손목터널의 느낌이 마음에 들지 않는다고 생각하여 저를 위해 더러운 작업을 수행하는 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
'---------------------------------------------------------------------------------------------
여기 문자열 변수 'strFindLastUser'로 초기화된 두 번째 SELECT 문이 있습니다. 이번에는 테이블(tbl_Accounts)에서 계정 이름(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' 함수에서 사용됩니다.
그런 다음 새로 생성된 레코드를 표시하기 위해 양식을 쿼리합니다.