TESTANDO IF
Abaixo tenho o código:
No módulo:
Public Const A1 As String = "Dia da Confraternização Universal (Feriado Nacional)"
Public Const A2 As String = "Dia da Paixão de Cristo (Feriado Nacional)"
Public Const A3 As String = "Dia de Tiradentes (Feriado Nacional)"
Public Const A4 As String = "Dia do Trabalho (Feriado Nacional)"
Public Const A5 As String = "Dia da Independência do Brasil (Feriado Nacional)"
Public Const A6 As String = "Dia de Nossa Sra. Aparecida (Feriado Nacional)"
Public Const A7 As String = "Dia da Proclamação da República (Feriado Nacional)"
Public Const A8 As String = "Dia de Natal (Feriado Nacional)"
Public Const A9 As String = "Dia de Nossa Sra. Imaculada Conceição (Feriado Municipal - Belo Horizonte, Contagem, Betim)"
Public Const A10 As String = "Dia da Independência do Brasil (Feriado Nacional)"
Public Const A11 As String = "Dia de Finados (Ponto Facultativo)"
Public Const A12 As String = "Dia de Nossa Sra. das Dores (Feriado Municipal - Contagem)"
Código:
Pergunto: no loop estou testando duas condições IF, esta funcionando. Agora preciso testar todas as variaveis declaradas como constantes somente em um IF se não vai ficar muito extenso, como posso montar?
No módulo:
Public Const A1 As String = "Dia da Confraternização Universal (Feriado Nacional)"
Public Const A2 As String = "Dia da Paixão de Cristo (Feriado Nacional)"
Public Const A3 As String = "Dia de Tiradentes (Feriado Nacional)"
Public Const A4 As String = "Dia do Trabalho (Feriado Nacional)"
Public Const A5 As String = "Dia da Independência do Brasil (Feriado Nacional)"
Public Const A6 As String = "Dia de Nossa Sra. Aparecida (Feriado Nacional)"
Public Const A7 As String = "Dia da Proclamação da República (Feriado Nacional)"
Public Const A8 As String = "Dia de Natal (Feriado Nacional)"
Public Const A9 As String = "Dia de Nossa Sra. Imaculada Conceição (Feriado Municipal - Belo Horizonte, Contagem, Betim)"
Public Const A10 As String = "Dia da Independência do Brasil (Feriado Nacional)"
Public Const A11 As String = "Dia de Finados (Ponto Facultativo)"
Public Const A12 As String = "Dia de Nossa Sra. das Dores (Feriado Municipal - Contagem)"
Código:
Private Sub Soma1()
Dim Criterio As String
Dim Sql As String
Dim Contador As Integer
Criterio = "1"
Set TbData1 = New ADODB.Recordset
Sql = "Select Data,Codigo,SaldoHora,Dia,Feriado From HExtra WHERE Codigo Like '%" & Criterio & "%' GROUP BY Data,Codigo,SaldoHora,Dia,Feriado Having Data BETWEEN #" & Format(FrmImprimir.TxtIn.Value, "MM/DD/YYYY") & "# AND #" & Format(FrmImprimir.TxtFin.Value, "MM/DD/YYYY") & "# ORDER BY Data"
Set TbData1 = Bd_Hora.Execute(Sql)
Dim a
a = 0
Do While Not TbData1.EOF
If TbData1!Dia = "sábado" Then
a = a + 1
Contador = Contador + 1
ElseIf TbData1!Feriado = A6 Then
a = a + 1
Contador = Contador + 1
End If
TbData1.MoveNext
Loop
Text1.Text = Contador
TbData1.Close
Set TbData1 = Nothing
End Sub
Pergunto: no loop estou testando duas condições IF, esta funcionando. Agora preciso testar todas as variaveis declaradas como constantes somente em um IF se não vai ficar muito extenso, como posso montar?
Acho que escrevendo assim não tem problema !!!
if TbData1!Feriado = A1 OR _
TbData1!Feriado = A2 OR _
TbData1!Feriado = A3 OR _
TbData1!Feriado = A4 OR _
TbData1!Feriado = A5 OR _
TbData1!Feriado = A6 OR _
TbData1!Feriado = A7 OR _
TbData1!Feriado = AN Then
End if
if TbData1!Feriado = A1 OR _
TbData1!Feriado = A2 OR _
TbData1!Feriado = A3 OR _
TbData1!Feriado = A4 OR _
TbData1!Feriado = A5 OR _
TbData1!Feriado = A6 OR _
TbData1!Feriado = A7 OR _
TbData1!Feriado = AN Then
End if
Cara, não entendi muito bem, mas pelo que entendi você quer ver se o dia é algum dos feriados definidos em apenas 1 IF?
se for, é só fazer assim:
se for, é só fazer assim:
IF TbData1!Feriado = A1 Or TbData1!Feriado = A2 Or TbData1!Feriado = A3 Or TbData1!Feriado = A4 Or TbData1!Feriado = A5 Or TbData1!Feriado = A6 Or TbData1!Feriado = A7 Or TbData1!Feriado = A8 Or TbData1!Feriado = A9 Or TbData1!Feriado = A10 Or TbData1!Feriado = A11 Or TbData1!Feriado = A12 Or TbData1!Dia = "sábado" Then
a = a + 1
Contador = Contador + 1
end if
Uma solução mais elegante ...
Do While Not TbData1.EOF
If TbData1!Dia = "sábado" Then
a = a + 1
Contador = Contador + 1
Else
Select Case TbData1!Feriado
Case a1
Case a2
Case a3
Case a4
Case a5
Case N
End Select
End If
TbData1.MoveNext
Loop
Do While Not TbData1.EOF
If TbData1!Dia = "sábado" Then
a = a + 1
Contador = Contador + 1
Else
Select Case TbData1!Feriado
Case a1
Case a2
Case a3
Case a4
Case a5
Case N
End Select
End If
TbData1.MoveNext
Loop
O problema era que eu estava usando o AND ao invés de OR.
Irenko, por favor feche o tópico para evitar respostas replicadas como ja está acontecendo !!!
Tópico encerrado , respostas não são mais permitidas