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]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado

    avatar
    Ricardo84
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 18/01/2014

    [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado Empty [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado

    Mensagem  Ricardo84 29/11/2018, 10:21

    Bom dia,

    Tenho um código retirado de um forum que concatena numa linha de uma consulta todos os registos registados num determinado campo de uma tabela/consulta. Os valores são separados por ";" ou outro símbolo que queiramos, mas põe também a seguir ao último.
    Por exemplo:

    João; Paulo; Rui; António;

    O que pretendia era que o último ";" não aparecesse...

    Fica aqui o código

    Código:
    '************ Início do Código **********
    ' Este código foi escrito originalmente por Dev Hashish
    ' Não pode ser alterado ou distribuído
    ' exceto como parte de um aplicativo.
    ' Use-o à vontade em qualquer aplicativo
    ' desde que esta nota de Copyright não seja alterada.
    '
    ' Código cortesia de
    ' Dev Hashish (http://www.mvps.org/access/)
    '
    ' Tradução e adaptação
    ' OsmarJr (jrosmar@yahoo.com.br)
    '=========================================

    Function fConcatFilho(strTabelaFilho As String, _
                        strNomeID As String, _
                        strCampoConcat As String, _
                        strTipoID As String, _
                        varValorID As Variant) _
                        As String

    ' Devolve o conteúdo de um campo da tabela Muitos de um
    ' relacionamento 1:M, concatenado e separados por ponto-e-vírgula
    '
    ' Exemplo de uso:
    '   ?fConcatFilho("Detalhes do Pedido", "NúmeroDoPedido", "Quantidade", _
    '                "Long", 10255)
    ' Onde
    '
    ' Detalhes do Pedido = Tabela Muitos
    '       NúmeroDoPedido = Chave primária da tabela Um
    '       Quantidade = Nome do campo a ser concatenado
    '       Long = Tipo de dados da chave primária
    '       10255 = Número do pedido que contém os detalhes
    '
    Dim db As Database
    Dim Rs As Recordset
    Dim varConcat As Variant
    Dim strCriteria As String
    Dim strSQL As String

    On Error GoTo Err_fConcatFilho
        
        varConcat = Null
        Set db = CurrentDb
        strSQL = "SELECT [" & strCampoConcat & "] FROM [" & strTabelaFilho & "]"
        strSQL = strSQL & " WHERE "
        
        Select Case strTipoID
            Case "String":
                strSQL = strSQL & "[" & strNomeID & "] = '" & varValorID & "'"
            Case "Long", "Integer", "Double":    'Autonumeração é tipo Inteiro Longo
                strSQL = strSQL & "[" & strNomeID & "] = " & varValorID
            Case Else
                GoTo Err_fConcatFilho
        End Select
        
        Set Rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
    ' Precisamos ter certeza que os registros Sub existem
        With Rs
            If .RecordCount <> 0 Then
            
                ' Começa a concatenar os registros
                Do While Not Rs.EOF
                    If Rs.RecordCount > 0 Then
                    varConcat = varConcat & Rs(strCampoConcat) & "; "
                    .MoveNext
                    Else
                     varConcat = varConcat & Rs(strCampoConcat) & " "
                    .MoveNext
                End If
                Loop
            End If
        End With
            
        ' Pronto… Já temos a string concatenada
        ' Agora limpamos o; no final da string
        fConcatFilho = Left(varConcat, Len(varConcat) - 1)

    Exit_fConcatFilho:
        Set Rs = Nothing
        Set db = Nothing
        Exit Function

    Err_fConcatFilho:
        Resume Exit_fConcatFilho
    End Function

    '************ Final do Código **********
    JPaulo
    JPaulo
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado Empty Re: [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado

    Mensagem  JPaulo 29/11/2018, 11:39

    Teste por favor;

    Código:
    '************ Início do Código **********
    ' Este código foi escrito originalmente por Dev Hashish
    ' Não pode ser alterado ou distribuído
    ' exceto como parte de um aplicativo.
    ' Use-o à vontade em qualquer aplicativo
    ' desde que esta nota de Copyright não seja alterada.
    '
    ' Código cortesia de
    ' Dev Hashish (http://www.mvps.org/access/)
    '
    ' Tradução e adaptação
    ' OsmarJr (jrosmar@yahoo.com.br)
    '=========================================

    Function fConcatFilho(strTabelaFilho As String, _
                        strNomeID As String, _
                        strCampoConcat As String, _
                        strTipoID As String, _
                        varValorID As Variant) _
                        As String

    ' Devolve o conteúdo de um campo da tabela Muitos de um
    ' relacionamento 1:M, concatenado e separados por ponto-e-vírgula
    '
    ' Exemplo de uso:
    '  ?fConcatFilho("Detalhes do Pedido", "NúmeroDoPedido", "Quantidade", _
    '                "Long", 10255)
    ' Onde
    '
    ' Detalhes do Pedido = Tabela Muitos
    '      NúmeroDoPedido = Chave primária da tabela Um
    '      Quantidade = Nome do campo a ser concatenado
    '      Long = Tipo de dados da chave primária
    '      10255 = Número do pedido que contém os detalhes
    '
    Dim db As Database
    Dim Rs As Recordset
    Dim varConcat As Variant
    Dim strCriteria As String
    Dim strSQL As String

    On Error GoTo Err_fConcatFilho
       
        varConcat = Null
        Set db = CurrentDb
        strSQL = "SELECT [" & strCampoConcat & "] FROM [" & strTabelaFilho & "]"
        strSQL = strSQL & " WHERE "
       
        Select Case strTipoID
            Case "String":
                strSQL = strSQL & "[" & strNomeID & "] = '" & varValorID & "'"
            Case "Long", "Integer", "Double":    'Autonumeração é tipo Inteiro Longo
                strSQL = strSQL & "[" & strNomeID & "] = " & varValorID
            Case Else
                GoTo Err_fConcatFilho
        End Select
       
        Set Rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
    ' Precisamos ter certeza que os registros Sub existem
        With Rs
            If .RecordCount <> 0 Then
           
                ' Começa a concatenar os registros
                Do While Not Rs.EOF
                    If Rs.RecordCount > 0 Then
                    varConcat = varConcat & Rs(strCampoConcat) & "; "
                    .MoveNext
                    Else
                    varConcat = varConcat & Rs(strCampoConcat) & " "
                    .MoveNext
                End If
                Loop
            End If
        End With
           
        ' Pronto… Já temos a string concatenada
        ' Agora limpamos o; no final da string
        fConcatFilho = Left(varConcat, Len(Trim(varConcat)) - 1)

    Exit_fConcatFilho:
        Set Rs = Nothing
        Set db = Nothing
        Exit Function

    Err_fConcatFilho:
        Resume Exit_fConcatFilho
    End Function

    '************ Final do Código **********


    .................................................................................
    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]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado Folder_announce_new Instruções SQL como utilizar...
    avatar
    Ricardo84
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 18/01/2014

    [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado Empty Re: [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado

    Mensagem  Ricardo84 30/11/2018, 00:11

    Boa noite,

    JPaulo, ficou resolvido... acho que não me iria lembrar de algo assim... e uso as funções Direita e Esquerda muitas vezes no excel...
    Obrigado
    JPaulo
    JPaulo
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado Empty Re: [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado

    Mensagem  JPaulo 7/12/2018, 13:41

    Obrigado pelo retorno o forum agradece.


    .................................................................................
    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]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Retirar símbolo (; ou , ou * ou qq outro) do último registo de um campo concatenado Folder_announce_new Instruções SQL como utilizar...

      Data/hora atual: 1/8/2021, 12:45