Este método (escrito en Visual Basic) crea una nueva iteración de cuenta. Esto es muy útil al crear varias cuentas al mismo tiempo, que siguen una determinada convención de nomenclatura.
En mi campo de trabajo, debo crear varias cuentas por día en múltiples entornos web. Estas cuentas deben seguir una determinada convención de nomenclatura por entorno. Una convención de nomenclatura para una cuenta nueva podría ser:
"nodo" + apellido + sufijo de entorno + #.
Por ejemplo, en nuestro entorno de prueba, "nodemccoytest200" sería una convención de nomenclatura adecuada.
Había que contabilizar estas cuentas, seguidas de las contraseñas, los idiomas predeterminados y el país de origen. Creé una base de datos de Access por este motivo, ya que disfruto de la accesibilidad de formularios y pestañas.
Ahora, imagina tener que escribir esencialmente el mismo nombre de usuario, con los detalles de la cuenta, MÚLTIPLES. VECES. UN DÍA.
Hice esto durante aproximadamente 2 meses... luego pensé que no disfrutaba la sensación del túnel carpiano, así que creé un script VB que hizo el trabajo sucio por mí.
Esta es una captura de pantalla de un formulario que creé para ingresar y editar todas las cuentas para un entorno de prueba. Como puedes ver, he creado varias cuentas...
Mi última cuenta creada aparece como "nodemccoytest280".
Aquí, cuando seleccionamos el botón "Nueva cuenta" en la parte inferior, se crea una nueva cuenta que sigue la convención de nomenclatura y sube un intervalo; "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
Al comienzo de nuestra función, necesitamos declarar nuestra base de datos y las variables del conjunto de registros para poder realizar nuestra función OpenRecordset. La instrucción SELECT toma el último registro creado a partir de su ID (accID) de la tabla (tbl_Accounts), donde su tipo de cuenta (accType) es igual a 'TST' (que es nuestro sufijo para nuestro entorno de prueba). Luego se inicializará como la variable de cadena 'strFindID'.
Luego, 'strFindID' se pasará a nuestra función OpenRecordset y se leerá. Encontrará el maxID y luego se inicializará como '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
'---------------------------------------------------------------------------------------------
Aquí estamos en nuestra segunda instrucción SELECT inicializada como una variable de cadena, 'strFindLastUser'. Esta vez, SELECCIONARÁ el nombre de la cuenta (accName) de la tabla (tbl_Accounts), donde el ID (accID) es igual a nuestro ID máximo que el compilador seleccionó de la primera instrucción SELECT (varMaxID).
Luego, la cadena se usará para pasarse a nuestra función OpenRecordset y se inicializará como 'varMaxUser'. Esta vez, 'varMaxUser' se limpiará de cualquier carácter, de esa manera solo se devuelve un número.
Este número luego se convertirá en un INT mediante el uso de 'CInt' y luego se sumará 1 a sí mismo.
'-----------------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"
Aquí, estamos inicializando todas nuestras variables para leerlas en la declaración SELECT. Esto es para que la declaración SELECT sea legible. Este es también el momento de cambiar las variables que desee de forma predeterminada, ya que cada vez que se llame a la función, estas variables se insertarán en la base de datos.
'-----------------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
Aquí estamos en nuestra forma final. La declaración INSERT se inicializa como una cadena y se usa en nuestra función 'dbs.Execute', que ejecuta la declaración.
Luego se solicita al formulario que muestre el registro recién creado.