Olá pessoal,
estou alterando um formulário para relatórios mas estou com uma pequena dificuldade na sintaxe:
Meu formulário não possui vínculo com tabelas e minhas consultas são via códicos, o problema é que possuo dois campos texto para usar como filtro de "Idade Inicial" e "Idade Final", quando eu insiro o valor na "data Inicial" e também na "Data Final", meu relatório flui perfeitamente, agora quando algum dos campos fica nulo, ocorre erro 3075.
Erro de sintaxe (Operador faltando) na expressão consulta [Idade]>=And[Idade]<=.
Sendo que:
[Idade] é um campo do Relatório que mostra a idade através de uma função (CalculaIdade) que encontrei no fórum, que transforma a data de nascimento em idade.
Códico que utilizo:
Filtro4 = "[Idade]>=" & IdadeInicial & "And [Idade] <= " & idadeFinal
Se houver valor na "idadeInicial" e na "idadeFinal" o relatório filtra normalmente, caso apenas uma esteja nulo, ocorre o erro.
Oque preciso fazer para quando algum campo estiver nulo ele carrega todos os valores, tanto no inicial quanto no final?
O problema está apenas no "Filtro4".
Abaixo segue o código completo para melhor entendimento.
Private Sub GerarRelatorio_Click()
Dim stDocName As String
Dim E As String
Dim i As Variant
E = " And "
ou = " or "
Filtro = ""
Filtro1 = ""
Filtro2 = ""
Filtro3 = ""
For Each i In FiltroCidade.ItemsSelected
If Filtro <> "" Then
Filtro = Filtro & " or "
End If
Filtro = Filtro & "[ID_Cidade] like '" & FiltroCidade.ItemData(i) & "*'"
Next i
For Each i In FiltroBairro.ItemsSelected
If Filtro1 <> "" Then
Filtro1 = Filtro1 & " or "
End If
Filtro1 = Filtro1 & "[ID_Bairro] like '" & FiltroBairro.ItemData(i) & "*'"
Next i
For Each i In FiltroEstCivil.ItemsSelected
If Filtro2 <> "" Then
Filtro2 = Filtro2 & " or "
End If
Filtro2 = Filtro2 & "[ID_Estado_Civil] like '" & FiltroEstCivil.ItemData(i) & "*'"
Next i
For Each i In FiltroSexo.ItemsSelected
If Filtro3 <> "" Then
Filtro3 = Filtro3 & " or "
End If
Filtro3 = Filtro3 & "[ID_Tipo_Sexo] like '" & FiltroSexo.ItemData(i) & "*'"
Next i
Filtro4 = "[Idade]>=" & De_Idade & "And [Idade] <= " & Ate_Idade
FiltroGeral = "(" & Filtro & ")" & E & "(" & Filtro1 & ")" & E & "(" & Filtro2 & ")" & E & "(" & Filtro3 & ")"
If Nz(FiltroGeral) = "" Then
FiltroFinal = Filtro4 ' & E & Filtro5 ' & E & Filtro6
Else
FiltroFinal = "(" & FiltroGeral & ")" & E & Filtro4 '& E & Filtro5 '& E & Filtro6
End If
stDocName = Filtro_Relatorio.Column(2)
End Sub
estou alterando um formulário para relatórios mas estou com uma pequena dificuldade na sintaxe:
Meu formulário não possui vínculo com tabelas e minhas consultas são via códicos, o problema é que possuo dois campos texto para usar como filtro de "Idade Inicial" e "Idade Final", quando eu insiro o valor na "data Inicial" e também na "Data Final", meu relatório flui perfeitamente, agora quando algum dos campos fica nulo, ocorre erro 3075.
Erro de sintaxe (Operador faltando) na expressão consulta [Idade]>=And[Idade]<=.
Sendo que:
[Idade] é um campo do Relatório que mostra a idade através de uma função (CalculaIdade) que encontrei no fórum, que transforma a data de nascimento em idade.
Códico que utilizo:
Filtro4 = "[Idade]>=" & IdadeInicial & "And [Idade] <= " & idadeFinal
Se houver valor na "idadeInicial" e na "idadeFinal" o relatório filtra normalmente, caso apenas uma esteja nulo, ocorre o erro.
Oque preciso fazer para quando algum campo estiver nulo ele carrega todos os valores, tanto no inicial quanto no final?
O problema está apenas no "Filtro4".
Abaixo segue o código completo para melhor entendimento.
Private Sub GerarRelatorio_Click()
Dim stDocName As String
Dim E As String
Dim i As Variant
E = " And "
ou = " or "
Filtro = ""
Filtro1 = ""
Filtro2 = ""
Filtro3 = ""
For Each i In FiltroCidade.ItemsSelected
If Filtro <> "" Then
Filtro = Filtro & " or "
End If
Filtro = Filtro & "[ID_Cidade] like '" & FiltroCidade.ItemData(i) & "*'"
Next i
For Each i In FiltroBairro.ItemsSelected
If Filtro1 <> "" Then
Filtro1 = Filtro1 & " or "
End If
Filtro1 = Filtro1 & "[ID_Bairro] like '" & FiltroBairro.ItemData(i) & "*'"
Next i
For Each i In FiltroEstCivil.ItemsSelected
If Filtro2 <> "" Then
Filtro2 = Filtro2 & " or "
End If
Filtro2 = Filtro2 & "[ID_Estado_Civil] like '" & FiltroEstCivil.ItemData(i) & "*'"
Next i
For Each i In FiltroSexo.ItemsSelected
If Filtro3 <> "" Then
Filtro3 = Filtro3 & " or "
End If
Filtro3 = Filtro3 & "[ID_Tipo_Sexo] like '" & FiltroSexo.ItemData(i) & "*'"
Next i
Filtro4 = "[Idade]>=" & De_Idade & "And [Idade] <= " & Ate_Idade
FiltroGeral = "(" & Filtro & ")" & E & "(" & Filtro1 & ")" & E & "(" & Filtro2 & ")" & E & "(" & Filtro3 & ")"
If Nz(FiltroGeral) = "" Then
FiltroFinal = Filtro4 ' & E & Filtro5 ' & E & Filtro6
Else
FiltroFinal = "(" & FiltroGeral & ")" & E & Filtro4 '& E & Filtro5 '& E & Filtro6
End If
stDocName = Filtro_Relatorio.Column(2)
End Sub