Este método (escrito em Visual Basic) cria uma nova iteração de conta. Isto é muito útil ao criar várias contas ao mesmo tempo, que seguem uma certa convenção de nomenclatura.
Na minha área de trabalho, sou obrigado a criar várias contas por dia em vários ambientes da web. Essas contas devem seguir uma determinada convenção de nomenclatura por ambiente. Uma convenção de nomenclatura para uma nova conta poderia ser:
"nó" + sobrenome + sufixo de ambiente + #.
Por exemplo, em nosso ambiente de teste, "nodemccoytest200" seria uma convenção de nomenclatura adequada.
Essas contas tiveram que ser contabilizadas, seguidas das senhas, dos idiomas padrão e do país de origem. Criei um banco de dados Access por esse motivo, pois gosto da acessibilidade de formulários e abas.
Agora, imagine ter que digitar essencialmente o mesmo nome de usuário, com detalhes da conta, MÚLTIPLOS. TEMPOS. UM DIA.
Eu fiz isso por cerca de 2 meses... então percebi que não gostava da sensação do túnel do carpo, então criei um script VB que fez o trabalho sujo para mim.
Esta é uma captura de tela de um formulário que criei para inserir e editar todas as contas de um ambiente de Teste. Como você pode ver, criei várias contas...
Minha última conta criada está listada como "nodemccoytest280".
Aqui, ao selecionar o botão “Nova Conta” na parte inferior, é criada uma nova conta que segue a convenção de nomenclatura e sobe um 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
No início de nossa função, precisamos declarar nosso banco de dados e variáveis de conjunto de registros para executar nossa função OpenRecordset. A instrução SELECT obtém o último registro criado de seu ID (accID) da tabela (tbl_Accounts), onde seu tipo de conta (accType) é igual a 'TST' (que é nosso sufixo para nosso ambiente de teste). Em seguida, será inicializado como a variável string 'strFindID'.
'strFindID' será então passado para nossa função OpenRecordset e lido. Ele encontrará o maxID e será inicializado 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
'---------------------------------------------------------------------------------------------
Aqui estamos em nossa segunda instrução SELECT inicializada como uma variável de string, 'strFindLastUser'. Desta vez, ele irá selecionar o nome da conta (accName) da tabela (tbl_Accounts), onde o ID (accID) é igual ao nosso ID máximo que o compilador selecionou na primeira instrução SELECT (varMaxID).
A string será então usada para passar para nossa função OpenRecordset e inicializada como 'varMaxUser'. Desta vez, 'varMaxUser' será limpo de quaisquer caracteres, dessa forma apenas um número será retornado.
Este número será então convertido em INT usando 'CInt' e adicionando 1 a si mesmo.
'-----------------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"
Aqui, estamos inicializando todas as nossas variáveis para serem lidas na instrução SELECT. Isso ocorre para que a instrução SELECT seja legível. Este também é o momento de alterar quaisquer variáveis que desejar por padrão, pois toda vez que a função for chamada, essas variáveis serão inseridas no banco de dados.
'-----------------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
Aqui estamos em nossa forma final. A instrução INSERT é inicializada como uma string e é usada em nossa função 'dbs.Execute', que executa a instrução.
O formulário é então consultado novamente para exibir o registro recém-criado.