Curso Excel 2003 sobre ADO e ADOX (ActiveX Data Objects) - Parte 9
- Última atualização em 19 Fevereiro 2012
- Acessos: 11462
4.2. Implementando uma transação usando um formulário: depositando dinheiro em uma conta corrente
O exemplo que inicia este subtópico será carregado para os subtópicos que seguem este. Iniciarei com o exemplo de como adicionar depósitos em uma tabela que representa uma conta bancária. Para este exemplo o leitor precisará de uma tabela contendo os campos a seguir (os nomes não precisam ser exatamente os mesmos desde que o leitor modifique a instrução SQL corretamente):
- IDTransCc --> Tipo: auto numérico
- Valor --> Tipo: numérico/moeda (se numérico o tamanho deve ser “Duplo”)
- Finalidade --> Tipo: Texto
- Data --> Tipo: Data
Crie um novo formulário com o layout abaixo (não acople o formulário e controles à tabela)
O usuário precisará preencher todos os campos antes de continuar. Caso os controles não tenham sido preenchidos a mensagem a seguir deve ser mostrada:
Com as explicações dadas de como o processo deve correr, vejamos como efetuar a transação:
Option Explicit
Private Sub cmdConfirmDep_Click()
Call execTrans
End Sub
Private Sub execTrans()
' Dimensiona os objeto e variáveis que usaremos
Dim ctrl As Control
Dim cn As New ADODB.Connection
Dim strSQL As String
' Em caso de erro ir para Err_Handler
On Error GoTo Err_Handler
' Varre todos os controles do formulário...
For Each ctrl In Me.Controls
' Checa se é um 'TextBox" e se for...
If TypeName(ctrl) = "TextBox" Then
' Checa se o valor do controle é nulo e se for...
If Len(ctrl.Value)<=1 Then
' Mostra uma mensagem avisando que todos os controle devem
' ser preenchidos
MsgBox "Você precisa preencher todos os campos " _
& "antes de continuar.", vbExclamation, _
"Preencher todos os campos"
' Sai da sub-rotina. Nada mais deve ser executado até
' que todos as TextBox tenham sido preenchidas
Exit Sub
End If
End If
Next ctrl
' String SQL para insercao das informacoes. Estude a estrutura
' desta instrucoes e como ela se relaciona com os campos na tabela
' e os campos no formulário.
strSQL = "INSERT INTO tblCC (Valor, Finalidade, Data) "
strSQL = strSQL & " VALUES('" & Me.txtValor & "', '" & Me.txtFinalidade
strSQL = strSQL & "', '" & Me.txtData & "');"
' Com a conexao
With cn
' Abrir conexao
.Open strCn
' Iniciar transacao
.BeginTrans
' Executar transacao
.Execute strSQL
' Aviso se deve ou nao continuar com a transacao
If MsgBox("Clique 'OK' para confirmar o depósito ou 'Cancelar' " _
& "para cancelar a operação.", vbExclamation + vbOKCancel) = _
vbOK Then
' Se resposta afirmativa, concluir transacao
.CommitTrans
' Avisar que transacao foi efetuada com sucesso
MsgBox "Operação efetuada com sucesso...", vbInformation, _
"Depósisto efetuado"
Else:
' Caso resposta negativa, cancelar transacao
.RollbackTrans
End If
End With
' Limpar objetos da memória
Limpar:
On Error Resume Next
cn.Close
Set cn = Nothing
Set ctrl = Nothing
Exit Sub
Err_Handler:
MsgBox Err.Description, vbCritical, Err.Number
Resume Limpar
End Sub
O leitor pode agora executar o código para efetuar a operação de depósito na conta. Note que podemos usar o mesmo formulário para efetuar várias operações como a retirada de dinheiro da conta. Neste caso, o valor precisa ser negativo ao invés de positivo. Então precisamos checar se ele é maior ou igual a zero (para não efetuarmos um depósito quando positivo e para não efetuarmos uma retirada de R$0,00).
Deixo esta operação como exercício para o leitor. Vejamos agora como fazer uma transferência entre conta corrente e investimento.