วิธีการนี้ (เขียนใน Visual Basic) สร้างการวนซ้ำบัญชีใหม่ สิ่งนี้มีประโยชน์มากเมื่อสร้างหลายบัญชีในเวลาเดียวกัน ซึ่งเป็นไปตามรูปแบบการตั้งชื่อบางอย่าง
ในสาขางานของฉัน ฉันจำเป็นต้องสร้างบัญชีหลายบัญชีต่อวันผ่านสภาพแวดล้อมเว็บหลายแห่ง บัญชีเหล่านี้ต้องเป็นไปตามแบบแผนการตั้งชื่อที่แน่นอนตามสภาพแวดล้อม แบบแผนการตั้งชื่อสำหรับบัญชีใหม่อาจเป็น:
"โหนด" + นามสกุล + ส่วนต่อท้ายสภาพแวดล้อม + #
ตัวอย่างเช่น ในสภาพแวดล้อมการทดสอบของเรา "nodemccoytest200" จะเป็นหลักการตั้งชื่อที่เหมาะสม
บัญชีเหล่านี้จะต้องถูกนำมาพิจารณา ตามด้วยรหัสผ่าน ภาษาเริ่มต้น และประเทศต้นทาง ฉันสร้างฐานข้อมูล Access ด้วยเหตุผลนี้ เพราะฉันเพลิดเพลินกับการเข้าถึงแบบฟอร์มและแท็บต่างๆ
ทีนี้ ลองจินตนาการว่าต้องพิมพ์ชื่อผู้ใช้เดียวกัน โดยมีรายละเอียดบัญชี MULTIPLE ครั้ง สักวันหนึ่ง
ฉันทำสิ่งนี้ประมาณ 2 เดือน... จากนั้นฉันคิดว่าฉันไม่สนุกกับความรู้สึกของอุโมงค์ carpal ดังนั้นฉันจึงสร้างสคริปต์ 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 จะดึงบันทึกที่สร้างขึ้นล่าสุดจาก ID (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) โดยที่ ID (accID) เท่ากับ ID สูงสุดของเราที่คอมไพเลอร์เลือกจากคำสั่ง 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' ซึ่งดำเนินการคำสั่ง
จากนั้นจึงขอแบบฟอร์มเพื่อแสดงบันทึกที่สร้างขึ้นใหม่