segunda-feira, 8 de setembro de 2014

Loop For...Next

A instrução For...Next é usada quando precisamos executar algumas rotinas uma determinada quantidade de vezes em seqüência.
Com ela podemos usar uma variável de controle e passarmos valores a controles e objetos. Também podemos usá-la para chamar outras funções e procedimentos.
A sintaxe simples do Loop For...Next é a descrita abaixo.
For i = 1 To 10
      Aqui sera definido nosso bloco de instruções  
Next
Definimos uma variável de controle e a nomeamos como “i”, mas pode ser outro nome qualquer. O valor Zero (0) é onde nosso contador irá iniciar e o valor Dez(10) até onde o Loop irá executar.
No nosso exemplo, a variável de controle “i” irá iniciar no Zero e irá executar a rotina por 10 vezes, lembrando que a cada execução, o valor da variável é acrescido de 1.
 O valor que acrescentamos a cada execução do loop pode ser alterado através da instrução Step.
For i = 0 To 10 Step 2
      Aqui sera definido nosso bloco de instruções  
Next
No Exemplo, a rotina irá executar 6 vezes e a cada rodada do loop, a variável será acrescida de 2.
Os valores assumidos pela variável durante todas as rodadas são: 0, 2, 4, 6, 8 e 10.
Importante ressaltar que a variável de controle só é visível dentro do For, caso seja necessário visualizá-la em outra parte do código, tem que ser declarada usando as instruções (DIM ou Public) e do tipo numérica (Integer, Double ou Long).
 Pode ser que em alguma situação na Rotina For, seja necessário encerrar o LOOP como no exemplo abaixo.
Nessa situação, caso a data retornada pela instrução DateAdd seja maior que a Data atual do Sistema, o loop é encerrado usando a instrução Exit For
Dim a As Date
a = InputBox("informe a data")
For i = 0 To 10
    If DateAdd("d", i, a) > Date Then
        Exit For
    Else
        MsgBox DateAdd("d", i, a)
    End If
Next
Vamos supor que no nosso projeto existam duas consultas uma de Atualização e outra de Acréscimo de dados.
Nas nossas rotinas, precisamos executar a consulta de Acréscimo e depois a de Atualização pra consolidar os Dados importados.
Com a ajuda do For...Next podemos deixá-las em execução sempre uma após a outra.
Primeiro vamos definir uma variável do tipo Array de tamanho 2 e pra cada item dessa variável vamos passar o nome das duas consultas.

Dim stConsulta(2) as string
stConsulta(0)=”ConsultaAcrescimo”
stConsulta(1)=”ConsultaAtualizacao”
 Agora criamos o Loop
For i=0 to 1
     DoCmd.OpenQuery stConsulta(i), acViewNormal
Next
Nesse caso, na primeira execução a variável de controle está com o valor Zero, dessa forma irá executar a consulta ConsultaAcrescimo que está definida no item Zero da Variavel Array stConsulta.
Quando o Loop executa pela segunda vez, a variável de controle assume o valor 1 e executa então a nossa segunda Consulta.

Condicionais Select Case e IF... Then... Else

 As construções condicionais servem para testar certas condições e executar determinadas ações quando essas condições são atendidas.
Existem basicamente 2 construções que nos permite realizar esses testes, o Select Case e o If...Then...Else

A função das duas construções é a mesma, porém para certos casos uma de aplica melhor que a outra.

Nos exemplos abaixo, para os mesmos testes, vou lista as duas formas de escrever o código.

1) Realizar a verificação da Variável "a" do tipo String, nos procedimentos Select Case e If...then...else.

Dim a As String
a = InputBox("Informe um Valor")

Select Case a
    Case "Pedro", "João", "Marcia", "Flavia"
        MsgBox "Vc Escolheu alguem da familia"
    Case Else
        MsgBox "Não Pertence a familia"
End Select



If a = "Pedro" Or a = "João" Or a = "Marcia" Or a = "Flavia" Then
    MsgBox "Vc Escolheu alguem da familia"
Else
    MsgBox "Não Pertence a familia"
End If



2) Realizar o cálculo MOD para retornar o produto de uma divisão. Caso o  produto da divisão de um número seja 1, então ele é um número ímpar, caso contrário um número par.

Dim a As Integer
a = InputBox("Informe um Valor")


Select Case a Mod 2
Case 0
    MsgBox "Número Par"
Case Else
    MsgBox "Número Ímpar"
End Select


If a Mod 2 = 0 Then
     MsgBox "Número Par"
Else
    MsgBox "Número Ímpar"
End If




3) Verificação simples para testar o valor da variável

Dim a As Integer
a = InputBox("Informe um Valor")

Select Case a
Case Is > 5
    MsgBox "Número maior ou igual que 5"
Case Else
    MsgBox "Número menor que 5"
End Select


If a > 5 Then
     MsgBox "Número maior ou igual que 5"
Else
    MsgBox "Número menor que 5"
End If



4) selecionar casos que estejam em um determinado intervaldo. Ex.: de 0 a 5, de 6 a 9

Dim a As Integer
a = InputBox("Informe um Valor de 0 a 10")

Select Case a
Case 0 To 5
    MsgBox "Ruim"
Case 6 To 9
    MsgBox "Bom"
Case 10
    MsgBox "Excelente"
Case Else
    MsgBox "Valor informado fora do intervalo"
End Select

If a >= 0 And a <= 5 Then
     MsgBox "ruim"
ElseIf a >= 6 And a <= 9 Then
    MsgBox "Bom"
ElseIf a = 10 Then
    MsgBox "Excelente"
Else
    MsgBox "Valor informado fora do intervalo"
End If