Exemplos para treinar Access 2010 - Programação VBA

Este post vai pros alunos, amigos e curiosos em Access 2010. As vezes estamos iniciando os estudos em VB para Access e não temos modelos prontos para criar e testar a criatividade.
Bom, ai vão alguns modelos bem básicos para quem quiser treinar e se divertir com programação dentro do Access 2010.
Lembrando que este post não esta focado em explicar a programação, e sim fornecer alguns exemplos para treino.
*******************************************************
Estude para o MCSA do Windows Server 2012 R2

http://juliobattisti.com.br/loja/detalheproduto.asp?CodigoLivro=LIV0001438 

Link:
 *******************************************************
Sub Loop01()
Dim sglnum As Single, sglcal As Single  'As declarações de variáveis podem ser colocadas na mesma linha desde que
                                        'Mantenha-se a natureza, nome e tipo de dados da variável
Dim bytX As Byte
Do While bytX < 3 'Será executado exatamente 03 vezes'
    sglnum = InputBox("digite o valor")
    sgcal = Sqr(sglnum) 'Sqr significa raiz quadrada'
    MsgBox sgcal
    bytX = bytX + 1
Loop
End Sub
Sub Loop2()
Dim sglnum As Single, sglcal As Single
Do While True
    sglnum = InputBox("Digite o valor ou 0 para encerrar:")
    If sglnum = 0 Then
        Exit Do
    End If
    sglcal = Sqr(sglnum)
    MsgBox sglcal
Loop
End Sub
Sub loop03()
Dim x As Integer
Do Until x >= 3
    x = x + 1
    Debug.Print x
    'para poder visualizar este comando vá até o menu Exibir - janela de verificação Imediata
Loop
End Sub
Sub loop04()
Dim contador As Byte
Do While contador <= 5
    MsgBox "contador: " & contador
    contador = contador + 1
Loop
End Sub
Sub loop05()
Dim contador As Byte
Do Until contador > 5
    MsgBox "contador: " & contador
    contador = contador + 1
Loop
End Sub
Sub Loop06()
Dim sglnum As Single, sglcal As Single  'As declarações de variáveis podem ser colocadas na mesma linha desde que
                                        'Mantenha-se a natureza, nome e tipo de dados da variável
Dim bytX As Byte
While bytX < 3 'Será executado exatamente 03 vezes'
    sglnum = InputBox("digite o valor")
    sgcal = Sqr(sglnum) 'Sqr significa raiz quadrada'
    MsgBox sgcal
    bytX = bytX + 1
Wend
End Sub
Sub Loop07()
Dim sglnum As Single, sglcal As Single  'As declarações de variáveis podem ser colocadas na mesma linha desde que
                                        'Mantenha-se a natureza, nome e tipo de dados da variável
Dim bytX As Byte
Do
    sglnum = InputBox("digite o valor")
    sgcal = Sqr(sglnum) 'Sqr significa raiz quadrada'
    MsgBox sgcal
    bytX = bytX + 1
Loop While bytX < 3
End Sub
Sub fornext01()
Dim contador As Byte
'para contador de 0 até 5
For contador = 0 To 5 Step 5 'contador de 0 a 5 de 5 em 5
    MsgBox "contador: " & contador
Next
End Sub
Sub fornext02()
Dim contador As Byte
'para contador de 0 até 100 ao passo de 5
For contador = 0 To 100 Step 5
    MsgBox "contador: " & contador
Next
End Sub
Sub fornext03()
Dim contador As Integer
For contador = 5 To 0 Step -1
    MsgBox "contador: & contador"
Next
End Sub
Sub fornext04()
Dim x As Double, y As Double
For x = 1 To 1000
    y = x ^ 2
    Debug.Print x, y
    'para poder visualizar este comando vá até o menu exibir - janela verificação imediata
Next
End Sub
Sub fornext05()
Dim x As Double, y As Double
For x = 1 To 1000 Step 100
    y = x ^ 2
    Debug.Print x, y
    'para poder visualizar este comando vá até o menu exibir - janela verificação imediata
