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]Campos de Coluna para Linha

    avatar
    alantb
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Campos de Coluna para Linha Empty [Resolvido]Campos de Coluna para Linha

    Mensagem  alantb 7/10/2022, 17:07

    Olá, tenho uma tabela com a seguinte estrutura:
    tbPonto
    NroLinha DataDia Horario Matricula
    21878 01/08/2022 07:33:00 55298
    21879 01/08/2022 07:45:00 54771
    21880 01/08/2022 07:45:00 32751
    21881 01/08/2022 07:52:00 56707
    21884 01/08/2022 08:06:00 54488
    21885 01/08/2022 08:07:00 75167
    21886 01/08/2022 08:08:00 76031
    21887 01/08/2022 08:14:00 63444
    21889 01/08/2022 08:54:00 49581
    21890 01/08/2022 11:46:00 32751
    21891 01/08/2022 11:53:00 75167
    21892 01/08/2022 11:58:00 54771
    21894 01/08/2022 11:59:00 56707
    21896 01/08/2022 12:00:00 15768
    21897 01/08/2022 12:01:00 63444
    21898 01/08/2022 12:04:00 55298
    21899 01/08/2022 12:14:00 76031
    21900 01/08/2022 12:22:00 54488
    21902 01/08/2022 12:22:00 49581
    21904 01/08/2022 13:15:00 54771
    21905 01/08/2022 13:23:00 75167
    21907 01/08/2022 13:26:00 63444
    21908 01/08/2022 13:27:00 55298
    21909 01/08/2022 13:31:00 56707
    21910 01/08/2022 13:34:00 32751
    21912 01/08/2022 13:35:00 49581
    21913 01/08/2022 13:35:00 54488
    21914 01/08/2022 13:38:00 76031
    21915 01/08/2022 17:22:00 32751
    21917 01/08/2022 17:29:00 75167
    21918 01/08/2022 17:30:00 56707
    21920 01/08/2022 17:31:00 76031
    21921 01/08/2022 17:31:00 55298
    21922 01/08/2022 17:32:00 63444

    Precisava listar os dados desta forma:
    DataDia Matricula E1 S1 E2 S2 E3 S3....
    01/08/2022 32751 07:45 11:46 13:34 17:22
    01/08/2022 56707 07:52 11:59 13:31 17:30 19:00 20:00
    02/08/022 76031 07:58 18:00

    Já tentei referência cruzada, mas não fica como deveria. Pesquisei aqui forum, mas nada parecido com que preciso.Pelo que entendi deve ser algo do tipo que seleciona pela data e pela matricula e vai adicionando nos campos e1, s1,e2,s2,e3,...Conforme o que carregar a tabela vindo da importação do txt. Uns tem quatro horários, outros dois, outros seis, etc.
    Valeu ai..

    Alan


    crysostomo
    crysostomo
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 75%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2318
    Registrado : 23/01/2018

    [Resolvido]Campos de Coluna para Linha Empty Re: [Resolvido]Campos de Coluna para Linha

    Mensagem  crysostomo 7/10/2022, 20:20

    mandei http errado


    Última edição por crysostomo em 11/10/2022, 12:53, editado 1 vez(es)


    .................................................................................
    Obs.: Coloque somente as partes defeituosas para que possamos encontrar e entender o problema mais rápido para lhe ajudar. Disponho.
    Uma mão ajuda a outra.
    Feliz aquele que transfere o que sabe e aprende o que ensina.
    avatar
    alantb
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Campos de Coluna para Linha Empty Re: [Resolvido]Campos de Coluna para Linha

    Mensagem  alantb 10/10/2022, 20:20

    Olá pessoal, achei esse código que faz 99% do que preciso, esse:

    Private Sub ConcatenaConjLinhas()
    'Rotina utilizada para concatenar linhas de registros
    Dim sel As String
    Dim rs As DAO.Recordset
    Dim Sel2 As String
    Dim rs2 As DAO.Recordset
    On Error GoTo Fim

    'Desabilito os avisos do access
    DoCmd.SetWarnings True

    'Conto os conjuntos
    intContador = Nz(DCount("Conjunto", "Cns_ConjuntoAgrupado"), 0)

    'Verifico se exitem conjuntos para agrupar
    If intContador = 0 Then
    MsgBox "Atenção; Não Há Conjutos Para Agrupar!", , "Atenção!"
    Exit Sub
    End If

    'Limpo a tabela resultado
    CurrentDb.Execute ("Delete * from tblResultado")


    'Concateno as linhas
    '#######################################################################################################
    Dim strLinhasConcatenadas As String
    Dim strLinhasConcatenadasFinal As String

    'Carrego os registros com os conjuntos agrupados
    Sel2 = "SELECT * from Cns_ConjuntoAgrupado"
    Set rst2 = CurrentDb.OpenRecordset(Sel2)

    Do While Not rst2.EOF
    '==========================================================================================
    strLinhasConcatenadas = ""
    strLinhasConcatenadasFinal = ""

    'Percorro a lista de linhas do conjunto filtrado
    Sel1 = "SELECT * from Cns_ConjuntosELinhas where Conjunto = " & rst2![Conjunto] & ""
    Set rst1 = CurrentDb.OpenRecordset(Sel1)

    Do While Not rst1.EOF
    strLinhasConcatenadas = strLinhasConcatenadas & " - " & rst1![LINHA]
    Debug.Print strLinhasConcatenadas
    'Vou para a próxima linha
    rst1.MoveNext
    Loop

    'Retiro o tracinho que fica na frente da string
    n = Len(strLinhasConcatenadas) - 3
    strLinhasConcatenadasFinal = Right(strLinhasConcatenadas, n)

    Debug.Print strLinhasConcatenadasFinal

    'Adiciono na tabela resultado
    CurrentDb.Execute "INSERT INTO tblResultado(Conjunto, Concatenado)VALUES('" & rst2![Conjunto] _
    & "', '" & strLinhasConcatenadasFinal & "')"

    rst1.Close

    'Vou para o proximo conjunto
    '==========================================================================================
    rst2.MoveNext
    Loop

    'Finalizo o loop
    rst2.Close

    'Habilito os avisos do Access
    DoCmd.SetWarnings True

    MsgBox "Concluído, Registros Concatenado Com Sucesso!", , "Concluído!"

    Exit Sub

    Fim:
    SysCmd 3
    MsgBox Err.Number & " - " & Err.Description
    Exit Sub
    End Sub

    Pra ficar como preciso teria de alterar o laço do while para invés de gravar no mesmo campo, gravar em um novo campo a cada loop: E1,S1,E2,S2,...Alguma idéia??

    Alan

    crysostomo
    crysostomo
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 75%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2318
    Registrado : 23/01/2018

    [Resolvido]Campos de Coluna para Linha Empty Re: [Resolvido]Campos de Coluna para Linha

    Mensagem  crysostomo 10/10/2022, 20:45

    Fala colega, não esqueça de fechar o tópico.


    .................................................................................
    Obs.: Coloque somente as partes defeituosas para que possamos encontrar e entender o problema mais rápido para lhe ajudar. Disponho.
    Uma mão ajuda a outra.
    Feliz aquele que transfere o que sabe e aprende o que ensina.
    avatar
    alantb
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Campos de Coluna para Linha Empty Re: [Resolvido]Campos de Coluna para Linha

    Mensagem  alantb 10/10/2022, 21:27

    Só depois de conseguir resolver crysostomo, tenho que descobrir como resolver o laço, conforme mensagem anterior...

    Alan
    crysostomo
    crysostomo
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 75%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2318
    Registrado : 23/01/2018

    [Resolvido]Campos de Coluna para Linha Empty Re: [Resolvido]Campos de Coluna para Linha

    Mensagem  crysostomo 11/10/2022, 12:50

    Boa tarde.
    Pensei que já tivesse resolvido, por trazer outro codigo, desculpa camarada,rs Basketball


    .................................................................................
    Obs.: Coloque somente as partes defeituosas para que possamos encontrar e entender o problema mais rápido para lhe ajudar. Disponho.
    Uma mão ajuda a outra.
    Feliz aquele que transfere o que sabe e aprende o que ensina.
    avatar
    alantb
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Campos de Coluna para Linha Empty Re: [Resolvido]Campos de Coluna para Linha

    Mensagem  alantb 11/10/2022, 16:43

    O código que postei anteriormente não está dando o resultado que espero. Teria como filtrar o txt ou a tabela já importada do txt por Matricula e Data e a cada horário encontrado adiciona em uma coluna, tipo:

    Data: 01/08/2022
    Matricula: 32751

    Retorna em outra tabela ou listbox:

    Matricula Data Horario1 Horário2 Horário3 Horário4 Horário5 Horário5 ......até 8
    32751 01/08/2022 07:45 11:58 13:31 17:36 18:30 19:30
    32751 02/08/2022 07:50 11:59 13:30 17:35
    32751 03/08/2022
    32751 01/08/2022 07:45 11:58

    Tem como???

    Alan
    crysostomo
    crysostomo
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 75%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2318
    Registrado : 23/01/2018

    [Resolvido]Campos de Coluna para Linha Empty Re: [Resolvido]Campos de Coluna para Linha

    Mensagem  crysostomo 11/10/2022, 22:56

    Boa noite, modifiquei e não deu muito certo.
    vê nesse examplo
    https://www.maximoaccess.com/t9935-resolvidoconverter-linhas-em-colunas


    .................................................................................
    Obs.: Coloque somente as partes defeituosas para que possamos encontrar e entender o problema mais rápido para lhe ajudar. Disponho.
    Uma mão ajuda a outra.
    Feliz aquele que transfere o que sabe e aprende o que ensina.
    avatar
    alantb
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Campos de Coluna para Linha Empty Re: [Resolvido]Campos de Coluna para Linha

    Mensagem  alantb 27/10/2022, 10:53

    Olá pessoal, fiz umas modificações que chegaram perto do que eu espero. Entretanto o laço não está gravando o próximo registro. Puxou vários horários e colocou na horizontal como eu quero, só que não está separando por data. Segue parte do bd, se os colegas puderem dar uma olhada. No form frmTeste digita uma matricula e grava na tabela....
    Alan
    Anexos
    [Resolvido]Campos de Coluna para Linha AttachmentImportaPonto.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (488 Kb) Baixado 2 vez(es)
    avatar
    alantb
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Campos de Coluna para Linha Empty Re: [Resolvido]Campos de Coluna para Linha

    Mensagem  alantb 8/11/2022, 13:59

    Olá, consegui uma solução paliativa, não era bem do jeito que eu queria mas dá para visualizar os dados conforme precisava. Esse código tirei de um vídeo de um canal de programação Access(título: Access - Como Concatenar Registros de Forma Agrupada(by Opção Access Desenvolvimento de Sistemas). Segue:

    - Primeiro é criada uma consulta agrupando somente todas as datas: "Consulta_ConjuntoAgrupado";
    - Depois outra consulta que une a "Consulta_ConjuntoAgrupado" mais os dados: Consulta_ConjuntoEHorarios;
    - O código seleciona os horários da vertical e concatena todos de acordo com a data em um único campo(Concatenado);
    - Então finalmente grava na tabela, segue o código:

    Sub GravaTabela()
    'Rotina utilizada para concatenar linhas de registros
    Dim sel As String
    Dim rs As DAO.Recordset
    Dim Sel2 As String
    Dim rs2 As DAO.Recordset

    On Error GoTo Fim

    'Desabilito os avisos do access
    DoCmd.SetWarnings True

    'Conto os conjuntos
    intContador = Nz(DCount("ConjuntoDataDia", "Consulta_ConjuntoAgrupado"), 0)

    'Verifico se exitem conjuntos para agrupar
    If intContador = 0 Then
    MsgBox "Atenção; Não Há Conjutos Para Agrupar!", , "Atenção!"
    Exit Sub
    End If

    'Limpo a tabela resultado
    CurrentDb.Execute ("Delete * from tbRegistros2")


    'Concateno as linhas
    Dim strLinhasConcatenadas As String
    Dim strLinhasConcatenadasFinal As String

    'Carrego os registros com os conjuntos agrupados
    Sel2 = "SELECT * from Consulta_ConjuntoAgrupado"
    Set rst2 = CurrentDb.OpenRecordset(Sel2)

    Do While Not rst2.EOF
    '==========================================================================================
    strLinhasConcatenadas = ""
    strLinhasConcatenadasFinal = ""

    'Percorro a lista de linhas do conjunto filtrado
    Sel1 = "SELECT * from Consulta_ConjuntoEHorarios where ConjuntoDataDia = '" & rst2![ConjuntoDataDia] & "' AND [Matricula] = " & Me.txtProcurar & ""
    Set rst1 = CurrentDb.OpenRecordset(Sel1)

    Do While Not rst1.EOF

    strLinhasConcatenadas = strLinhasConcatenadas & " " & Format(rst1![Horario], "hh:mm")

    'Vou para a próxima linha
    rst1.MoveNext

    Loop


    'Adiciono na tabela resultado
    CurrentDb.Execute "INSERT INTO tbRegistros2(ConjuntoDataDia,Concatenado, Matricula)VALUES('" & rst2![ConjuntoDataDia] _
    & "','" & strLinhasConcatenadas & "'," & txtProcurar & ")"

    GeraMes

    rst1.Close

    'Vou para o proximo conjunto
    '==========================================================================================
    rst2.MoveNext

    Loop

    'Finalizo o loop
    rst2.Close

    'Habilito os avisos do Access
    DoCmd.SetWarnings True

    MsgBox "Concluído, Registros Incluídos Com Sucesso!", , "Concluído!"

    Exit Sub

    Fim:
    SysCmd 3
    MsgBox Err.Number & " - " & Err.Description
    Exit Sub

    End Sub

    É isso, sendo assim Resolvido por aqui...

    Alan

      Data/hora atual: 1/12/2022, 21:00