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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.