Next
End Sub
Sub foreachnext01()
Dim y As Object
Set y = Forms!frmpadraocidades
'o frmpadraocidades precisa estar aberto
For Each x In y
    x.ForeColor = vbBlue 'cor da letra(cor do primeiro plano)
    x.FontBold = True
    x.FontSize = 8
    x.BackColor = vbYellow
    x.FontName = "times new roman"
Next
End Sub
Sub foreachnext02()
Dim y As Object
DoCmd.OpenForm "frmpadraocidades" 'Abre o frmpadraocidades
Set y = Forms!frmpadraocidades
For Each x In y
    x.ForeColor = vbBlue 'cor da letra(cor do primeiro plano)
    x.FontBold = True 'Negrito
    x.FontSize = 8 'Tamanho da fonte
    x.BackColor = vbYellow 'Cor do fundo
    x.FontName = "times new roman" 'Tipo de letra
Next
End Sub
Sub foreachnext03()
Dim y As Object
Set y = Application.CurrentData.AllTables
    For Each x In y
    Debug.Print x.Name
Next
End Sub
Sub foreachnext04()
Dim y As Object
Set y = CurrentProject.AllReports
DoCmd.RunSQL "create table listaderelatorios ([nomerelatorio] text (30))"
For Each x In y
    DoCmd.RunSQL "insert into listaderelatorios (nomerelatorio) values ('" & x.Name & "')"
Next
End Sub
Exercícios de Matrizes no Access.

Sub matriz01()Dim nome(3) As String
nome(0) = "HTBRAZ"
nome(3) = "Tecnologia"
nome(2) = "e Nerdices"
nome(1) = "Ilimitada"
MsgBox nome(0) & " " & nome(3) & " " & nome(2) & " " & nome(1)
End Sub

Sub matriz02()Dim i As Integer
Dim semana() 'Uma matriz dinamica obrigatoriamente deve ser variant o VBA dimensiona sozinho
semana = Array("domingo", "segunda", "terça", "quarta", "quinta", "sexta", "sábado")
'A matriz semana vai receber um conjunto de informações fornecida pelo array
For i = 0 To 6 Step 1
    MsgBox semana(i)
Next
End Sub

Sub matriz03()Dim i As Integer
Dim semana() 'Uma matriz dinamica obrigatoriamente deve ser variant o VBA dimensiona sozinho
semana = Array("domingo", "segunda", "terça", "quarta", "quinta", "sexta", "sábado")
'A matriz semana vai receber um conjunto de informações fornecida pelo array
For i = LBound(semana) To UBound(semana) 'LBound chama o valor zero, que é um limite inferior
    MsgBox semana(i) 'O UBound chama a extremidade superior da matriz semana, que nesse caso é 6
Next
End Sub

Sub matriz04()
Dim resultado(10) As Long
Dim cont As Byte
Dim nrotab As Integer
nrotab = InputBox("Digite um valor para calcular a tabuada")
For cont = 0 To 10
    resultado(cont) = nrotab * cont
    MsgBox resultado(cont)
Next
End Sub

Sub Matriz05()Dim cadastro(5, 2) As Variant
cadastro(0, 0) = "Empresa"
cadastro(0, 1) = "Telefone"
cadastro(0, 2) = "Nome DoContato"
cadastro(1, 0) = "Telefonica"
cadastro(1, 1) = "2020-2020"
cadastro(1, 2) = "Maria"
cadastro(2, 0) = "HTBRAZ"
cadastro(2, 1) = "555-6666"
cadastro(2, 2) = "Ana"
MsgBox cadastro(2, 1)
End Sub

Sub Matriz06()Dim Cidades() As Variant
Dim primitem As Byte
Dim ultitem As Byte
Cidades() = Array("São Paulo", "Rio de Janeiro", "Campinas", "Curitiba", "Recife", "Fortaleza")
primitem = LBound(Cidades)
ultitem = UBound(Cidades)
MsgBox "N° 1ª linha: " & primitem & Chr(13) & "N° Última Linha: " & ultitem
End Sub

