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


2 participantes

    [Resolvido]Filtrar lista

    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty [Resolvido]Filtrar lista

    Mensagem  Veríssimo 24/7/2012, 14:47

    Pessoal,
    No meu projeto, criei um formulário "frmVencidos" que é aberto listando todos os registros que estejam com a data de vencimento vencida e que na combobox "Situação" como "Cartório". Quando um dos registros estiver com a situação "Cartório" e com a data de vencimento vencida, este form se abre listando todos os registros para que se possa selecioná-los e modificar sua situação.

    O código do frmVencidos para filtrar e exibir na lista é o seguinte:

    Private Sub fncCarregaLista(Optional filtro As String = "id > 0")
    Dim strSql As String
    strSql = "SELECT id, format(inquerito,'000/00'), dataDevencimento, iif(flagrante=0,' ','x'), iif(cota=0,' ','x'),vítima,indiciado, natureza, format(processo,'0000/00'), vara, "
    strSql = strSql & "situação, iif([situação]='fórum',1,iif([situação]='cartório',1,3)) as ord FROM tblInqueritos "
    strSql = strSql & "WHERE situação='cartório' and datadevencimento <= date() AND " & filtro & " ORDER BY (iif([situação]='fórum',1,iif([situação]='cartório',1,2))), datadevencimento;"
    Me!Lista.RowSource = strSql
    End Sub

    Agora criei mais dois forms (frmAndamento e frmPorData), cópias do frmVencidos, e queria que o primeiro frmAndamento, exibisse na sua lista os registros que estivesse com a situação na combobox "Cartório" e "Fórum", independetemente da data de vencimento.

    Já o segundo é mais complicado, pois criei um form frmPesquisaPorData, na qual criei duas textbox que recebem um intervalo de tempo e exibem no frmPorData os registros naquele intervalo e de acordo com a escolha de rádio buttons com as situações, que são cinco. Também gostaria que essas textbox do frmPesquisaPorData fossem exibidas no frmPorData.

    Eu criei um relatório para cada form que exibem corretamente os resultados, porém, os forms, os quais são cópias do frmVencidos, exibem os resultados do frmVencidos, pois não consigo modificar o código acima para que liste o resultado requerido.

    Minha dúvida é como devo modificar o código acima e mais algumas propriedades para que o frmAndamento e o frmPorData exibam os registros que desejo e não os registros do frmPorData e como faço para que essas textbox do frmPesquisaPorData fossem exibidas no frmPorData.


    Em anexo, encaminho o meu projeto para sanar possíveis dúvidas.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 26/7/2012, 01:57

    Boas Veríssimo, disponibilize em 2003 ou 2007 se possivel.

    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 27/7/2012, 16:25

    Eu tentei.
    Mas inseri alguma função que na hora da conversão, diz que não é suportado por versões anteriores.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 27/7/2012, 16:51

    Boas... Tente deixar no BD apenas os objetos envolvidos e depois converta-o


    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 31/7/2012, 14:00

    Private Sub fncCarregaLista(Optional filtro As String = "id > 0")
    Dim strSql As String
    strSql = "SELECT id, format(inquerito,'000/00'), dataDevencimento, iif(flagrante=0,' ','x'), iif(cota=0,' ','x'),vítima,indiciado, natureza, format(processo,'0000/00'), vara, "
    strSql = strSql & "situação, iif([situação]='fórum',1,iif([situação]='cartório',1,3)) as ord FROM tblInqueritos "
    strSql = strSql & "WHERE situação='cartório' and datadevencimento <= date() AND " & filtro & " ORDER BY (iif([situação]='fórum',1,iif([situação]='cartório',1,2))), datadevencimento;"
    Me!Lista.RowSource = strSql
    End Sub

    No código acima ele lista pela situação = 'cartório' e data de vencimento. ´
    Agora, no frmAndamento eu preciso que ele liste pela situação = 'cartório' e situação = 'fórum', tendo como fonte a mesma tabela, porém, com a consulta qyrAnamento;

    No frmPorData, eu preciso que ele liste, a partir das datas inseridas no frmPesquisaPorData e também pela rádiobutton com cinco opções, tendo como consulta o qyrConsultaPorData.

    Os frmAndamento e frmPesquisaPorData são cópias do frmVencidos, por isso, o código acima está listando os registros vencidos e que estejam com a situação = 'cartório.

    Mais uma dúvida, tenho que mudar a fonte de registro nas propriedades de cada form para a consulta pretendida?
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 31/7/2012, 20:40

    Bem.. não tive como ver o teu BD.. Mas vamos la..

    Se são baseados na mesma tabela, porem cada form utiliza critérios diferentes...

    Então na fonte de registro deste form, deve utilizar a respectiva consulta

    Form 1 - Consulta 1
    Form 2 - Consulta 2
    Form 3 - COnsulta 3...

    Cada consulta com os respectivos critérios...


    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 31/7/2012, 20:52

    Veja Bem...

    A lista pode ser carregada atraves da aplicação da consulta diretamente na fonte de registro... ou com a utilização de uma função, como esta que postou.

    Dim strSql As String
    strSql = "SELECT id, format(inquerito,'000/00'), dataDevencimento, iif(flagrante=0,' ','x'), iif(cota=0,' ','x'),vítima,indiciado, natureza, format(processo,'0000/00'), vara, "
    strSql = strSql & "situação, iif([situação]='fórum',1,iif([situação]='cartório',1,3)) as ord FROM tblInqueritos "
    strSql = strSql & "WHERE situação='cartório' and datadevencimento <= date() AND " & filtro & " ORDER BY (iif([situação]='fórum',1,iif([situação]='cartório',1,2))), datadevencimento;"
    Me!Lista.RowSource = strSql
    End Sub


    Se em ambos os forms tem esta função... sempre que for chamada esta função ela preenche a lista com a mesma... ou seja... subistitui a fonte de registro por esta..

    Portanto em cada form tem que modificar esta função com os critérios pertinentes.


    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 31/7/2012, 21:03

    Já havia colocado as fontes de registros com as respectivas consultas, porém, continua listando os registros do frmVencidos (o qual foi copiado para o frmAndamento e frmPorData).

    O frmAndamento é praticamente idêntico ao frmVencidos. O que muda é no frmVencidos o critério é situação = 'cartório' e DatadeVencimento <= date, tendo como fonte de registro qyrVencidos.

    No frmAndamento o critério seria situação = 'cartório' e 'fórum', tendo como fonte de registro o qyrAndamento.

    Já o frmPorData é mais complicado para mim, pois ele deve listar os valores pela data de vencimento através do frmPesquisaPorData, no qual existem dois textbox para inserção do intervalo de data. Neste mesmo frmPesquisaPorData há um quadro com as rádio buttons 'cartório', 'fórum', 'outros', 'relatado', 'cota cumprida' e 'todos', sendo que a lista deverá ser preenchida com os registros que estiverem no intervalo inserido e de acordo com a opção do quadro. Neste form, a fonte de registro eu escolhi a consulta qyrConsultaPorData.

    Mesmo assim, ambos listam os registro do frmVencidos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 1/8/2012, 13:18

    Pelo que andei lendo, tem-se que realizar mudanças na função WHERE, porém, já entei de tudo e ainda não consegui.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 1/8/2012, 17:20

    Se voce coloca na fonte de registro uma SQL ou uma consulta... ao acionar a função:

    Private Sub fncCarregaLista(Optional filtro As String = "id > 0")


    Ela é substituida por essa SQL, então o que tem que fazer e alterar nesta SQL os critérios..

    Tente postar o BD apenas com as partes envolvidas.


    Cumprimentos.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  JPaulo 1/8/2012, 17:49

    Convertido;

    2007
    https://dl.dropbox.com/u/771097/Controle%20de%20Inqu%C3%A9ritos2007.rar

    2003
    https://dl.dropbox.com/u/771097/Controle%20de%20Inqu%C3%A9ritos2003.rar


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Filtrar lista Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Filtrar lista Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Filtrar lista Folder_announce_new Instruções SQL como utilizar...
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 2/8/2012, 16:41

    Grato JP pela conversão...

    Boas Veríssimo, de posse do teu BD, recapitule passo a passo o que está ocorrendo e o que deseja corrigir, citado os forms envolvidos.

    Se for correção para mais de um form, especifique primeiro uma dúvida que depois de resolvida passaremos a seguinte.


    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 2/8/2012, 17:06

    É o que postei acima
    De acordo com o código acima, logo no primeiro post, o frmVencidos lista os registros que estão com a situação = 'cartório' e com a data de vencimento vencida, tendo como fonte de consulta o qyrVencidos.

    Eu criei dois forms copiados do frmVencidos, sendo o primeiro o frmAndamento, no qual ao invés de listar os registros como o frmVencidos, deverá listar baseado no qyrAndamento que são todos com a situação = 'cartório' e 'fórum'.

    O segundo form é o frmPorData, que deve listar os registros de acordo com as datas inseridas em duas textbox no form frmConsultaPorData, sendo que também neste formPesquisaPorData existe um quadro com cinco botões de seleção onde se insere novo critério. Estes forms são baseados na fonte de registro consulta qyrConsultaPorData.

    Minha dúvida é como devo modificar o código e/ou mais as propriedades do form para que cada form liste os registros desejado.

    Se clicar em impirmir em cada form, verá que apesar de o form não listar os registros desejados, pois todos eles listam os valores do frmVencidos, o relatório gerado é de acordo com a pesquisa realizada.

    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 2/8/2012, 17:39

    Vamos ao primeiro, eu particularmente ao inves de colocar o nome da consulta na fonte de registro, prefiro colocar diretamenta a SQL, evitando assi no BD ter verias consulta, deixando o BD mais limpo digamos assim:

    Pois bem, no form:

    frmAndamento

    Na sua fonte de registro coloque:

    SELECT tblInqueritos.* FROM tblInqueritos WHERE (((tblInqueritos.Situação)="cartório" Or (tblInqueritos.Situação)="fórum"));



    E nos eventos do mesmo altere a função: fncCarregaLista, por esta >>>>>


    Private Sub fncCarregaLista(Optional filtro As String = "id > 0")
    Dim strSql As String
    strSql = "SELECT id, format(inquerito,'000/00'), dataDevencimento, iif(flagrante=0,' ','x'), iif(cota=0,' ','x'),vítima,indiciado, natureza, format(processo,'0000/00'), vara, "
    strSql = strSql & "situação, iif([situação]='fórum',1,iif([situação]='cartório',1,3)) as ord FROM tblInqueritos "
    strSql = strSql & "WHERE situação='cartório' Or Situação='fórum' and datadevencimento <= date() AND " & filtro & " ORDER BY (iif([situação]='fórum',1,iif([situação]='cartório',1,2))), datadevencimento;"
    Me!Lista.RowSource = strSql
    End Sub


    Observe que a logica disso é a seguinte, ao abrir o form, ele abre filtrado pela SQL na fonte de registro, porem se digitar em alguma das caixa texto no form (Filtro) ele substitui a SQL da fonte de registro pela SQL da fncCarregaLista, portanto a mesma tem que estar com os critério iguais a consulta inicial na fonte de registro.



    Teste e retorne para irmos ao próximo.


    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 2/8/2012, 20:04

    O frmAndamento funcionou perfeitamente, PILOTO.
    Obrigado
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 2/8/2012, 20:11

    Agora o frmPorData é mais complicado para mim, pois ele é gerado a partir de uma pesquisa com duas textbox de data e um quadro de rádio buttons. Nele também não consigo fazer com que o a textbox SomaGeral que exibe o número de registros listados.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 2/8/2012, 20:30

    Consegui confirgurar o SomaGeral para exibir o resultado da lista.
    Agora só falta modificar o código e as propriedades para exibir a lista certa de acordo com a pesquisa inserida.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 2/8/2012, 21:12

    Não compreendi direito amigao..

    o que falta no frm por data?


    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 3/8/2012, 15:53

    Então, Piloto,

    Falta fazer com que a lista do frmPorData, exiba apenas os registros que estejam no intervalo inserido nas textboxs e no critério do quadro do frmConsultaPorData, tendo como base a consulta qyrConsultaPorData.

    Exemplo, ao abrir o frmConsultaPorData, nele terão dois textbox com data inicial e data final e embaixo um quadro com as opções: Cartório, Fórum, Relatado, Cota Cumprida, Outros e Todos. Após inserir as datas e selecionar o radio button do quadro com a opção desejada, o frmPorData abrirá com a lista exibindo os registros que estejam com a data de vencimento no intervalo inserido e que estejam com a situação na opção selecionada.



    Não sei se fui bem claro.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 3/8/2012, 18:54

    O que e esse Radio Button? rsrsrs
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 3/8/2012, 19:03

    Voce falou:

    no critério do quadro do frmConsultaPorData...


    Que quadro é esse?

    Filtra pela data e em seguida por uma das caixas texto: Vitima, Indiciado, Natureza ?



    Bem.. eu penso assim:

    a consult por data é uma...

    Ja se quiser com os outros parametros, como estes são mais especificos, dispensa a filtragem em conjunto por data:


    Por exemplo:

    Se consultar o Nome da Vítima >>>>> Fulano de Tal...

    Listará o/os Processo(s) que tenha... então dispensa o criterio por datas justamente por ser mais específico.



    Eslareca melhor...

    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 3/8/2012, 19:40

    É grupo de opções (rs)

    É assim, se puder baixar os modelos 2003 ou 2007 que o JPaulo converteu.
    Nele, abra o frmConsultaPorData, insira a data inicial e em seguida a data final. Notará que abaixo existe um quadro de opções com opções (radio buttons, pelo menos eu achava que fosse rsrs) e selecione a situação que deseja e depois clique em pesquisar. Abrirá o frmPorData onde deveria listar os registros que estiverem com a data de vencimento no intervalo inserido, levando em consideração a situação escolhida no quadro "Situação".
    Porém, como eu copiei este frmPorData do frmVencidos, ele está listando os registros do frmVencidos e não do frmPorData. Mas se clicar em "imprimir", verá que o relatório gerado, exibe exatamente os registros no intervalo e opçãos desejados. O problema aí está ocorrenco igual ao que aconteceu no frmAndamento, que você me mandou o código alterado e que está funcionando perfeitamente agora.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 3/8/2012, 21:53

    A solução está pronta, porem em parte:
    pois na SQL ainda não conseguir aplicar corretamente o critério entre datas que é:
    'VarSQL = VarSQL & "((DataDeVencimento Between " & Me.data1 & " And " & Me.data2 & ") AND (Situação = '" & Me.txtSituação & "')) "


    Crie um módulo e o nomeeie de VarPublicas, neste modulo crie uma variável pública:

    Public VarSQL as String

    Esta variável será carregada com a SQL filtrada pelas caixas texto no frmConsultaPorData.

    No Botão Pesquisar:

    On Error Resume Next
    If IsNull(Me.data1) Or data1 = "" Or IsNull(Me.data2) Or data2 = "" Then
    MsgBox "Insira as datas desejadas.", vbInformation, "Aviso"
    Me.data1 = ""
    Me.data2 = ""
    Me.data1.SetFocus
    ElseIf Me.data1 > Me.data2 Then
    MsgBox "A data inicial não pode ser superior à data final.", vbInformation, "Aviso"
    Me.data1 = ""
    Me.data2 = ""
    Me.data1.SetFocus
    ElseIf DCount("*", "qyrConsultaPorData") = 0 Then
    MsgBox "Não há registros para o intervalo de tempo informado.", vbInformation, "Aviso"
    Me.data1.SetFocus
    Else
    Me.txtSituação.Locked = True
    ' a Variável publica será carregada com esta consulta SQL/VBA, com o critério do grupo de opções
    VarSQL = "SELECT id, format(inquerito,'000/00'), dataDevencimento, iif(flagrante=0,' ','x'), iif(cota=0,' ','x'),vítima,indiciado, natureza, format(processo,'0000/00'), vara, "
    VarSQL = VarSQL & "situação, iif([situação]='fórum',1,iif([situação]='cartório',1,3)) as ord FROM tblInqueritos "
    VarSQL = VarSQL & "WHERE situação='" & Me.txtSituação & "' "
    VarSQL = VarSQL & "ORDER BY (iif([situação]='fórum',1,iif([situação]='cartório',1,2))), datadevencimento;"

    DoCmd.OpenForm "frmPorData"


    No frmPorData faremos uma checagem se a Variável está carregada, caso sim carrega a lista com a mesma, caso contrário executa normalmente o código.

    No frmPorData nos eventos ao abrir:

    Private Sub Form_Open(Cancel As Integer)
    If Application.Version > 11# Then
    DoCmd.ShowToolbar "ribbon", acToolbarNo
    End If

    If VarSQL <> "" Then
    Me.Lista.RowSource = VarSQL
    Else
    Call fncCarregaLista
    End If


    Me!tx1.SetFocus
    If Me.SomaGeral.Value = 1 Then
    Me.Rótulo47.Caption = "inquérito"
    Else
    Me.Rótulo47.Caption = "inquéritos"
    End If
    End Sub



    Na função privada:Private Sub fncLimparConsulta(), é necessário a checagem tambem

    Private Sub fncLimparConsulta()
    Me!tx1 = Null: Me!tx2 = Null: Me!tx3 = Null
    Me!tx4 = Null: Me!tx5 = Null: Me!tx6 = Null
    Me!tx7 = Null: Me!tx8 = Null
    If VarSQL <> "" Then Exit Sub
    Call fncCarregaLista
    End Sub



    Desta forma a solução está prota parcialmente, abrirei um tópico com a SQL para que algum colega possa nos ajudar com o critério entre data.


    Cumprimentos.



    Ps. Ia me esquecendo, limpe a variável ao fechar do formPorData

    VarSQL = ""



    Última edição por PILOTO em 3/8/2012, 22:08, editado 1 vez(es)
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 3/8/2012, 22:05

    A SQL ja pronta amigão:


    VarSQL = "SELECT id, format(inquerito,'000/00'), dataDevencimento, iif(flagrante=0,' ','x'), iif(cota=0,' ','x'),vítima,indiciado, natureza, format(processo,'0000/00'), vara, "
    VarSQL = VarSQL & "situação, iif([situação]='fórum',1,iif([situação]='cartório',1,3)) as ord FROM tblInqueritos "
    VarSQL = VarSQL & "WHERE situação='" & Me.txtSituação & "' and datadevencimento >= # " & Format(Me.data1, "mm/dd/yyyy") & " # and datadevencimento <= # " & Format(Me.data2, "mm/dd/yyyy") & " # "
    VarSQL = VarSQL & "ORDER BY (iif([situação]='fórum',1,iif([situação]='cartório',1,2))), datadevencimento;"

    Aplique conforme o post anterior

    Cumprimentos.

    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 5/8/2012, 14:31

    A SQL acima eu copio no local da que você postou anteriormente logo abaixo do comentário em cor verde?

    E como relação à fonte de registro do frmPorData, eu nã preciso inserir nada?

    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 6/8/2012, 00:22

    Sim... substitui por aquela... no formPor data nao precisa..

    Apenas os codigos como postei acima.. substituindo aquela primeira SQL por esta ultima.

    Testei aqui e funcionou perfeitamente.

    Cumprimentos
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 6/8/2012, 16:46

    Então, criei um módulo e inseri
    Public VarSQL as String
    É isso mesmo, só digittar este código acima no módulo?
    Em seguida copiei todos os código da maneira como me escreveu. Porém, o frmPorData se abre sem exibir nenhum registro.
    No frmPorData não precisa realziar nada. E seu código fncCarregaLista?
    Tá um pocuo complicado para mim.

    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 6/8/2012, 17:09

    O Exemplo ja estava pronto, não o enviei antes justamente para que tentasse aplicar ai para se lhe aumentar o aprendizado.

    Pois bem segue o mesmo, no entanto abra os form e estude os codigos.

    https://dl.dropbox.com/u/26441349/Verissimo.rar

    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 6/8/2012, 17:31

    Obrigado, PILOTO.
    Estava certo da primeira vez.

    A única coisa que está dando errado, é que ao escolher a opção "Todos" o form não exibe os registros. Somente nesta opção é que está dando errado. De resto, está perfeito.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 6/8/2012, 18:42

    Por que que com a opção "Todos", não exibe a lista?

    Já procurei por todo o código e não consegui encontrar o que está faltando.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 6/8/2012, 19:18

    Não é que estaja faltando... e sim o que está aplicando no critário, observe a parte em negrito:

    Private Sub Quadro8_Click()
    If Me.Quadro8 = 0 Then
    Me.txtSituação = ""

    ElseIf Me.Quadro8 = 1 Then
    Me.txtSituação = "Cartório"
    ElseIf Me.Quadro8 = 2 Then
    Me.txtSituação = "Fórum"
    ElseIf Me.Quadro8 = 3 Then
    Me.txtSituação = "Relatado"
    ElseIf Me.Quadro8 = 4 Then
    Me.txtSituação = "Cota Cumprida"
    ElseIf Me.Quadro8 = 5 Then
    Me.txtSituação = "Outros"
    End If
    End Sub


    >>> Você está aplicando como critério campos em branco ou seja, ""

    O Access é bem criterioso quanto a seus filtros, se em branco, se nulo, se vazio....


    O que tem que fazer é uma checagem se o escolhido for a opção 0 e caso sim, remeta a outra SQL.

    Vamos a solução:

    Criaremos uma variável do tipo Boolean (Verdadeiro/Falso) e ao escolher a opção todos colocá-la como true, e ao clicar do botão se a variável estiver como true aplicar a SQL sem o critério situação.

    Option Compare Database
    Dim Todos as Boolean

    Defina em eventos do form ao abrir a variável como True, pois como a caixa de opção está como valor padrão a opção 0 se clicar no botão pesquisar, ele não modificara a variável para true posto que tem como valor padrão false, e mesmo que clique na opão todos, como a opcao é padrao ela nao executa o codigo, teria que clicar em outra opção e depois na todos.. para ativar o codigo, portanto coloque a variável como true no evento ao abrir do form... assim se escolher a data e deixar a opção todos.. ele abre com a variável true.



    Private Sub Quadro8_Click()
    If Me.Quadro8 = 0 Then
    Todos = True

    ElseIf Me.Quadro8 = 1 Then
    Me.txtSituação = "Cartório"
    ElseIf Me.Quadro8 = 2 Then
    Me.txtSituação = "Fórum"
    ElseIf Me.Quadro8 = 3 Then
    Me.txtSituação = "Relatado"
    ElseIf Me.Quadro8 = 4 Then
    Me.txtSituação = "Cota Cumprida"
    ElseIf Me.Quadro8 = 5 Then
    Me.txtSituação = "Outros"
    End If
    End Sub



    Private Sub Comando5_Click()
    On Error Resume Next
    If IsNull(Me.data1) Or data1 = "" Or IsNull(Me.data2) Or data2 = "" Then
    MsgBox "Insira as datas desejadas.", vbInformation, "Aviso"
    Me.data1 = ""
    Me.data2 = ""
    Me.data1.SetFocus
    ElseIf Me.data1 > Me.data2 Then
    MsgBox "A data inicial não pode ser superior à data final.", vbInformation, "Aviso"
    Me.data1 = ""
    Me.data2 = ""
    Me.data1.SetFocus
    ElseIf DCount("*", "qyrConsultaPorData") = 0 Then
    MsgBox "Não há registros para o intervalo de tempo informado.", vbInformation, "Aviso"
    Me.data1.SetFocus
    Else
    Me.txtSituação.Locked = True
    If Todos = False Then
    VarSQL = "SELECT id, format(inquerito,'000/00'), dataDevencimento, iif(flagrante=0,' ','x'), iif(cota=0,' ','x'),vítima,indiciado, natureza, format(processo,'0000/00'), vara, "
    VarSQL = VarSQL & "situação, iif([situação]='fórum',1,iif([situação]='cartório',1,3)) as ord FROM tblInqueritos "
    VarSQL = VarSQL & "WHERE situação='" & Me.txtSituação & "' and datadevencimento >= # " & Format(Me.data1, "mm/dd/yyyy") & " # and datadevencimento <= # " & Format(Me.data2, "mm/dd/yyyy") & " # "
    VarSQL = VarSQL & "ORDER BY (iif([situação]='fórum',1,iif([situação]='cartório',1,2))), datadevencimento;"
    Else
    VarSQL = "SELECT id, format(inquerito,'000/00'), dataDevencimento, iif(flagrante=0,' ','x'), iif(cota=0,' ','x'),vítima,indiciado, natureza, format(processo,'0000/00'), vara, "
    VarSQL = VarSQL & "situação, iif([situação]='fórum',1,iif([situação]='cartório',1,3)) as ord FROM tblInqueritos "
    VarSQL = VarSQL & "WHERE datadevencimento >= # " & Format(Me.data1, "mm/dd/yyyy") & " # and datadevencimento <= # " & Format(Me.data2, "mm/dd/yyyy") & " # "
    VarSQL = VarSQL & "ORDER BY (iif([situação]='fórum',1,iif([situação]='cartório',1,2))), datadevencimento;"
    End If
    DoCmd.OpenForm "frmPorData"
    End If
    End Sub



    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 6/8/2012, 19:39

    Em qual form devo colocar a variável com true e como procedo para tal?
    Eu substitui os códigos que me passou e ainda continuou a não listar na opção "todos".
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 6/8/2012, 19:43

    Ao escolher a opção "Todos", ele informa que não tem registros no período selecionado.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 6/8/2012, 19:47

    https://dl.dropbox.com/u/26441349/Verissimo.rar


    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 6/8/2012, 20:29

    Caro PILOTO,

    Mesmo o modelo que me mandou não está listando de acordo com a opção desejada.
    Somente na primeira vez ele lista, depois, não lista mais, ficando igual para qualquer opção.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 6/8/2012, 21:17

    apos uma consulte, tem que qo fechar o form limpar a veriável VarSQL...

    Sempre a cada consulta o form deve ser aberto


    o form da lista
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 6/8/2012, 21:28

    A VarSQL é carrega na abertura do form que contem a lista.. se ele estiver aberto.. e consulta novamente nao dará certo


    Pode colocar assim:


    Crie um modulo e o nomeei de mdlFuncoes..

    neste:

    Function IsLoaded(ByVal strFormName As String) As Boolean
    On Error GoTo Err_IsLoaded

    Const conObjStateClosed = 0
    Const conDesignView = 0

    If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
    If Forms(strFormName).CurrentView <> conDesignView Then
    IsLoaded = True
    End If
    End If

    Exit_IsLoaded:
    Exit Function

    Err_IsLoaded:
    MsgBox err.Description, , " Service Operations"
    Resume Exit_IsLoaded
    End Function



    E no form COnsultaPorData

    Private Sub Comando5_Click()
    On Error Resume Next
    If IsNull(Me.data1) Or data1 = "" Or IsNull(Me.data2) Or data2 = "" Then
    MsgBox "Insira as datas desejadas.", vbInformation, "Aviso"
    Me.data1 = ""
    Me.data2 = ""
    Me.data1.SetFocus
    ElseIf Me.data1 > Me.data2 Then
    MsgBox "A data inicial não pode ser superior à data final.", vbInformation, "Aviso"
    Me.data1 = ""
    Me.data2 = ""
    Me.data1.SetFocus
    ElseIf DCount("*", "qyrConsultaPorData") = 0 Then
    MsgBox "Não há registros para o intervalo de tempo informado.", vbInformation, "Aviso"
    Me.data1.SetFocus
    Else
    Me.txtSituação.Locked = True
    If Todos = False Then
    VarSQL = "SELECT id, format(inquerito,'000/00'), dataDevencimento, iif(flagrante=0,' ','x'), iif(cota=0,' ','x'),vítima,indiciado, natureza, format(processo,'0000/00'), vara, "
    VarSQL = VarSQL & "situação, iif([situação]='fórum',1,iif([situação]='cartório',1,3)) as ord FROM tblInqueritos "
    VarSQL = VarSQL & "WHERE situação='" & Me.txtSituação & "' and datadevencimento >= # " & Format(Me.data1, "mm/dd/yyyy") & " # and datadevencimento <= # " & Format(Me.data2, "mm/dd/yyyy") & " # "
    VarSQL = VarSQL & "ORDER BY (iif([situação]='fórum',1,iif([situação]='cartório',1,2))), datadevencimento;"
    Else
    VarSQL = "SELECT id, format(inquerito,'000/00'), dataDevencimento, iif(flagrante=0,' ','x'), iif(cota=0,' ','x'),vítima,indiciado, natureza, format(processo,'0000/00'), vara, "
    VarSQL = VarSQL & "situação, iif([situação]='fórum',1,iif([situação]='cartório',1,3)) as ord FROM tblInqueritos "
    VarSQL = VarSQL & "WHERE datadevencimento >= # " & Format(Me.data1, "mm/dd/yyyy") & " # and datadevencimento <= # " & Format(Me.data2, "mm/dd/yyyy") & " # "
    VarSQL = VarSQL & "ORDER BY (iif([situação]='fórum',1,iif([situação]='cartório',1,2))), datadevencimento;"
    End If
    If IsLoaded("frmPorData") Then
    Forms!frmPorData!Lista.RowSource = VarSQL
    Forms!frmPorData!Lista.Requery
    Else
    DoCmd.OpenForm "frmPorData"
    End If
    End If
    End Sub


    A função checa se o form está aberto, caso positivo carrega a lista e faz um requery na mesma


    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 7/8/2012, 13:11

    Vamos lá,
    Mantive os códigos que me passou anteriormente e realizei estas últimas mudanças.
    Agora está acontencendo o seguinte.
    Caso eu abra o frmConsultaPorData, insira as datas e cique em pesquisar estando a opção Todos selecionada, o frmPorData se abre e lista os registros corretos. Porém, caso eu mude a opção do quadro, o frmPorData se abre continuando a exibir os registros da opção Todos.
    Caso a primeira pesquisa seja outra opção que não Todos, a lista é preenchida com todos os registros.
    Caso eu escolha algua opção que não tenha registro, se em seguida eu escolher a opção Todos, ele repee a última informção, ou seja, que não tem registro.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 11/8/2012, 15:23

    Bom dia Veríssimo, tive que me ausentar por alguns dias..

    Pois bem...

    Ao escolher a opção todos, a variável Todos é definida como true remetendo a SQL sem filtro para o campo situação.
    Ocorre que ao se escolher outra opção que não seja todos.. a variavel continua como True, remetendo para a SQL todos, o que temos que fazer é ao escolher outra opção que não "Todos", definir a variável novamente como False.


    Para isso:


    Private Sub Quadro8_Click()
    If Me.Quadro8 = 0 Then
    Todos = True
    ElseIf Me.Quadro8 = 1 Then
    Me.txtSituação = "Cartório"
    Todos = False
    ElseIf Me.Quadro8 = 2 Then
    Me.txtSituação = "Fórum"
    Todos = False
    ElseIf Me.Quadro8 = 3 Then
    Me.txtSituação = "Relatado"
    Todos = False
    ElseIf Me.Quadro8 = 4 Then
    Me.txtSituação = "Cota Cumprida"
    Todos = False
    ElseIf Me.Quadro8 = 5 Then
    Me.txtSituação = "Outros"
    Todos = False
    End If
    End Sub


    Cumprimentos.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Veríssimo 13/8/2012, 19:40

    Bom...vamos lá, PILOTO
    Agora ficou assim, após inserir as datas, ao clicar em pesquisar "Todos", o frmPorData se abre listando todos os registros no intervalo. Em seguida, ao selecionar outra opção, o frmPorData se abre exibindo os registros desejados. Até aí, beleza.
    O problema é se caso eu escolha novamente a opção "Todos", o frmPorData se abre listando todos os registros, mas exibe na textbox o número da última pesquisa realizada. E caso eu clique em "Imprimir", o relatório gerado também é o da última pesquisa.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 13/8/2012, 19:55

    Nao entendi... seja mais claro...

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Convidado 13/8/2012, 21:58

    Vamos ver se bem entendi...

    Não entendi que textBox..

    Teste este:

    https://dl.dropbox.com/u/26441349/Verissimo.rar

    Cumprimentos.

    Conteúdo patrocinado


    [Resolvido]Filtrar lista Empty Re: [Resolvido]Filtrar lista

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 18/10/2024, 07:15