تقوم هذه الطريقة (المكتوبة بلغة 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' الخاصة بنا، والتي تقوم بتنفيذ العبارة.
تتم بعد ذلك إعادة الاستعلام عن النموذج لعرض السجل المنشأ حديثًا.