Sub matriz07()Dim i As Byte
Dim NomeUsuario(2) As String
DoCmd.RunSQL "CREATE TABLE UsuariosMatriz([NomeUsuario] text (40))"
For i = 0 To 2
NomeUsuario(i) = InputBox("Digite o Nome")
Next i
For i = 0 To 2
DoCmd.RunSQL "Insert into UsuariosMatriz([NomeUsuario]) values ('" & NomeUsuario(i) & " ')"
Next i
End Sub

******************************************************
Apoio - Jogo rápido

Resumo de tipo de dados
  • Tamanho de armazenamento Intervalo
  • Byte 1 byte de 0 a 255
  • Boolean 2 bytes True ou False
  • Integer 2 bytes de -32.768 a 32.767
  • Long
  • (número inteiro longo) 4 bytes de -2.147.483.648 a 2.147.483.647
  • LongLong
  • (LongLong integer)  8 bytes  -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (válido somente em plataformas de 64 bits)
  • LongPtr
  • (Inteiro longo em sistemas de 32 bits, inteiro LongLong em sistemas de 64 bits)  4 bytes em sistemas de 32 bits, 8 bytes em sistemas de 64 bits  -2.147.483.648 a 2.147.483.647 em sistemas de 32 bits, -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 em sistemas de 64 bits
  • Single
  • (vírgula flutuante de precisão simples) 4 bytes de –3,402823E38 a -1,401298E-45 para valores negativos; de 1,401298E-45 a 3,402823E38 para valores positivos
  • Double
  • (vírgula flutuante de dupla precisão) 8 bytes de –1,79769313486231E308 a
  • -4,94065645841247E-324 para valores negativos; de 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos.
  • Currency
  • (número inteiro em escala) 8 bytes de -922.337.203.685.477,5808 a 922.337.203.685.477,5807
  • Decimal 14 bytes +/-79.228.162.514.264.337.593.543.950.335 sem vírgula decimal;
  • +/-7,9228162514264337593543950335 com 28 casas decimais à direita; o menor número diferente de zero é
  • +/-0,0000000000000000000000000001.
  • Date 8 bytes De 1 de janeiro de 100 a 31 de dezembro de 9999
  • Objeto 4 bytes Qualquer referência Object
  • String
  • (comprimento variável) 10 bytes + comprimento da sequência De 0 a aproximadamente 2 bilhões
  • String
  • (comprimento fixo) Comprimento da seqüência De 1 a aproximadamente 65.400
  • Variant
  • (com números) 16 bytes Qualquer valor numérico até o intervalo de um Double
  • Variant
  • (com caracteres) 22 bytes + comprimento da sequência O mesmo intervalo de String de comprimento variável
  • Definido pelo usuário
  • (usando Type) Número requerido por elementos O intervalo de cada elemento é igual ao intervalo do seu tipo de dados.
Observação  
Matrizes de qualquer tipo de dados requerem 20 bytes de memória, mais 4 bytes para cada dimensão da matriz, mais o número de bytes ocupados pelos próprios dados. A memória ocupada pelos dados pode ser calculada multiplicando-se o número de elementos de dados pelo tamanho de cada elemento. Por exemplo, os dados em uma matriz de dimensão única, que consiste em quatro elementos de dados Integer de 2 bytes cada, ocupam 8 bytes. Os 8 bytes exigidos para os dados, mais os 24 bytes fixos, fazem com que o requisito de memória total para a matriz seja de 32 bytes.
Em plataformas de 64 bits, a SAFEARRAY ocupa até 24 bits (mais 4 bytes por instrução Dim). O membro pvData é um ponteiro de 8 bytes e deve ser alinhado a limites de 8 bytes.
Observação
LongPtr não é um tipo de dado verdadeiro pois se transforma em um Long em ambientes de 32 bits ou em um LongLong em ambientes de 64 bits. LongPtr deve ser usado para representar o ponteiro e manipular valores em Instruções Declare, assim como permite escrever de código portátil que pode ser executado em ambientes de 32 e de 64 bits.
Uma Variant que contém uma matriz requer 12 bytes a mais do que uma matriz sozinha.
Observação   Use a função StrConv para converter um tipo de dados de seqüência para outro.


Postar um comentário

Comente sem faltar com respeito - ;-)

Postagem Anterior Próxima Postagem