MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Juntar linhas

    Compartilhe

    Dery_santos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 03/10/2016

    [Resolvido]Juntar linhas

    Mensagem  Dery_santos em 5/6/2018, 17:43

    Boa tarde para todos

    Desde ja agradeço antecipadamente a ajuda, eu tenho uma tabela com os seguintes campos ID - Seq - Descricao, oque ocorre é que não sei o motivo pelo qual a pessoa que criou o banco de dados
    em vez de colocar a descricao em uma unica linha ele dividiu em mais de uma linha.
    ai por exemplo eu tenho os registros :

    ID                                                   seq                                       descricao
    2011000000000007                           1                                     TROCADOR DE CALOR AR/AGUA, TEMPERATURA DE ENTRADA DO AR 60 GRC, TEMPERATURA DE SAIDA DO AR 40 GRC
    2011000000000007                           2                                      TEMPERATURA DE ENTRADA DA AGUA 28 GRC, TEMPERATURA DE SAIDA DA AGUA 33,4 GRC, VAZAO DE AR 10,25 M3/S,

    Oque ocorre é que esse numero de ID com a seq 2 seria a continuação da descrição  da seq 1, minha pergunta é teria como eu fazer uma consulta e quando tiver um numero de ID com mais de uma seq ele juntar a descrição em uma unica linha exemplo:


    ID                                                   seq                                       descricao
    2011000000000007                           1                                     TROCADOR DE CALOR AR/AGUA, TEMPERATURA DE ENTRADA DO AR 60 GRC, TEMPERATURA DE SAIDA DO AR 40 GRC TEMPERATURA DE ENTRADA DA AGUA 28 GRC, TEMPERATURA DE SAIDA DA AGUA 33,4 GRC, VAZAO DE AR 10,25 M3/S.

    Estou anexando parte da tabela com os registros
    Anexos
    Novo(a) Microsoft Access Banco de Dados.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (285 Kb) Baixado 5 vez(es)

    Dery_santos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 03/10/2016

    Re: [Resolvido]Juntar linhas

    Mensagem  Dery_santos em 5/6/2018, 20:38

    eu tentei fazer assim

    Public Function fncAgrupadescricao(strID, strseq As String) As String
    Dim rs As DAO.Recordset
    Dim strSql$
    Dim strLista$

    strSql = "SELECT * FROM descricao WHERE [ID] ='" & strID & "' AND Seq ='" & strseq & "'"
    Set rs = CurrentDb.OpenRecordset(strSql)
    Do While Not rs.EOF
    strLista = strLista & " | " & rs!descricao
    rs.MoveNext
    Loop
    fncAgrupadescricao = strLista
    rs.Close
    Set rs = Nothing
    End Function

    e depois chamar a função fncAgrupadescricao em uma consulta , só que na hora que executo a consulta ele da erro de compatibilidade , acho que é o id e a seq.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7030
    Registrado : 05/11/2009

    Re: [Resolvido]Juntar linhas

    Mensagem  Alexandre Neves em 5/6/2018, 21:07

    Boa noite,
    O tamanho excede o permitido
    crie cópia da tabela e chame-a Descrição2, altere o campo Descrição para Texto Longo
    cole num módulo o código seguinte e execute-o
    Código:
    Sub JuntaLinhas()
        Dim Rst As DAO.Recordset, Rst2 As DAO.Recordset, strID As String, dblSeq As Double, strDescricao As String
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Descrição ORDER BY ID, Seq")
        CurrentDb.Execute "DELETE * FROM Descrição2"
        Set Rst2 = CurrentDb.OpenRecordset("SELECT * FROM Descrição2")
        Do While Not Rst.EOF
            If Rst("ID") = strID Then
                strDescricao = strDescricao & Rst("Descricao")
            Else
                If Rst.AbsolutePosition > 0 Then
                    Rst2.AddNew
                    Rst2("ID") = strID
                    Rst2("Seq") = dblSeq
                    Rst2("Descricao") = strDescricao
                    Rst2.Update
                End If
                strID = Rst("ID")
                dblSeq = Rst("Seq")
                strDescricao = Rst("Descricao")
            End If
            Rst.MoveNext
        Loop
        Set Rst = Nothing
        Set Rst2 = Nothing
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Dery_santos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 03/10/2016

    Re: [Resolvido]Juntar linhas

    Mensagem  Dery_santos em 6/6/2018, 11:39

    Alexandre Neves Bom dia , perfeito o código deu certo , mas deixa eu perguntar essa como faço pra deixar esse código executando automaticamente , pois assim essa tabela descrição vem do sql, e eu vou usar ela para alimentar outra tabela então precisaria que essa função fosse executada sempre antes de eu importar os dados para outra tabela, ou colocar para que seja executado em quando se abre uma consulta.


    Desde ja agradeço
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7030
    Registrado : 05/11/2009

    Re: [Resolvido]Juntar linhas

    Mensagem  Alexandre Neves em 7/6/2018, 09:36

    Bom dia,
    Para executar automaticamente, chame-a
    Call NomeDoProcedimento


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Dery_santos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 03/10/2016

    Re: [Resolvido]Juntar linhas

    Mensagem  Dery_santos em 7/6/2018, 11:59

    Muito obrigado Alexandre Neves,

      Data/hora atual: 16/11/2018, 04:01