MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Adaptação de código para filtro

    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Adaptação de código para filtro Empty Adaptação de código para filtro

    Mensagem  Chamon Consultoria 31/3/2013, 15:26

    Olá amigos!

    Bd em access2007.

    Campo "Quitada": (projeto novo)
    Na tabela este campo está com o formato Sim/Não. (Valor padrão: Falso)
    No formulário Vendas, como caixa de seleção.De forma que quando a conta é paga, este campo é marcado (ficando: Verdadeiro).

    Campo "Status": (projeto antigo)
    O campo "Status"
    Na tabela o formato deste campo é Texto. (Valor padrão: A pagar)
    E no formulário Vendas, o campo Status é uma caixa de combinação com as opções: A pagar e Pago.

    Resumindo: no novo projeto o campo "Status" foi substituído pelo campo "Quitada" e seus atributos.

    Para listar os relatórios das vendas, há um formulário filtro, que dentre outras, possui a opção para filtrar por "Status", que é uma caixa de combinação com as opções "A pagar e "Pago" com a origem da linha: SELECT Consulta_Resumo_Orçamento.Status FROM Consulta_Resumo_Orçamento GROUP BY Consulta_Resumo_Orçamento.Status;


    A parte do código original que filtra o status ("A pagar" e "Pago") é o seguinte:

    Dim strSql As String

    If Not IsNull(FiltroStatus) Then
    strSql = strSql & "Status='" & FiltroStatus & "'"
    End If

    Funciona perfeitamente quando seleciono no formulario filtro qualquer uma das opções: A pagar (filtra só as contas em aberto) e Pago (seleciona apenas as contas pagas). E se não selecionar nenhuma das opções são listadas todas as contas.


    Com as mudanças do campo Status para Quitada, citadas acima, adaptei o código e ficou assim:

    Function sqlFiltro() As String


    Dim StrSQL As String

    If Not IsNull(FiltroStatus) Then
    StrSQL = StrSQL & "Quitada='" & FiltroStatus & "'"
    End If

    No formulário filtro continua a opção para filtrar por Status,onde aparecem as opções "Sim" e "Não", porém agora com origem da linha:SELECT Cons_Rel_Vendas.Quitada FROM Cons_Rel_Vendas GROUP BY Cons_Rel_Vendas.Quitada;

    A questão é que dessa forma o relatório não abre. Quando marco qualquer uma das opções (sim ou não) e clico para visualizar o formulario filtro fecha e não abre o relatório.

    Alguma sugestão sobre por que isso está acontecendo?

    Desde já agradeço.
    avatar
    Convidado
    Convidado


    [Resolvido]Adaptação de código para filtro Empty Re: [Resolvido]Adaptação de código para filtro

    Mensagem  Convidado 24/4/2013, 02:35

    Dependendo da configuração do campo na tabela o filtro a ser utilizado como critério poderá ser:

    Sim ou Não

    ou

    1 ou -1


    Cumprimentos.
    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Adaptação de código para filtro Empty Re: [Resolvido]Adaptação de código para filtro

    Mensagem  Chamon Consultoria 6/5/2013, 04:56

    Olá!

    Retornando ao problema citado, consegui resolver em parte.

    Mudei o formato do campo Quitada de Sim/Não para Texto (sendo que: com Caixa de combinação/lista de valores "0;Não;-1;Sim".
    Com isso o filtro funcionou perfeitamente, ou seja, quando seleciono a opção quitada "Não" (caixa de combinaão do formulário filtro)ele lista o relatório apenas das contas que não foram quitadas e vice versa com a opção "Sim".

    Além disso, esse Formulário Filtro, tem outra opção de filtragem por Filial. (Sendo Filiais "1" e "9".
    Configurei o campo Filial com o mesmo critério do campo "Quitada".

    A questão é:

    Quando selecionados um de cada vez, o relatório é aberto normalmente, mas quando preciso selecionar as duas opções simultaneamente o relatório não abre. Por exemplo: preciso saber o que consta como "Não" quitado na Filial "1".

    Segue o código do Form Filtros:


    Function sqlFiltro() As String



    Dim StrSQL As String


    If Not IsNull(FiltroStatus) Then
    StrSQL = StrSQL & "Quitada='" & FiltroStatus & "'"
    End If


    If Not IsNull(FiltroFuncao) Then
    StrSQL = StrSQL & "[Filial]='" & FiltroFuncao & "'"
    End If


    If Not IsNull(FiltroCodigo) Then
    If StrSQL <> "" Then
    StrSQL = StrSQL & " And "
    End If
    StrSQL = StrSQL & "[Tbl_Vendas].Nº_Documento=" & FiltroCodigo
    End If

    If Not IsNull(FiltroNome) Then
    If StrSQL <> "" Then
    StrSQL = StrSQL & " And "
    End If
    Select Case Nz(FiltroTipoNome)
    Case "", "Igual"
    StrSQL = StrSQL & "Tbl_Clientes.[xNome]='" & FiltroNome & "'"
    Case "Contenha"
    StrSQL = StrSQL & "Tbl_Clientes.[xNome] Like '*" & FiltroNome & "*'"
    Case "Comece"
    StrSQL = StrSQL & "Tbl_Clientes.[xNome] Like '" & FiltroNome & "*'"
    Case "Termine"
    StrSQL = StrSQL & "Tbl_Clientes.[xNome] Like '*" & FiltroNome & "'"
    End Select
    End If

    If Not IsNull(FiltroPartir) Then
    If StrSQL <> "" Then
    StrSQL = StrSQL & " And "
    End If
    StrSQL = StrSQL & "Vencimento>=" & dataSql(FiltroPartir)
    End If

    If Not IsNull(FiltroAte) Then
    If StrSQL <> "" Then
    StrSQL = StrSQL & " And "
    End If
    StrSQL = StrSQL & "Vencimento<=" & dataSql(FiltroAte)
    End If

    sqlFiltro = IIf(StrSQL = "", "", "(" & StrSQL & ")")



    End Function



    Observação: Vale lembrar que esse Form Filtro, possui outras opções de filtro, como o Nome do cliente, as datas inicial e final, o nº do documento. Todos podem ser selecionado simultaneamente que o relatório abre perfeitamente. Mas se os dois campos "Quitada" e "Filial" forem selecionados, nao abre. (só abre se for selecionado um deles)

    Diante disso pergunto:

    Teria que acrescentar algo ao código para listar o relatório com essas duas opções selecionadas simultaneamente? Se sim, como ficaria?

    Desde já agradeço!
    avatar
    Convidado
    Convidado


    [Resolvido]Adaptação de código para filtro Empty Re: [Resolvido]Adaptação de código para filtro

    Mensagem  Convidado 6/5/2013, 14:55

    Ajudaria se enviasse um modelo do BD

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Adaptação de código para filtro Empty Re: [Resolvido]Adaptação de código para filtro

    Mensagem  Convidado 6/5/2013, 14:59

    Talves assim:

    If Not IsNull(FiltroFuncao) Then
    StrSQL = StrSQL & " And [Filial]='" & FiltroFuncao & "'"
    End If
    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Adaptação de código para filtro Empty Re: [Resolvido]Adaptação de código para filtro

    Mensagem  Chamon Consultoria 6/5/2013, 22:58

    Olá Piloto,

    sua sugestão funcionou muito bem. Porém para listar o relatório, o filtroFuncao ficou dependente da seleção de uma opção no FiltroStatus (Quitada = Sim ou Não).
    Exemplo: Se for selecionado uma Filial e não selecionar um Status (Quitada= Sim ou Não), o relatório não abre. Isso é importante, pois pode ser necessário saber simultaneamente todos os Status (Quitada=Sim ou Não) de uma filial.

    Alguma sugestão?

    Desde já agredeço!
    avatar
    Chamon Consultoria
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 266
    Registrado : 31/08/2012

    [Resolvido]Adaptação de código para filtro Empty Re: [Resolvido]Adaptação de código para filtro

    Mensagem  Chamon Consultoria 7/5/2013, 04:33

    Piloto,

    problema resolvido! Utilizei os critérios do FiltroCodigo no FiltroFuncao e deu certo. Pra dizer a verdade não sei "ler" o que esse critério faz exatamente, mas está funcionando perfeitamente.
    Ficou assim:

    If Not IsNull(FiltroFuncao) Then
    If StrSQL <> "" Then
    StrSQL = StrSQL & " And "
    End If
    StrSQL = StrSQL & "[Filial]='" & FiltroFuncao & "'"
    End If

    Caso vc possa traduzir esse critério para um melhor entendimento, ficarei grato.

    No mais, agradeço outra vez pela ajuda! Sucesso pra vc!

    Abraço
    avatar
    Convidado
    Convidado


    [Resolvido]Adaptação de código para filtro Empty Re: [Resolvido]Adaptação de código para filtro

    Mensagem  Convidado 7/5/2013, 05:15

    traduzindo:
    'Se a FiltroFucao Não é nulo Vai para a linha a seguir

    If Not IsNull(FiltroFuncao) Then
    'Se A variável StrSQL é diferente de branco Vai para a linha seguinte

    If StrSQL <> "" Then\
    'A variável StrSQL é igual a Variável StrSQL e

    StrSQL = StrSQL & " And "
    'Encerra o If
    End If
    'A variável StrSQL é igual a Variável StrSQL quando o campo Filial for igual a variável FiltroFuncao

    StrSQL = StrSQL & "[Filial]='" & FiltroFuncao & "'"
    'Encerra o If
    End If

    Cumprimentos.

    Conteúdo patrocinado


    [Resolvido]Adaptação de código para filtro Empty Re: [Resolvido]Adaptação de código para filtro

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 12:54