TESTANDO IF

IRENKO 20/12/2006 13:58:40
#191207
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:

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?
USUARIO.EXCLUIDOS 20/12/2006 14:28:41
#191213
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
GUGSDAJUBS 20/12/2006 14:33:15
#191216
Resposta escolhida
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:

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

USUARIO.EXCLUIDOS 20/12/2006 14:34:57
#191217
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

IRENKO 20/12/2006 14:40:27
#191221
O problema era que eu estava usando o AND ao invés de OR.
USUARIO.EXCLUIDOS 20/12/2006 14:46:22
#191223
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