Cette méthode (écrite en Visual Basic) crée une nouvelle itération de compte. Ceci est très utile lors de la création de plusieurs comptes en même temps, qui suivent une certaine convention de dénomination.
Dans mon domaine de travail, je dois créer plusieurs comptes par jour dans plusieurs environnements Web. Ces comptes doivent suivre une certaine convention de dénomination par environnement. Une convention de dénomination pour un nouveau compte pourrait être :
"nœud" + nom + suffixe d'environnement + #.
Par exemple, dans notre environnement de test, « nodemccoytest200 » serait une convention de dénomination appropriée.
Ces comptes devaient être comptabilisés, suivis des mots de passe, des langues par défaut et du pays d'origine. J'ai créé une base de données Access pour cette raison, car j'apprécie l'accessibilité des formulaires et des onglets.
Maintenant, imaginez devoir taper essentiellement le même nom d'utilisateur, avec les détails du compte, MULTIPLE. FOIS. UN JOUR.
J'ai fait ça pendant environ 2 mois... puis j'ai pensé que je n'appréciais pas la sensation du canal carpien, alors j'ai créé un script VB qui a fait le sale boulot à ma place.
Il s'agit d'une capture d'écran d'un formulaire que j'ai créé pour saisir et modifier tous les comptes d'un environnement de test. Comme vous pouvez le constater, j'ai créé plusieurs comptes...
Mon dernier compte créé est répertorié comme "nodemccoytest280".
Ici, lorsque nous sélectionnons le bouton « Nouveau compte » en bas, un nouveau compte est créé qui suit la convention de dénomination et monte d'un intervalle ; "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
Au début de notre fonction, nous devons déclarer nos variables de base de données et de jeu d'enregistrements afin d'exécuter notre fonction OpenRecordset. L'instruction SELECT récupère le dernier enregistrement créé à partir de son ID (accID) dans la table (tbl_Accounts), où son type de compte (accType) est égal à « TST » (qui est notre suffixe pour notre environnement de test). Elle sera ensuite initialisée en tant que variable chaîne 'strFindID'.
'strFindID' sera ensuite transmis à notre fonction OpenRecordset et lu. Il trouvera le maxID, puis sera initialisé comme « 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
'---------------------------------------------------------------------------------------------
Nous en sommes ici à notre deuxième instruction SELECT initialisée en tant que variable chaîne, 'strFindLastUser'. Cette fois, il sélectionnera le nom du compte (accName) dans la table (tbl_Accounts), où l'ID (accID) est égal à notre ID maximum que le compilateur a sélectionné dans la première instruction SELECT (varMaxID).
La chaîne sera ensuite utilisée pour se transmettre à notre fonction OpenRecordset et initialisée comme 'varMaxUser'. Cette fois, 'varMaxUser' sera nettoyé de tous les caractères, de cette façon seul un nombre sera renvoyé.
Ce nombre sera ensuite converti en INT en utilisant 'CInt', puis en ajoutant 1 à lui-même.
'-----------------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"
Ici, nous initialisons toutes nos variables pour qu'elles soient lues dans l'instruction SELECT. C'est ainsi que l'instruction SELECT est lisible. C'est aussi le moment de modifier les variables que vous souhaitez par défaut, puisqu'à chaque appel de la fonction, ces variables seront insérées dans la base de données.
'-----------------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
Nous voici à notre forme définitive. L'instruction INSERT est initialisée sous forme de chaîne et est utilisée dans notre fonction 'dbs.Execute', qui exécute l'instruction.
Le formulaire est ensuite invité à afficher l'enregistrement nouvellement créé.