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

3 participantes

    [Resolvido]Numerar linhas

    avatar
    alantb
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 25/07/2017

    [Resolvido]Numerar linhas Empty [Resolvido]Numerar linhas

    Mensagem  alantb 19/11/2020, 15:02

    Bom dia pessoal, tenho um listbox1 que carrega CodEmpenho, NroEmpenho, AnoEmpenho, NomeFornecedor,ValorTotal. Ao clicar em um item do listbox1, carrega no listbox2, ao lado, os itens que fazem parte do empenho selecionado. Preciso que conforme os itens são adicionados ao listbox2, este vá criando na 1º coluna uma numeração dos itens conforme o CodEmpenho selecionado. Cada empenho terá sua sequência que começa com item 1,2,3,...A ordem permanece mesmo que um item seja excluido, ex: se determinado empenho tem os itens 1,2,3,4,5 ao excluir o item 3, por exemplo, ficaria 1,2,3,4. Na verdade seria uma contagem de itens, só que por critério. Vasculhei o forum e o tópico abaixo tem um BD de exemplo "NumerarConsultaGrupoData". O resultado dessa consulta é exatamente o que mencionei acima, só que usa outro tipo de consulta, a Consulta União. Tentei adaptar aqui na única vez que não deu erro somente carregou com 1 em todas as linhas e não puxou todos itens.

    https://www.maximoaccess.com/t37444-resolvidocontador-de-registros-na-abertura-da-query?highlight=contar+registros#255761

    O SQL da minha consulta original sem tentar numerar é esse abaixo. O meu problema é inserir uma coluna de ordem como mencionei acima:

    SELECT tbDetEmpenho.codDetEmpenho, tbDetEmpenho.codEmpenho, tbEmpenho.NroEmpenho, tbEmpenho.AnoEmpenho, tbFornecedor.NomeFornecedor, tbProduto.codProduto, tbProduto.NomeProduto, tbDetEmpenho.CodMarca, tbMarca.NomeMarca, tbCategoria.DesCategoria, tbDetEmpenho.Quantitem, tbDetEmpenho.ValorUnitem, [Quantitem]*[ValorUnitem] AS SubTotal, tbDetEmpenho.CodAlmoxarifado
    FROM tbMarca INNER JOIN (tbFornecedor INNER JOIN (tbEmpenho INNER JOIN (tbCategoria INNER JOIN (tbDetEmpenho INNER JOIN tbProduto ON tbDetEmpenho.codProduto = tbProduto.codProduto) ON tbCategoria.CodCategoria = tbProduto.CodCategoria) ON tbEmpenho.codEmpenho = tbDetEmpenho.codEmpenho) ON tbFornecedor.codFornecedor = tbEmpenho.CodFornecedor) ON tbMarca.codMarca = tbDetEmpenho.CodMarca
    GROUP BY tbDetEmpenho.codDetEmpenho, tbDetEmpenho.codEmpenho, tbEmpenho.NroEmpenho, tbEmpenho.AnoEmpenho, tbFornecedor.NomeFornecedor, tbProduto.codProduto, tbProduto.NomeProduto, tbDetEmpenho.CodMarca, tbMarca.NomeMarca, tbCategoria.DesCategoria, tbDetEmpenho.Quantitem, tbDetEmpenho.ValorUnitem, [Quantitem]*[ValorUnitem], tbDetEmpenho.CodAlmoxarifado;

    Ou teria como fazer direto ao carregar o ListBox2 ??

    ALAN
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 383
    Registrado : 28/10/2010

    [Resolvido]Numerar linhas Empty Re: [Resolvido]Numerar linhas

    Mensagem  zcarloslopes 19/11/2020, 16:00

    Boa tarde alantb,

    Pelo que entendi você pode criar uma coluna direto na query da lixtbox2 com uma contagem (1, 2, 3 ...), que fará o reset sempre que fizer um requery.

    Deixo aqui um exemplo que em tempo encontrei na net (créditos para o autor) e poderá servir o seu propósito.
    Anexos
    [Resolvido]Numerar linhas AttachmentAutoNumQuery.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (17 Kb) Baixado 16 vez(es)
    avatar
    alantb
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 25/07/2017

    [Resolvido]Numerar linhas Empty Re: [Resolvido]Numerar linhas

    Mensagem  alantb 19/11/2020, 17:31

    Olá zcarloslopes, esse exemplo de BD inclusive está no mesmo tópico que deixei o LINK do FORUM acima. Ele cria a lista em ordem numérica na consulta. Entretanto ao selecionar os itens no listbox1 ele exibe no listbox2 os números de sequencia tal como estão na consulta. Ex: ao clicar no primeiro item da lista do listbox1 --> no listbox2 exibe 1,3,5; ao clicar no segundo item do listbox1 --> no listbox2 exibe 2,4,...Pelo que entendi é a própria consulta que manda a ordem numérica obedecendo a ordem de gravação na tabela de origem. Sendo que a minha finalidade era o listbox2 contar os itens a cada carregamento, mantendo a ordem inclusive após exclusões de itens.
    Se você abrir o link que deixei de um tópico resolvido de contagem de registros verá que tem para download um de nome "NumerarConsultaGrupoData". Esse BD faz exatamente o que preciso. Até mesmo na consulta ele cria as sequencias de acordo com o critério estabelecido. Só que usa Consulta União. Estava tentando adaptar, mas não estou conseguindo. Teria de fazer uma Consulta União com a SQL da minha consulta que deixei também na msg anterior.
    No BD de exemplo ficou como está abaixo:

    'NumerarConsultaGrupo é uma function Publica no Modulo

    SELECT Lancto, DataDaEmissao, ValorDoCheque, Historico, NumerarConsultaGrupo(DataDaEmissao) AS Ordem
    FROM tblCheques

    UNION ALL SELECT Lancto, DataDaEmissao, ValorDoCheque, Historico, NumerarConsultaGrupo(Null), * FROM tblCheques WHERE 1=0
    ORDER BY DataDaEmissao;



    Vou seguir, por aqui....

    ALAN
    avatar
    alantb
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 25/07/2017

    [Resolvido]Numerar linhas Empty Re: [Resolvido]Numerar linhas

    Mensagem  alantb 19/11/2020, 17:54

    zcarloslopes, acho que nem o BD de exemplo "NumerarConsultaGrupoData" faz a ordenação correta. Incluí mais um item com a mesma data 20/02/2014 era para adicionar como item 8, ao contrario a consulta iniciou do numero 1 de novo nesse novo registro. Não entendi...Vamos adiante...

    ALAN
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3065
    Registrado : 22/11/2016

    [Resolvido]Numerar linhas Empty Re: [Resolvido]Numerar linhas

    Mensagem  DamascenoJr. 19/11/2020, 23:54

    Os selects estão na ordem invertida.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    alantb
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 25/07/2017

    [Resolvido]Numerar linhas Empty Re: [Resolvido]Numerar linhas

    Mensagem  alantb 20/11/2020, 00:19

    Damasceno Jr não entendi...como deveria ficar então???

    ALAN
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3065
    Registrado : 22/11/2016

    [Resolvido]Numerar linhas Empty Re: [Resolvido]Numerar linhas

    Mensagem  DamascenoJr. 20/11/2020, 00:50

    Um artigo explicadinho nos míiiiiiiiiinimos detalhes.
    usandoaccess.com.br/dicas/numerar-consultas-access-com-eficiencia.asp


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    alantb
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 235
    Registrado : 25/07/2017

    [Resolvido]Numerar linhas Empty Re: [Resolvido]Numerar linhas

    Mensagem  alantb 20/11/2020, 13:15

    Bom dia DamascenoJr, já tinha olhado o post do usandoaccess, mas não havia conseguido implementar. Achei que não tinha conseguido, entretanto o que estava dando errado era o campo entre parenteses para aplicar a função, foi só alterar e deu certo. Vou seguir fazendo testes pra ver se não haverá nenhuma inconsistência nos dados. Veja como ficou a SQL Union:

    Esse campo que alterei: NumerarConsultaGrupo(NroEmpenho)

    SELECT NumerarConsultaGrupo(NroEmpenho) AS Item,tbDetEmpenho.codDetEmpenho, tbDetEmpenho.codEmpenho, tbEmpenho.NroEmpenho, tbEmpenho.AnoEmpenho, tbFornecedor.NomeFornecedor, tbProduto.codProduto, tbProduto.NomeProduto, tbDetEmpenho.CodMarca, tbMarca.NomeMarca, tbCategoria.DesCategoria, tbDetEmpenho.Quantitem, tbDetEmpenho.ValorUnitem, [Quantitem]*[ValorUnitem] AS SubTotal, tbDetEmpenho.CodAlmoxarifado
    FROM tbMarca INNER JOIN (tbFornecedor INNER JOIN (tbEmpenho INNER JOIN (tbCategoria INNER JOIN (tbDetEmpenho INNER JOIN tbProduto ON tbDetEmpenho.codProduto = tbProduto.codProduto) ON tbCategoria.CodCategoria = tbProduto.CodCategoria) ON tbEmpenho.codEmpenho = tbDetEmpenho.codEmpenho) ON tbFornecedor.codFornecedor = tbEmpenho.CodFornecedor) ON tbMarca.codMarca = tbDetEmpenho.CodMarca
    GROUP BY tbDetEmpenho.codDetEmpenho, tbDetEmpenho.codEmpenho, tbEmpenho.NroEmpenho, tbEmpenho.AnoEmpenho, tbFornecedor.NomeFornecedor, tbProduto.codProduto, tbProduto.NomeProduto, tbDetEmpenho.CodMarca, tbMarca.NomeMarca, tbCategoria.DesCategoria, tbDetEmpenho.Quantitem, tbDetEmpenho.ValorUnitem, [Quantitem]*[ValorUnitem], tbDetEmpenho.CodAlmoxarifado;

    UNION ALL SELECT NumerarConsultaGrupo(Null) AS Item,tbDetEmpenho.codDetEmpenho, tbDetEmpenho.codEmpenho, tbEmpenho.NroEmpenho, tbEmpenho.AnoEmpenho, tbFornecedor.NomeFornecedor, tbProduto.codProduto, tbProduto.NomeProduto, tbDetEmpenho.CodMarca, tbMarca.NomeMarca, tbCategoria.DesCategoria, tbDetEmpenho.Quantitem, tbDetEmpenho.ValorUnitem, [Quantitem]*[ValorUnitem] AS SubTotal, tbDetEmpenho.CodAlmoxarifado
    FROM tbMarca INNER JOIN (tbFornecedor INNER JOIN (tbEmpenho INNER JOIN (tbCategoria INNER JOIN (tbDetEmpenho INNER JOIN tbProduto ON tbDetEmpenho.codProduto = tbProduto.codProduto) ON tbCategoria.CodCategoria = tbProduto.CodCategoria) ON tbEmpenho.codEmpenho = tbDetEmpenho.codEmpenho) ON tbFornecedor.codFornecedor = tbEmpenho.CodFornecedor) ON tbMarca.codMarca = tbDetEmpenho.CodMarca
    WHERE 1=0
    GROUP BY tbDetEmpenho.codDetEmpenho, tbDetEmpenho.codEmpenho, tbEmpenho.NroEmpenho, tbEmpenho.AnoEmpenho, tbFornecedor.NomeFornecedor, tbProduto.codProduto, tbProduto.NomeProduto, tbDetEmpenho.CodMarca, tbMarca.NomeMarca, tbCategoria.DesCategoria, tbDetEmpenho.Quantitem, tbDetEmpenho.ValorUnitem, [Quantitem]*[ValorUnitem], tbDetEmpenho.CodAlmoxarifado;

    Bom, serviço que segue. Resolvido por aqui. Obrigado também ao zcarloslopes pela atenção. Até a próxima!!!

    ALAN


      Data/hora atual: 22/9/2021, 06:16